構造体のベクトルを格納するアプリケーションがあります。これらの構造体は、メモリやギガフロップスなどのシステム上の各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;
};
クラスタ内の各マシンは、のインスタンスにデータを入力しますMachineData
。これらのインスタンスをそれぞれ収集したいのですが、収集の方法がわかりませんnviVec
。またamdVec
、マシンごとに長さが異なるためです。