我有一个存储结构矢量的应用程序.这些结构包含有关内存和giga-flop/s等系统上每个GPU的信息.每个系统上有不同数量的GPU.
我有一个程序可以同时在多台机器上运行,我需要收集这些数据.我对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;
};
Run Code Online (Sandbox Code Playgroud)
群集中的每台计算机都会填充其实例MachineData.我想收集这些实例中的每一个,但我不确定如何进行收集nviVec,amdVec因为它们的长度因机器而异.