OpenMP 之for指令并行求和(学习笔记)

来源:互联网 发布:数组 指针 区别 编辑:程序博客网 时间:2024/06/05 08:34

OpenMP 并行求和for指令并行求和方法

开启两个并行线程程序如下:

#include "stdafx.h"#include <stdio.h>#include <time.h>#include <stdlib.h>#include <omp.h>#define  NUM_THREADS 2int _tmain(int argc, _TCHAR* argv[]){omp_set_num_threads(NUM_THREADS);long long sum = 0;long long sumtmp [NUM_THREADS];clock_t t1 = clock();#pragma omp parallel{long i;long id = omp_get_thread_num();long long temp = 0l;#pragma omp forfor(i = 1;i<= 1000000000; i++){temp +=i;}sumtmp[id] = temp;}for(long i = 0;i<NUM_THREADS; i++){       sum +=sumtmp[i];}clock_t t2 = clock();printf("sum=%lld\n",sum);printf("parallel time=%d\n",(t2-t1));sum = 0;t1 = clock();for (long i = 1;i<=1000000000;i++){sum = sum + i;}t2 = clock();printf("sum=%lld\n",sum);printf("serial time=%d\n",(t2-t1));printf("wo shi xingxing\n");system("pause");return 0;}
运行结果如下图:

开启四个并行线程(修改如下语句):

#define  NUM_THREADS 4
运行结果如下图


0 0
原创粉丝点击