私は2つの変数を持っています:
boost::array my_boost_array_variable_1<float, 3>;
boost::array my_boost_array_variable_2<float, 3>;
ここで、次のシグネチャを使用して C 関数を呼び出したいと思います。
int MPI_Allreduce ( void *sendbuf, void *recvbuf, ...);
my_boost_array_variable_1
my and の特定の要素のアドレスをmy_boost_array_variable_2
MPI_Allreduce の 1 番目と 2 番目のパラメーターとして渡したい:
MPI_Allreduce(&my_boost_array_variable_1[2],
&my_boost_array_variable_2[2], ...
または私はむしろ行う必要があります:
MPI_Allreduce(my_boost_array_variable_1.c_array() + 2,
my_boost_array_variable_2.c_array() + 2, ...
更新: C 関数は、void *sendbuf で始まるデータの連続チャンクを想定しています。この点に関して、これら 2 つの呼び出しが正しいかどうかは、ここでの質問です。&my_boost_array_variable_1[2] は my_boost_array_variable_1.c_array() + 2 と同じ場所を指していますか? これらの呼び出しは同等ですか?