0
在我的MPI程序中,我正在播放std::string
,如下所示。代碼起作用,但我找不到比這更優雅的解決方案(在其他SO問題中都沒有)。有沒有更好的方法(不使用Boost.MPI)?特別是const_cast
讓我感到緊張。在MPI中廣播std :: string的最優雅方式是什麼?
std::string line
// Variable line receives a value on mpiid == 0.
int line_size = line.size();
MPI_Bcast(&line_size, 1, MPI_INT, 0, MPI_COMM_WORLD);
if (mpiid != 0)
line.resize(line_size);
MPI_Bcast(const_cast<char*>(line.data()), line_size, MPI_CHAR, 0, MPI_COMM_WORLD);
這不是性能關鍵代碼,但是在初始化中,其中具有設置的輸入文件在一個進程上被讀取並被廣播給其他進程。我寧願不要固定字符串大小。 – Chiel
在這種情況下,原始代碼對我來說看起來很好,從'MPI'的角度來看(我真的不是'C++'傢伙) –