4
我有一個存儲結構向量的應用程序。這些結構保存系統中每個GPU的信息,例如內存和千兆位/秒。每個系統上有不同數量的GPU。MPI接收/收集動態向量長度
我有一個程序一次在多臺機器上運行,我需要收集這些數據。我對MPI很新,但大部分都能使用MPI_Gather()
,但我想知道如何收集/接收這些動態大小的載體。
class MachineData
{
unsigned long hostMemory;
long cpuCores;
int cudaDevices;
public:
std::vector<NviInfo> nviVec;
std::vector<AmdInfo> amdVec;
...
};
struct AmdInfo
{
int platformID;
int deviceID;
cl_device_id device;
long gpuMem;
float sgflops;
double dgflops;
};
羣集中的每臺計算機都會填充其實例MachineData
。我想收集這些實例中的每一個,但我不確定如何處理收集nviVec
和amdVec
,因爲它們的長度在每臺計算機上都不相同。
請發佈代碼。也檢查出'MPI_GATHERV()' – arunmoezhi
正如我所說,你可以嘗試使用GATHERV。這樣每臺機器都可以發送自己長度的矢量。使用'recvcounts'來完成這個。 – arunmoezhi
謝謝MPI_Gatherv()運行良好! – jdimarco218