首页 技术 正文
技术 2022年11月15日
0 收藏 808 点赞 2,756 浏览 1077 个字
// Pi.cpp : 定义控制台应用程序的入口点。
//求圆周率PI#include "stdafx.h"
#include <windows.h>
#include <time.h>
#include <omp.h>
#include <iostream>
using namespace std;static long num_steps=1000000000;//定义所分的块数
#define NUM_THREADS 2 //定义所开启的线程数
int _tmain(int argc, _TCHAR* argv[])
{
int i;
omp_set_num_threads(NUM_THREADS);//开启线程
double x,sum=0.0,pi;
clock_t start_time,end_time;
double step=1.0/(double)num_steps;//并行--------------------------------------
start_time=clock();
#pragma omp parallel sections reduction(+:sum) private(x,i)
{
#pragma omp section
{
for (i=omp_get_thread_num();i<num_steps;i=i+NUM_THREADS)
{
x=(i+0.5)*step;
sum=sum+4.0/(1.0+x*x);}
}
#pragma omp section
{
for (i=omp_get_thread_num();i<num_steps;i=i+NUM_THREADS)
{
x=(i+0.5)*step;
sum=sum+4.0/(1.0+x*x);}
}}
pi=step*sum;
end_time=clock();cout<<"Pi="<<pi<<endl;
cout<<"并行time="<<end_time-start_time<<endl;//串行-----------------------------------
sum=0.0;
start_time=clock();
for (i=0;i<num_steps;i++)
{
x=(i+0.5)*step;
sum=sum+4.0/(1.0+x*x);
}
pi=step*sum;
end_time=clock();cout<<"Pi="<<pi<<endl;
cout<<"串行time="<<end_time-start_time<<endl;system("pause");
return 0;
}
//运行结果如下:(相对加速比:7675/4496=1.71)

相关推荐
python开发_常用的python模块及安装方法
adodb:我们领导推荐的数据库连接组件bsddb3:BerkeleyDB的连接组件Cheetah-1.0:我比较喜欢这个版本的cheeta…
日期:2022-11-24 点赞:878 阅读:8,910
Educational Codeforces Round 11 C. Hard Process 二分
C. Hard Process题目连接:http://www.codeforces.com/contest/660/problem/CDes…
日期:2022-11-24 点赞:807 阅读:5,435
下载Ubuntn 17.04 内核源代码
zengkefu@server1:/usr/src$ uname -aLinux server1 4.10.0-19-generic #21…
日期:2022-11-24 点赞:569 阅读:6,250
可用Active Desktop Calendar V7.86 注册码序列号
可用Active Desktop Calendar V7.86 注册码序列号Name: www.greendown.cn Code: &nb…
日期:2022-11-24 点赞:733 阅读:6,061
Android调用系统相机、自定义相机、处理大图片
Android调用系统相机和自定义相机实例本博文主要是介绍了android上使用相机进行拍照并显示的两种方式,并且由于涉及到要把拍到的照片显…
日期:2022-11-24 点赞:512 阅读:7,693
Struts的使用
一、Struts2的获取  Struts的官方网站为:http://struts.apache.org/  下载完Struts2的jar包,…
日期:2022-11-24 点赞:671 阅读:4,731