天天看點

CPU+GPU叢集計算中的一種動态負載均衡設計方法

         在CPU+GPU協同計算中,CPU和GPU的計算能力不同,靜态地給CPU和GPU劃分任務會導緻CPU和GPU計算不同步,導緻嚴重的負載不均衡,為了實作CPU和GPU的負載均衡,需要對CPU和GPU不同的劃分方法。把每個節點上的所有CPU看成一個裝置,每塊GPU卡看成一個裝置,對叢集節點上的所有CPU裝置和GPU裝置分别編号,每個節點上有M塊GPU卡,N個節點上共有N個CPU裝置,編号為1,2,…,N;N個節點上共有M*N個GPU裝置,編号為1,2,…,M*N。

        裝置編号之後就可以對裝置進行分組,根據算法的要求,有些任務不能細分,一個CPU裝置或GPU裝置上可用的記憶體空間可能不能滿足計算的記憶體要求,需要多裝置資料劃分、共同計算,這時需要根據CPU記憶體或GPU記憶體進行分組:1)根據CPU記憶體大小和計算對記憶體的要求可以計算得到一組内的CPU裝置數目為GC個, GC=(Mcom+MemC-1)/MemC,其中一個節點的記憶體大小為MemC,每個計算任務需要的記憶體大小為Mcom。所有的CPU裝置分為N/GC個組,每個組計算同一個任務,組内的CPU裝置再進行資料劃分,資料劃分采用靜态的劃分,因為組内的CPU裝置計算能力一緻;2)根據GPU記憶體大小和計算對記憶體的要求可以計算得到一組内的GPU裝置數目為GG個, GG=(Mcom+MemG-1)/Mem,其中,一個GPU裝置的記憶體大小為MemG,每個計算任務需要的記憶體大小為Mcom。所有的GPU裝置分為M*N/GG個組,每個組計算同一個任務,組内的GPU裝置再進行資料劃分,資料劃分采用靜态劃分的方法。

         CPU和GPU裝置分組之後,就可以把任務動态分劃分給每個CPU組或GPU組,可以采用MPI通信進行劃分,由主程序進行動态的發送任務編号給各個CPU組或GPU組内的組長,組長再把任務編号廣播給組内的組員,然後組内的裝置同時計算,計算完畢之後即可向主程序請求下一個任務,直到所有任務計算完畢為止。

CPU+GPU叢集計算中的一種動态負載均衡設計方法

繼續閱讀