我正在做一個OpenMP中的並行for循環。C++並行化:快速「重新初始化」數組的方法
這是我的問題:我有一個4維數組,其中第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中的值創建並行循環。
因此,這裏是我的問題:
我需要一個最佳的,超快速的方式,當我回到我的身邊到外循環的頂部「重新初始化」的指標數。理想情況下,我不會遍歷索引計數數組並重置值。但是,在C++中,我無法重新初始化數組。我發現「memcpy」,並有空間創建另一個「歸零」數組來複制,但這是做到這一點的最佳方式?
的快速和骯髒的方法就是做'memset的(my_index_counts,0,的sizeof(my_index_counts)); '。它並不漂亮,它可能不是平臺獨立的(在某些平臺上執行浮點數的memset肯定存在問題,不確定int的tbh),但它很快且被廣泛使用(所以其他查看代碼的人應該知道你在做什麼)。 – RyanP