比较 Critical Section 和 Reduction 策略

如果尚未收集 omptest 的性能数据,必须进行收集,并打开第一个实验 omptest.1.er。相关说明,参见为 omptest 示例收集数据

本部分比较两个例程 critsec_()reduc_() 的性能,在这两个例程中将使用 CRITICAL SECTIONS 指令和 REDUCTION 指令。在本例中,并行化策略处理在一对 do 循环中嵌入的同一赋值语句。其目的是求三个二维数组的内容之和

t = (a(j,i)+b(j,i)+c(j,i))/k
sum = sum+t
  1. 在四 CPU 实验 omptest.1.er 的 [函数] 标签中,找到 critsum_()redsum_()
  2. 比较两个函数的相容用户 CPU 时间。

    critsum_() 的相容用户 CPU 时间非常长,因为 critsum_() 使用临界段并行化策略。虽然求和运算遍布于全部四个 CPU,但一次只允许一个 CPU 将其 t 值加到 sum 中。对于此类编码构造,这并非是一种非常有效的并行化策略。

    redsum_() 的相容用户 CPU 时间远远少于 critsum_() 的对应时间。这是因为 redsum_() 使用约简策略来求和。在此策略中,在每个处理器上以并行方式累计部分的和,然后将部分的和按顺序累加到 sum 中。此策略能更有效地利用可用的 CPU,因为它从最大程度上减少了对 sum 的按序访问。


找到要找的内容了吗?如未找到,请将您的意见通过电子邮件发送至 docfeedback@sun.com。
法律声明