簡體   English   中英

估計Scala中可能的#個演員

[英]Estimating possible # of actors in Scala

我如何估計Scala程序可以處理的actor的數量?

對於上下文,我正在考慮什么本質上是一個神經網絡,它將以高速率創建和遺忘細胞。 我正在考慮讓每個細胞成為一個演員,但會有數百萬個。 我正在試圖決定這種設計是否值得追求,但無法估計演員人數的限制。 我的意圖是它應該完全在一個系統上運行,因此分布式限制不適用。

就此而言,我還沒有確定Scala,如果有更好的選擇,但是單元確實有狀態,例如,它們與其他單元的連接,連接的權重等等。雖然這可以做到因為“每個單元格都是最終的。更改意味着用一個帶有相同id#的新單元替換當前單元格。”

PS:我不知道斯卡拉。 我正在考慮接受它來做這個項目。 我也在考慮許多其他選擇,包括Java,Object Pascal和Ada。 但是演員似乎比我所追求的更好地映射線程池(並且Java無法處理足夠的線程以使線程/單元設計可行。

PS:在任何時候,大多數演員都會處於靜止狀態,但是需要在整個系列中循環。 如果語言中沒有內置語言,則可以通過每個單元格中的第一個/下一個鏈接進行管理。 (需要兩個鏈接,以允許提取中間的單元格以便釋放。)

通過神經網絡模擬,真正的問題是計算工作將花費多少時間進行通信,以及在單元內計算某些內容需要花費多少? 如果大多數努力都是在溝通中,那么演員可能是正確性的一個很好的選擇,但對於效率來說根本不是一個好的選擇(即使對於表現相當不錯的Akka來說也是如此; 盡管AsyncFP可能會做到這一點)。 數以百萬計的神經元聽起來很慢 - 效率可能是一個重要問題。 如果神經元有一些非常重要的計算來做自己,那么通信開銷就沒什么大不了的了。

如果通信是瓶頸,並且你有很多微小的消息,那么你應該設計一個自定義數據結構來保存網絡,還有自定義線程處理,它將利用你擁有的所有處理器,並最大限度地減少鎖定你必須這樣做。 舉例來說,如果你有空間,每個神經元可以保持輸入值,與之關聯的這些神經元的陣列,它會計算其輸出只需直接讀取數組沒有鎖定和輸入的神經元會只是更新值時他們去的時候沒有鎖定 然后,您可以將所有神經元轉儲到一個大型池中,然后讓一個主機將它們分配成塊,我不知道,一次可能是一萬個,每個都是自己的線程。 Scala可以很好地處理這類事情,但是希望自己做很多低級別的工作,或者等待很長時間才能完成模擬。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM