gpt4 book ai didi

c++ - 使用 openMP 在 C++ 中进行内存分配和分配

转载 作者:太空宇宙 更新时间:2023-11-04 02:52:59 29 4
gpt4 key购买 nike

我正在使用 openMP 优化 for 循环。在每个线程中,将临时使用一个大数组(当该线程结束时不需要)。由于不想重复分配&删除这些数组,所以打算分配一大块内存,每个线程分配一部分。为避免冲突,我应该为每个正在运行的线程设置一个唯一 ID,该 ID 不应更改且不能等于另一个线程。所以我的问题是,我可以为此目的使用函数 omp_get_thread_num() 返回的线程 ID 吗?或者是否有针对此类内存分配和分配任务的有效解决方案?非常感谢!

最佳答案

您可以开始并行部分,然后开始分配变量/内存。并行部分中声明的所有内容在它们自己的堆栈上都是线程私有(private)的。示例:

#pragma omp parallel
{
// every variable declared here is thread private
int * temp_array_pointer = calloc(sizeof(int), num_elements);
int temp_array_on_stack[num_elements];

#pragma omp for
for (...) {
// whatever my loop does
}

// if you used dynamic allocation
free(temp_array_pointer);
}

关于c++ - 使用 openMP 在 C++ 中进行内存分配和分配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20216573/

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