OpenMP并行计算PI的值
2012-06-15 19:42
393 查看
用VS新建一个工程后,首先要右键项目,属性--C/C++--语言,,在右边的对话框中OpenMP支持选择是;
程序代码为:
#include<stdio.h>
#include<time.h>
#include<omp.h>
static long num_steps = 100000;
double step,pi;
void main()
{
clock_t t1=clock();
int i;
double x,sum = 0.0;
step = 1.0/(double)num_steps;
#pragma omp parallel for reduction(+:sum)
for(i = 0;i<num_steps;i++)
{
x = (i+0.5)*step;
sum = sum + 4.0/(1.0+x*x);
printf("%d",omp_get_thread_num());
}
pi = step *sum;
clock_t t2 =clock();
printf("pi=%f,用时:%d\n",pi,t2-t1);
}
上述代码使用了规约rduction(op:list);这样每个线程会有一个私有的list,当所有线程的list计算完成之后,每个线程的私有list值将被op规约为一个list值。
程序代码为:
#include<stdio.h>
#include<time.h>
#include<omp.h>
static long num_steps = 100000;
double step,pi;
void main()
{
clock_t t1=clock();
int i;
double x,sum = 0.0;
step = 1.0/(double)num_steps;
#pragma omp parallel for reduction(+:sum)
for(i = 0;i<num_steps;i++)
{
x = (i+0.5)*step;
sum = sum + 4.0/(1.0+x*x);
printf("%d",omp_get_thread_num());
}
pi = step *sum;
clock_t t2 =clock();
printf("pi=%f,用时:%d\n",pi,t2-t1);
}
上述代码使用了规约rduction(op:list);这样每个线程会有一个私有的list,当所有线程的list计算完成之后,每个线程的私有list值将被op规约为一个list值。
相关文章推荐
- 文章标题 并行计算 -- OpenMP简介和计算实例 (计算pi)
- 方阵行列式并行化计算(OpenMP,MPI),并计算加速比
- 并行计算—OpenMP—统计素数的个数
- 并行计算之OpenMP入门简介
- clang编译器实现openmp 支持NVIDIA Gpu并行计算
- 如何利用VS的代码优化和openmp并行计算提高程序运行速度
- (一)初步了解并行计算、OpenMP
- 并行Pi的计算
- 并行计算----5种方式实现判断是不是素数.Net,Win32,JavaRunnable,OpenMp,JavaThread
- openMP 设置 (并行计算)
- openMP(并行计算) 超简单快速上手
- OpenMP 线程化(Threading)基础(1)--并行计算简介
- 并行计算—OpenMP—临界区critical
- 完数的OpenMP并行程序设计-并行计算
- 并行计算mpi [ PI ]
- 关于高性能计算(并行计算)的知识记录汇总(OpenMP、OpenCL、CUDA、TBB)
- 并行计算----5种方式实现判断是不是素数.Net,Win32,JavaRunnable,OpenMp,JavaThread
- 并行计算—OpenMP—共享与私有
- 并行计算—OpenMP—负载均衡
- 并行计算大作业之多边形相交(OpenMP、MPI、Java、Windows)