并行计算课程实践

并行计算课程实践

写在前面

Vim 基本操作

简介

vim 共分为三种模式,分别是命令模式(Command mode),输入模式(Insert mode)和底线命令模式(Last line mode)。 详见 Linux vi/vim | 菜鸟教程

编辑文件

编辑文本文件可以通过 vim 文件名 实现,如果文件原本不存在,则 Vim 会自动新建该文件。例如新建或编辑名为 test.txt 的文件,可以通过下面的命令实现。

1
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
./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
./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
Licensed under CC BY-NC-SA 4.0
Built with Hugo
Theme Stack designed by Jimmy