OpenMPで並列forループを実行しています。C++並列化:配列を「再初期化」する速い方法
これは私の問題です:私は4次元配列を持っています.4次元配列の深さは最大値です - 私は4次元の要素のすべてを使用しないかもしれません。この配列では、別の配列のインデックスを格納しています(並列ループ内のインデックスを計算します)。
int my_index_counts[dim_x][dim_y][dim_z] = {(int) 0}
:
したがって、同時に
int my_index_array[dim_x][dim_y][dim_z][max_count];
、並列ループに、私は別の整数アレイの各4次元ベクトルに格納された要素(すなわち、my_index_array[0][0][0][:]
)の数を記録してい
こうすると、後でmy_index_countsの値を使用して並列forループを作成できます。私は外側のループの先頭に周りに戻ってきたときに、インデックス数を「再初期化」するために最適な、超高速な方法を必要とする
:
は、だからここに私の問題です。理想的には、インデックスカウント配列をループして値をリセットしません。しかし、C++では、配列を再初期化できません。私は "memcpy"を見つけました。そしてコピー元の別の "ゼロ"配列を作成するスペースがありますが、これを行う最適な方法はありますか?
ちょうど 'のmemset(my_index_counts、0、はsizeof(my_index_counts))を行うことです迅速かつ汚い方法。 '。それはかなりではないかもしれませんが、それはプラットフォームに依存しないかもしれません(特定のプラットフォーム上で浮動小数点数に対してmemsetを行うことは間違いありませんが、ints tbhについてはわかりません)。何をしているの)。 – RyanP