我在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”,并且有空间来创建另一个“归零”数组来复制,但这是最好的方法吗?
答案 0 :(得分:0)
对于数组初始化,您可以使用memset
,它适用于连续内存块。你的代码应该是这样的:
memset(&my_index_counts[x][y][z], 0, max_count*sizeof(int));
其中x,y,z
是除最后一个维度之外的所有索引