2016-04-20 41 views
1

在C++中,示例了使用MPI_Scatter是:使用MPI_Scatter與C++ - 散射在不同的通信器

MPI::COMM_WORLD.Scatter(sendbuf, 100, MPI::INT, recvarr, 100,MPI::INT, root); 

此散射的sendbuff內容到100個分離的過程,使recvarr上的每個進程,但ONLY在MPI世界傳播者

與C中的MPI_Scatter不同,C++版本沒有針對通信器的輸入。我如何修改這個例子來適用於任何的溝通者,而不僅僅是MPI_COMM_WORLD?

例如,說我的傳播者名爲comm。我如何在comm通信器組內分散sendbuff而不是MPI_COMM_WORLD?

回答

5

comm.Scatter(sendbuf, 100, MPI::INT, recvarr, 100,MPI::INT, root);

對象到.的左邊是MPI通信參數。 MPI::COMM_WORLD恰好是一個預先定義的對應於C語言綁定的一個MPI通信的情況下預先定義MPI_COMM_WORLD

注意,MPI C++綁定已在MPI-3.0被刪除,因爲他們未得到充分利用,難以維持,並有這樣的笨拙的誤解。