多线程并行快速求解Pi的方法

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
#pragma omp parallel for private(x,y) reduction(+:pi)
for(inti=1;j<N;i+=2) {
Y=1/double(2 i—1):
pi= pi+4 y;
表 1所 示 ) 。
3.3 BBP算法的 实现
M PI是 专 门 为 集 群 和 多 节 点 并 行 计 算 语 言,运行效率高 ,实现方式 多样 ,可 以进行主 从式、并列式 以及流水 线式等方式的实现 。在 利用 计算 机 多核 CPU,模 拟多 个节 点的 实现 方 式 。 改 造 成 主 从 式 程 序 ,利 用 0号 节 点 作 为 主 节 点 收 发 数 据 ,也 参 与计 算 , 而 其 他 节 点 只 进行计算 ,为负载均衡选择 详尽的计算量运行 到不同的节点上 。
序 号






表 2
运行时间 (S)
0.036
0.045
0.284 0.01
0.018
O.08l
表 3
小数 点位数

100
1000

l0O
1000
并行加速 比
1.0
1.0
1.0
3.6
2.5
3.51
计 算 方 式 串行 计 算
W inAPI OpenM P
3.14l59 3.14925
3.14159
3.14159
平 均 结 果 3.14159
3.14159
平 均 时 间 (s) 1.287
0.373
并 行 加 速 比
1.O
1.0
1.0 3.43
3.51
4.02
计算方式 BBP串 行 算 法
BBPMPI并 行 算 法
(4)数值 计算时 要根据实 际情 况选择 和 改 造 算 法 。 比 如 在 计 算 值 就 比 e更 适 合 并 行 。 而且每种 并行方法都有 它的特使要 求,比如在 使 用 parallel f or private时, 由于变 量进 入 f or 循环后属于重新定义 ,所 以不能 出现 自己为 自 己赋值的情况,需要按照程序一步步展开来写 , 相 对 繁 琐 。
4结论
(2)W jnAPI实 现 用 临 界 区 的 效 果最 差 , 而且 winAPI的计算速度很大 程度也和临界 区 的设定有关 ,尽量缩小临界 区有利于提高并 行 速 度 。
(3)WinAPl实 现 用 线 程 号 为 每 个 线 程 分 配 不 同 的任 务 ,分 配 过 程 需要 人 为 干 预 ,对 于 函数复杂 的程序来说 ,实现繁琐 ,不利 于使 用 。
Data Base Technique· 数据库技术
计 算方 式 级数 串行 计算
级数 openMP法
序 号


3 1


运 行 时 间 (S)
1.28l
1.302
1.277 0.375
O-371
0.372
表 1
计 算 结 果
3.14159
3.14l59
运 行 时 间 (s)
0.527
0.545
0.525 0.24l 0.253 0.239 0.260 0.248 0.255 0.238 0.235 0.236
平 均 结 果 3.14l56
3.13999 3.13999 3.14144
平 均 时 间 (s) 0.532
X=一l/double(2 (1+i)一 1);
pi=pi+4 x;
} 因此 程序 完 美 的解 决 了并行 问题 。 (如
这个 算 法 中,我 们发 现运 行 后, 串行 时 间和并行时 间是基本一致 的:
这 个 问题 在 于 x,sign 的值 为 共 享 量 , 当不 同的线程在 调用 时存在等待的时 间,所 以如果 将这些值私有化 ,则可 以解决这些 问题 。由于 使用 pf iv ̄e时 ,各个私有变量 必须 在 for中有 定义 ,即在 进入 并行 区时,f or循 环 中的所有 私 有 变 量 是 需要 重 新 定 义 的 , 因 此 我 们 必 须 使 得 x,sig n 等 变 量 在 定 义 时 全 部 使 用 已 知 量 来 定 义
0.244 0.254 0.236
加 速 比
1.O0
1.00
1.O0 2.19 2.15 2.20 2.O3 2 20 2,O6 2-21 2I32 2 22
平 均 加 速 比 1.0O
2.18 2.O9 2.25
for(inti=2;i<N;i++) { c[omp_geLthread_num()]+=4 x; sign=sign (一1); x sign/double(2 i—1); )
M PI
序 号


3 1 2 3 1 2 3 l 2 3
计 算 结果
3.14184
3.14227
3.14057 3.13999 3.13999 3.13999 3.】3999 3.1399 3.1399 3.14186 3.14179 3.14068
根据 BBP算法 (如 图 4所 示 )我 们将 整 个 运算分成 4个部分 ,分别用 一个 线程进行运 算 , 其 运 算 总 时 间约 等 于 线 程 中运 行 时 间 最 长 的那个 (计算结果如表 2所示 )。
3.4 API、 OpenMP、MPI对 比 实验
我 们 以 蒙 塔 卡 罗 算 法 为 例 , 分 别 采 用 API、OpenMP、MPI三 种 并 行 方 式 对 值 进 行 计算 ,来对 比其运算效率和运算精度 (计算 结 果如表 3所 示)。
参考文献
[1]多核 系列教材编写组 .多核程序设计 【M]. 北京 :清华 大学 出版社 ,2007.
[2]朱建伟 ,刘 计算机 ,201 3.
[3】张翔 圆 .周 率 Pi的 BBP多核 并行 算 法 实 现 [J】.普洱学院学报 ,201 3.
相关文档
最新文档