> For the complete documentation index, see [llms.txt](https://zpliu.gitbook.io/booknote/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://zpliu.gitbook.io/booknote/bing-hang-ji-suan/04homework.md).

# 04homework

***学号***：2019301110060 ***姓名***：刘振平 ***院系***：植物科学技术学院

## 1.计算不同CUP数下Pi的并行效率

***统一定义\*\*\*\*`num_step=1000000000`***

* PAD模式下的并行效率与加速比

  | 线程数 |  时间 |  加速比 |  并行效  |
  | :-: | :-: | :--: | :---: |
  |  1  | 81s |   1  |   1   |
  |  2  | 45s |  1.8 |  0.9  |
  |  4  | 10s |  8.1 | 2.025 |
  |  6  |  6  | 13.5 |  2.25 |
  |  8  |  5  | 16.2 |  2.0  |
* 并行域

  | 线程数 |  时间 |  加速比 |  并行效  |
  | :-: | :-: | :--: | :---: |
  |  1  |  34 |   1  |   1   |
  |  2  |  35 | 0.97 | 0.485 |
  |  4  |  39 | 0.87 |  0.22 |
  |  6  |  40 | 0.85 | 0.142 |
  |  8  |  32 | 1.06 |  0.13 |
* critical 制导

  | 线程数 |  时间 |  加速比 |  并行效 |
  | :-: | :-: | :--: | :--: |
  |  1  |  34 |   1  |   1  |
  |  2  |  17 |   2  |   1  |
  |  4  | 8.8 | 3.86 | 0.96 |
  |  6  |  6  | 5.66 | 0.94 |
  |  8  | 4.4 |  7.7 | 0.96 |
* reduction制导

  | 线程数 |  时间  |  加速比 |  并行效 |
  | :-: | :--: | :--: | :--: |
  |  1  | 15.5 |   1  |   1  |
  |  2  |  7.8 | 1.98 | 0.99 |
  |  4  |  3.9 | 3.97 | 0.99 |
  |  6  |  2.6 | 5.96 | 0.99 |
  |  8  |  2.0 | 7.75 | 0.97 |
* lastprivate制导

  | 线程数 |  时间  |  加速比 |  并行效  |
  | :-: | :--: | :--: | :---: |
  |  1  | 14.9 |   1  |   1   |
  |  2  |  7.7 | 1.94 |  0.97 |
  |  4  |  3.9 | 3.82 |  0.95 |
  |  6  |  2.6 |  5.7 | 0.955 |
  |  8  |  2.0 | 7.45 |  0.93 |

## 2.数列累加

***定义N的范围\*\*\*\*`N=10000000`***

> 两者之间的差别
>
> * PAD方法
>   * 虽然使用了二维数组，防止了数据写入时的阻塞；但在求终止结果时使用了For循环
> * lastprivate制导
>   * 对局部sum变量进行了深度拷贝，在退出for循环时，将结果存在各自的sum变量中，各个线程分别对全局变量K做累加

* PAD模式

  | 线程数 |   时间  |  加速比  |  并行效  |
  | :-: | :---: | :---: | :---: |
  |  1  |  0.29 |   1   |   1   |
  |  2  |  0.15 |  1.93 |  0.97 |
  |  4  |  0.08 | 3.625 | 0.906 |
  |  6  |  0.06 | 4.832 | 0.805 |
  |  8  | 0.049 |  5.91 | 0.739 |
* lastprivate制导方法

  | 线程数 |   时间  |  加速比 |  并行效  |
  | :-: | :---: | :--: | :---: |
  |  1  |  0.05 |   1  |   1   |
  |  2  |  0.03 | 1.67 |  0.83 |
  |  4  | 0.021 | 2.38 |  0.59 |
  |  6  | 0.017 | 2.94 |  0.49 |
  |  8  | 0.014 | 3.57 | 0.446 |

## 4.二维矩阵运算

***矩阵为\*\*\*\*`1000 x 1000`\*\*\*\*的二维矩阵***

### 4.1矩阵加法

| 线程数 |  时间  |  加速比 |  并行效 |
| :-: | :--: | :--: | :--: |
|  1  |  2.8 |   1  |   1  |
|  2  |  2.6 | 1.07 | 0.53 |
|  4  |  2.4 | 1.16 | 0.29 |
|  6  |  2.4 | 1.16 | 0.19 |
|  8  | 2.18 | 1.28 | 0.16 |

### 4.2矩阵乘法

***矩阵为\*\*\*\*`1000 x 1000`\*\*\*\*的二维矩阵***

| 线程数 |  时间  |  加速比 |  并行效 |
| :-: | :--: | :--: | :--: |
|  1  |  5.6 |   1  |   1  |
|  2  |  3.0 | 1.86 | 0.93 |
|  4  |  1.7 | 3.29 | 0.82 |
|  6  |  1.2 | 4.67 | 0.77 |
|  8  | 0.81 |  6.9 | 0.86 |
