[英]C++ Parallelization: Fast way to “reinitialize” array
我在OpenMP中進行並行for循環。
這是我的問題:我有一個4D數組,其中第4維的深度是最大值 - 我可能不會使用第4維的所有元素。 在這個數組中,我存儲另一個數組的索引(我在並行循環中計算索引)。
所以,
int my_index_array[dim_x][dim_y][dim_z][max_count];
同時,在並行循環中,我在另一個整數數組中記錄存儲在每個第四維向量中的元素數(即my_index_array[0][0][0][:]
):
int my_index_counts[dim_x][dim_y][dim_z] = {(int) 0}
這樣我以后可以使用my_index_counts中的值創建並行for循環。
所以這是我的問題:
當我回到外部循環的頂部時,我需要一種最佳的,超快速的方法來“重新初始化”索引計數。 理想情況下,我不會遍歷索引計數數組並重置值。 但是,在C ++中,我無法重新初始化數組。 我找到了“memcpy”,並且有空間來創建另一個“歸零”數組來復制,但這是最好的方法嗎?
對於數組初始化,您可以使用memset
,它適用於連續內存塊。 你的代碼應該是這樣的:
memset(&my_index_counts[x][y][z], 0, max_count*sizeof(int));
其中x,y,z
是除最后一個維度之外的所有索引
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.