簡體   English   中英

C ++並行化:快速“重新初始化”數組

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM