作為免責宣告,我只想說我是 Docker 的初學者,因此這個問題可能聽起來有點“愚蠢”。
我正在探索并行化選項以加速某些計算。我正在使用 Python,所以我按照官方指南創建了我的第一個影像,然后將其作為容器運行。
目前,我使用一個虛擬程式生成一個非常大的 np 隨機矩陣(比如說 4000 x 4000),然后找出每行中有多少元素落入預定義的范圍 [min, max]。
然后我啟動了第二個具有相同影像的容器,顯然具有不同的埠和名稱。我在計算中沒有得到任何我期望的加速,因為:
- a)我還沒有為這兩個容器開發任何機制以某種方式“相互交談”并共享中間結果
- b)我不確定程式本身是否適合以這種方式加速。
所以我與上面a,b對應的問題是:
- 并行性是 docker 部署支持的“功能”嗎?在什么意義上?它只是負載共享嗎?如果我實作了一個負載均衡器,docker 怎么知道如何將中間結果從一個容器傳輸到另一個容器?
- 如果前面的問題不是“正確的”,那么我是否需要撰寫程式的“并行”版本來分配給每個容器?這不等同于撰寫我的程式的 MPI 版本并將它們分配給我系統中的不同內核嗎?那么 docker 架構有什么好處呢?
提前致謝
uj5u.com熱心網友回復:
Docker 只是部署應用程式的一種方式——它本身并不允許您僅通過使用 Docker 來“支持”并行性。您的應用程式本身需要支持并行性。Docker(和 Kubernetes 等)可以幫助您輕松地并行擴展,但您的應用程式需要能夠支持這種擴展。
因此,如果您現在可以并行運行應用程式的多個實體(但是您可能會這樣做)并且它不會提供任何性能改進,那么 Docker 將無法幫助您。如果現在運行多個實體確實可以提高性能,那么 Docker 將有助于橫向擴展。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/410984.html
標籤:
