C++并行化:快速"reinitialize"阵列
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
是除最后一个维度以外的所有维度的索引
相关文章:
- OpenMP阵列性能较差
- 如何将三维尺寸不固定的三维阵列展平为一维阵列
- 当我的阵列太大时出现分段错误
- 位阵列上的快速AND运算
- 阵列必须使用大括号封闭的初始器进行初始化
- 没有从阵列<float>到阵列<int>的可行转换
- C++动态安全 2D 交错阵列
- 将平面阵列重塑为复杂的特征类型
- 如何使用英特尔 PIN 捕获阵列的所有负载?
- 为什么我能够为阵列分配比计算机实际拥有的内存更多的内存
- 库特<<恩德尔;不适用于打印 2D 阵列
- 数组类 阵列的打印输出
- 从较小的阵列到较大的阵列的元素级转换
- 仅在大型阵列上出现合并排序分段错误
- 从阵列C++中删除重复项
- 阵列的大小在C++中是否灵活?
- 反转阵列中的正序列
- 具有可变尺寸的 C++ 2D 阵列
- 二维阵列的动态分配
- C++并行化:快速"reinitialize"阵列