1
是否可以使用MPI_Bcast,MPI_Scatter和MPI_Gather發送/接收C++對象和對象數組。如果是,那麼哪個MPI數據類型用於對象? 例如我有一個名爲cell的類。使用MPI發送/接收對象數組
class cell
{
private:
int abc;
double xyz;
public:
cell(){ }
...
};
在主函數中,我想做一個類的單元格的對象數組,並希望發送/接收爲對象數組。例如,
void main()
{
...
cell** cells = new cell*[someVar];
for(int i = 0; i < someVar; ++i)
{
cells[i] = new cell[someVar];
}
MPI_Bcast(cells, someVar, ???, 0, MPI_COMM_WORLD);
...
}
我們如何定義一個MPI數據類型來發送/接收一個對象數組?
您需要指定您正在使用的語言以及「對象」的含義。這可以是任何從C中的任意基本類型到包含任意數據結構的C++類。但是,一般來說,要發送一些沒有預定義的MPI數據類型(例如MPI_INT)的東西,必須通過枚舉其基本元素來自己構造適當的數據類型。 – Novelocrat
@Novelocrat如何爲C++對象構造數據類型? – shaikh
我認爲這個問題的第二個答案 - http://stackoverflow.com/questions/10419990/creating-an-mpi-datatype-for-a-structure-containing-pointers - 將是感興趣和用於您。 –