我正在尋找一個可以輕鬆嵌入到應用程序中的分佈式計算平臺。便攜式電網引擎平臺
我調查了MPI(和它的一些實現的),但是從我看到它涉及到創建每個任務的可執行文件和正在使用mpirun
啓動。我不排除它,我只是希望它被嵌入到應用程序中,而不是作爲外部可執行文件(如果可能的話)。
你,所以用戶,知道這樣的框架(最好是開放源代碼)?另外,爲了讓我想起一些使用示例會很好。
我很感興趣,如果可能的跨平臺解決方案,如在局域網站,其中解決方案是部署是異類。
任何建議,尤其是代碼示例非常感謝。
我正在尋找一個可以輕鬆嵌入到應用程序中的分佈式計算平臺。便攜式電網引擎平臺
我調查了MPI(和它的一些實現的),但是從我看到它涉及到創建每個任務的可執行文件和正在使用mpirun
啓動。我不排除它,我只是希望它被嵌入到應用程序中,而不是作爲外部可執行文件(如果可能的話)。
你,所以用戶,知道這樣的框架(最好是開放源代碼)?另外,爲了讓我想起一些使用示例會很好。
我很感興趣,如果可能的跨平臺解決方案,如在局域網站,其中解決方案是部署是異類。
任何建議,尤其是代碼示例非常感謝。
除了MPI之外,還有四個系統浮現在腦海中:AMQP,ZeroMQ,Cilk和Actor。
AMQP使用消息傳遞,使用中央消息代理來處理/分發消息系統之間進行通信。一些實現保證向接收器正確傳遞,但速度較慢(類似於TCP)。一些實現是火災和遺忘,不允許保證交付,但速度更快(類似於UDP)。注意AMQP是一個協議,而不是實現 - 流行的實現包括ActiveMQ和RabbitMQ。
ZeroMQ是有點類似於AMQP減去中央消息代理。我相信它基本上是Actors風格,它更加程序化,允許您以端到端的方式設計您的系統。它是分散的(沒有中央消息代理),基準似乎表明它比AMQP實現要快得多。
除了它是受MIT支持的旨在與C/C++一起使用的項目之外,我對Cilk沒有太多的經驗。
參與者是一個抽象,以幫助本地/分佈式併發,由Erlang和最近的項目(Java的Scala)推廣。我知道的C++兼容版本是Theron,Actor-CPP和libcppa,但我不確定哪些支持遠程參與者。
選擇此項作爲最佳答案,因爲它提供了一個非常好的起點 – INS
Clik是一種用於線程編程和可執行文件的語言,只能在共享內存機器(SMP和NUMA)上運行。它不適合OP所需要的分佈式計算。 –
我覺得Hazelcast是ecatly之類的話;可嵌入式分佈式計算。但是它在java中,而不是在C中,但是你可以從Java調用C語言。
您是否檢出了ZeroMQ,AMQP或Cilk? – adelbertc
@adelbertc你應該發佈一個答案。你肯定會得到獎勵。請! :) – INS
分佈式應用程序的不同組件有多緊密耦合(例如節點之間需要交換多少數據)?您可能會研究BOINC和/或GRID實現,但它們需要相當多的支持基礎設施(身份服務,調度程序,代理,數據庫等),並且僅適用於併發問題。 –