gpt4 book ai didi

C++ 并行化 : Fast way to "reinitialize" array

转载 作者:太空狗 更新时间:2023-10-29 23:13:24 28 4
gpt4 key购买 nike

我正在 OpenMP 中执行并行 for 循环。

这是我的问题:我有一个 4 维数组,其中第 4 维的深度是最大值——我可能不会使用第 4 维的所有元素。在这个数组中,我存储了另一个数组的索引(我在并行循环中计算索引)。

所以,

int my_index_array[dim_x][dim_y][dim_z][max_count];

同时,在并行循环中,我正在记录存储在每个第 4 维 vector (即 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 是除最后一个维度之外的所有维度的索引

关于C++ 并行化 : Fast way to "reinitialize" array,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39494433/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com