gpt4 book ai didi

c - OMP 2.0 嵌套 For 循环

转载 作者:行者123 更新时间:2023-12-04 12:10:17 26 4
gpt4 key购买 nike

由于我无法使用 omp 任务(使用 visual studio 2015),我正在尝试为嵌套循环任务找到解决方法。代码如下:

#pragma omp parallel
{
for (i = 0; i < largeNum; i++)
{
#pragma omp single
{
//Some code to be run by a single thread
memset(results, 0, num * sizeof(results[0]));
}
#pragma omp for
for (n = 0; n < num; n++) {
//Call to my function
largeFunc(params[n], &resulsts[n])
}
}
#pragma omp barrier
}

我希望我的所有线程执行 largeNum 次,但等待 memset 设置为零,然后我希望每个线程执行 largeFunc。我没有发现任何数据依赖性。

此时,我已经了解了 omp 指令在我脑海中的所有内容。这个解决方案有效吗?没有任务有更好的方法吗?

谢谢!

最佳答案

仅这段代码呢?

#pragma omp parallel private( i, n )
for ( i = 0; i < largeNum; i++ ) {
#pragma omp for
for ( n = 0; n < num; n++ ) {
results[n] = 0;
largeFunc( param[n], &results[n] );
}
}

据我了解您的问题,如果 results 的实际类型支持分配,则无需 single 指令即可处理初始化部分到 0。此外,您的初始代码缺少 private( i ) 声明。最后,应该不需要 barrier

关于c - OMP 2.0 嵌套 For 循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38892404/

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