各可 2021-06-08 13:50 采纳率: 0%
浏览 23

Openmp并行计算问题

#include "stdio.h"
#include "omp.h"
#define NUM_THREADS 4
int main()
{
    int i, k = 100;
    omp_set_num_threads(NUM_THREADS);
#pragma omp parallel for firstprivate(k)
    for (i = 0; i < 5; i++)
    {
        k++;
        printf("In for-loop k=%d\n", k);
    }
    printf("k=%d\n", k);
    return 0;
}

错误:正确:

为什么同样的代码vscode命令行直接生成exe运行结果不太对,正确的结果使用vs2019运行的

 

  • 写回答

3条回答 默认 最新

  • qfl_sdu 2021-06-08 14:16
    关注

    打印一下最大线程数看看

    #include "stdio.h"
    #include "omp.h"
    #define NUM_THREADS 4
    int main (int argc, const char * argv[])
    {
    	int i,k=100;
    	int nProcessors = omp_get_max_threads();
    	printf("max thread = %d\n",nProcessors);
    	omp_set_num_threads(nProcessors > NUM_THREADS ? NUM_THREADS:nProcessors);
    	
    
    #pragma omp parallel for firstprivate(k)
    	for(int i = 0; i < 5; i++)
    	{
    		k++;
    		printf("In for-loop k=%d\n", k);
    	}
    	printf("k=%d\n", k);
    	exit(0);
    }
    评论

报告相同问题?