并行计算课程实践
写在前面
Vim 基本操作
简介
vim 共分为三种模式,分别是命令模式(Command mode),输入模式(Insert mode)和底线命令模式(Last line mode)。 详见 Linux vi/vim | 菜鸟教程。
编辑文件
编辑文本文件可以通过 vim 文件名
实现,如果文件原本不存在,则 Vim 会自动新建该文件。例如新建或编辑名为 test.txt 的文件,可以通过下面的命令实现。
进入编辑界面之后,按下 i 键或 Insert 键,即可进入输入模式开始编辑文件。
常用命令
命令 | 操作说明 |
---|
Esc | 退出编辑模式 |
:wq | 保存文件并退出 Vim |
:q! | 不保存文件并强制退出 Vim(慎用) |
:set nu | 显示行号 |
i / Insert | 切换到输入模式 |
x | 删除当前光标所在处的字符 |
d | 剪切光标所在行 |
dd | 删除光标所在行 |
yy | 复制光标所在行 |
p | 粘贴已复制或已剪切的数据 |
u | 撤销上一步操作 |
gg | 跳转到文件开头 |
G(shift+g) | 跳转到文件末尾 |
/word | 搜索名称为 word 的字符串 |
^ | 跳转到光标所在行首 |
$ | 跳转到光标所在行尾 |
代码及数据
本文的代码均存放在 Github,地址 https://github.com/jinggqu/ParallelComputing。
本例中所设计到的输入矩阵有两个:a 矩阵与 b 矩阵,其值相同,如下:
a、b 矩阵:
1
2
3
4
5
6
7
8
9
10
| 18.04 8.47 16.82 17.15 19.58 4.24 7.20 16.50 5.97 11.90
10.25 13.50 7.83 11.03 20.45 19.68 13.65 15.40 3.04 13.03
0.35 5.22 2.95 17.27 3.36 8.61 2.79 2.34 21.45 4.69
11.02 18.02 13.16 6.36 13.69 11.26 10.60 20.89 6.28 16.56
11.31 16.53 8.59 19.15 6.08 7.57 17.35 19.74 1.50 20.39
11.30 1.85 4.13 14.24 19.12 7.49 1.38 0.43 9.83 1.35
5.12 20.84 19.37 18.27 5.73 11.59 8.06 16.33 11.01 14.34
11.42 0.84 9.40 20.01 19.99 15.48 6.11 15.86 13.74 7.60
14.77 3.56 9.45 18.90 17.81 7.09 4.92 19.19 7.52 14.75
20.54 12.64 14.12 18.44 9.44 19.84 8.56 17.50 14.69 19.56
|
矩阵相加
上传文件
在命令行中使用 rz
命令开始上传文件,选中相应文件之后点击打开即可开始上传。

编译
执行 nvcc
命令编译上述文件,生成可执行文件。
1
| nvcc -o matrixaddition matrixaddition.cu
|
其中,-o matrixaddition
表示将可执行文件的文件名指定为 matrixaddition。若不指定,则默认为 a.out。
执行完上述操作之后,使用 ll
命令可以查看现有的所有文件,输出如下。
1
2
| -rwxrwxr-x. 1 cuda01 cuda01 569416 11 月 24 09:50 matrixaddition
-rw-r--r--. 1 cuda01 cuda01 2023 11 月 24 09:49 matrixaddition.cu
|
运行
上述过程中生成了 matrixaddition
可执行文件,执行下述命令即可开始运行。
输出结果如下:
1
2
3
4
5
6
7
8
9
10
| 36.09 16.94 33.63 34.29 39.15 8.48 14.40 33.00 11.93 23.79
20.50 27.01 15.67 22.05 40.90 39.35 27.30 30.81 6.08 26.07
0.70 10.43 5.89 34.54 6.73 17.22 5.57 4.67 42.90 9.37
22.03 36.04 26.31 12.71 27.38 22.52 21.20 41.78 12.56 33.13
22.62 33.07 17.19 38.29 12.17 15.14 34.69 39.47 3.00 40.77
22.59 3.70 8.26 28.49 38.24 14.98 2.76 0.86 19.66 2.71
10.23 41.69 38.75 36.55 11.45 23.18 16.12 32.65 22.01 28.68
22.83 1.69 18.80 40.02 39.98 30.96 12.21 31.72 27.49 15.21
29.54 7.13 18.90 37.80 35.61 14.19 9.83 38.37 15.05 29.49
41.08 25.28 28.23 36.88 18.88 39.68 17.11 34.99 29.39 39.13
|
矩阵相乘
与上述过程类似,将编写好的代码上传到服务器中,准备进行编译。
编译
执行 nvcc
命令编译代码文件,生成可执行文件。
1
| nvcc -o matrixmultiplication matrixmultiplication.cu
|
运行
上述过程中生成了 matrixmultiplication
可执行文件,执行下述命令即可开始运行。
相乘结果:
1
2
3
4
5
6
7
8
9
10
| 1434.15 1331.02 1349.52 2031.20 1607.49 1378.23 1109.41 1915.59 1198.52 1642.11
1459.53 1356.36 1325.31 2057.32 1718.01 1479.91 1109.21 1791.41 1139.91 1573.60
840.46 667.29 691.96 1000.79 1033.85 727.56 517.53 1100.00 572.38 918.05
1465.92 1237.35 1307.85 2113.54 1760.48 1593.65 1067.92 1812.61 1268.27 1554.78
1106.95 1007.73 1027.50 1761.49 1474.07 1238.15 1092.06 1966.31 1278.88 1661.49
866.95 809.99 741.98 1093.15 931.67 600.26 684.60 1144.12 468.24 1008.11
1394.52 1273.50 1259.89 1989.42 1802.07 1643.34 1025.81 1803.05 1353.40 1541.02
1410.82 1162.53 1229.82 1926.65 1632.43 1203.22 978.71 1790.40 1080.38 1510.35
1338.49 1253.85 1171.30 1826.25 1491.70 1298.11 1020.23 1856.90 1107.89 1567.99
1901.57 1436.10 1636.91 2460.80 2242.40 1747.59 1161.72 2187.99 1521.42 1855.17
|