c_cpp openmp.c

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了c_cpp openmp.c相关的知识,希望对你有一定的参考价值。

// compile with: gcc openmp.c -o openmp -std=c11 -O3 -Wall -fopenmp

#include <stdio.h>
#include <stdlib.h>

typedef int num;

int main(int argc, char *argv[]) {
	int n = 20000;
	int m = 20000;
	
	num *p = (num*)malloc(n * m * sizeof(num));
	if (p == NULL)
		return 1;
	
	for (int i = 0; i < n * m; ++i) {
		p[i] = 1;
	}
	
	num s = 0;
	#pragma omp parallel for
	for (int i = 0; i < n; ++i) {
		num ss = 0;
		for (int j = 0; j < m; ++j) {
			ss += p[i * m + j];
		}
		#pragma omp atomic
		s += ss;
	}
	
	printf("%lld\n", s);
	
	return 0;
}

以上是关于c_cpp openmp.c的主要内容,如果未能解决你的问题,请参考以下文章

OpenMP/C++:并行 for 循环,之后减少 - 最佳实践?

openmp/C++ 简单并行区域返回不一致的结果

我要求我的并行 OpenMP C 代码的执行时间解决方案

c_cpp 130.周围地区

c_cpp 200.岛屿数量

c_cpp 127.单词阶梯