【超算/先进计算学习】日报8

今日已完成任务列表


超算/高性能计算总结

遇到的问题及解决方案


任务完成详细笔记


阶段一

在学习的第一阶段,我们首先对需要优化的程序——Darknet框架进行了了解,其具有灵活性高、结构明晰、安装简单方便等特点;之后对超级计算机的概念和体系结构进行了了解,同时也了解了超级计算机并行工作的基本原理;最后对Linux操作系统的基本指令进行了熟悉

lscpu 显示cpu相关信息
free 显示内存的使用情况
top 实时查看系统的运行情况
ls 查看指定目录下所有文件
chmod [para] [filename] 更改文件权限
mkdir [directoryName] 目录的创建
rm [-rf] [filename or directoryName] 目录以及文件的删除
pwd 查看当前的目录
cd [absolutePath]
cd … 上级目录
cd . 当前目录
cd - 上次访问目录
cd ~ 用户根目录
touch [filename] 文件的创建
mv [filename] [object_directiryName] 文件/目录的移动
mv [old_filename] [new_filename] 文件/目录的重命名
cp [source_filename] [dest_filename] 文件/目录的拷贝
find [directory] -name [filename] 搜索文件名中包含某特定字符串的文件
grep “[string]” -r [filename] 文件字符搜索
cat [file_name] 显示文件全部内容
head [file_name] 显示文件开头
head -n [line_num] [file_name] 显示文件开头(指定行数)
tail [file_name] 显示文件结尾
tail -n [line_num] [file_name] 显示文件结尾(指定行数)
tail -f [file_name] 动态刷新文件末尾
more [file_name] 显示文件结尾
env 用来显示环境变量, 显示当前用户的环境变量
export 用来设置环境变量
echo 用来查看指定变量内容
PATH 当前shell命令、系统程序、应用程序以及自定义可执行文件的路径
LD_LIBRARY_PATH 可执行共享库(动态库)的目录路径

阶段二

这一阶段主要对Linux常用的命令、基础性能分析工具进行学习
vim
普通模式(:)

:1 快速跳转到文件的第一行
:$ 快速跳转到文件最后一行
:w 保存
:q 退出
:wq 保存文件并退出
:q! 强制退出,不保存修改
s,:[addr]s/源字符串/目的字符串/[option]
全局替换:
%s/源字符串/目的字符串/g
2,10s/源字符串/目的字符串/g

插入模式(i)

插入模式下进行编辑

可视模式(v)

y 复制光标所选定文段
p 在光标所在行出粘贴
x 删除光标所选文段

GCC
分步编译和链接

gcc -o [obj_file] -c [src_file] -I [include_path]
gcc -o [bin] [all_obj_files] -L [library_path] -l [library_file_name]

直接编译出二进制文件

gcc -o [bin] [all_src_files] -I [include_path] -L [library_path] -l [library_file_name]

Makeu与Makefile
在这里插入图片描述
slurm

yhinfo / yhi:资源信息查询
yhalloc:资源申请 (强占)
yhrun:作业提交 (自动申请资源)
yhqueen / yhq:作业队列查询
yhcancel:作业取消
yhbatch:批处理作业 (输出被保存到 slurm-jobID.out 下)
yhacct:作业历史查询

GDB

l 展示代码
例如:展示第 10 行,l 10 会将其上下 5 行均展示
b [行号] 在指定行处打断点
r 运行程序
p [变量名称] 查看代码中指定变量的值
c 继续执行程序
q 退出程序
info break 查看所有断点信息
disable [断点编号] 禁用指定的断点
enable [断点编号] 恢复指定的断点
clear [断点编号] 删除指定断点
watch [变量名称] 跟踪指定变量

阶段三

这一阶段主要对高性能算法 (不同矩阵的存储格式) 有了初次的了解;同时对常用的性能分析工具有了一定的熟悉;最后对传统性能优化技术进行了学习
矩阵存储与SpMV算法
COO格式
在这里插入图片描述
CSR格式
在这里插入图片描述
DIA格式
在这里插入图片描述
gprof

  • 编译代码文件
    g++ -pg main.cpp -o main
  • 执行可执行文件
    yhrun -p thcp1 -N 1 -n 1 main
  • 对生成的 gmon.out 文件进行转换 (二进制转为普通文本文件)
    gprof main gmon.out>output.txt

传统性能优化技术
循环合并

for (i=0; i<N; i++)
	x[i] = a[i] + b[i]
for (i=0; i<N; i++)
	y[i] = a[i] - b[i]
for (i=0; i<N; i++)
{
	x[i] = a[i] + b[i];
	y[i] = a[i] - b[i];
}

循环展开

for (i=0; i<N; i++)
{
	A[i] = A[i] + B[i];
}
for (i=0; i<N; i+=4)
{
	A[i] = A[i] + B[i];
	A[i+1] = A[i+1] + B[i+1];
	A[i+2] = A[i+2] + B[i+2];
	A[i+3] = A[i+3] + B[i+3];
}

循环交换

for (j=0; j<N; j++)
	for (k=0; k<N; k++)
		for (i=0; i<N; i++)
			A[i][j] = a[i][j] + B[i][k] * C[k][j];
for (j=0; j<N; j++)
	for (i=0; i<N; i++)
		for (k=0; k<N; k++)
			A[i][j] = A[i][j] + B[i][k] * C[k][j];

循环分布

for (i=0; i<N; i++)
{
	A[i] = i;
	B[i] = 2 + B[i];
	C[i] = 3 + C[i-1];
}
for (i=0; i<N; i++)
{
	A[i] = i;
	B[i] = 2 + B[i];
}
for (i=0; i<N; i++)
	C[i] = 3 + C[i-1];

循环不变量外提

for (i=0; i<N; i++)
	for (j=0; j<M; j++)
		U[i] = U[i] + W[i] * W[i] * D[j] / (dt * dt);
T1 = dt * dt;
for (i=0; i<N; i++)
{
	T2 = W[i] * W[i];
	for (j=0; j<M; j++)
		U[i] = U[i] + T2 * D[j]/T1;
}

循环分块

for (i=0; i<N; i++)
	for (j=0; j<M; j++)
		A[i] = A[i] + B[j]
for (j=0; j<M; j+=T)
	for (i=0; i<N; i++)
		for(jj=0; jj<T; jj++)
			A[i] = A[i] + B[j+jj]

循环分裂

for (i=0; i<N; i++)
	vec[i] = vec[i] + vec[M];
for (i=0; i<M; i++)
	vec[i] = vec[i] + vec[M];
for (i=M; i<N; i++)
	vec[i] = vec[i] + vec[M];

阶段四

该阶段主要利用之前阶段所学内容对Darknet程序进行优化

  • 使用make对程序进行编译 (-pg选项*)
  • 运行可执行文件 (生成gmon.out文件)
  • 利用 gprof 工具将gmon.out文件转为.txt文件
  • 分析文件内容,找出热点函数
  • 使用优化技术对热点函数进行优化

对自己的表现是否满意


对各个阶段的内容进行了总结,虽然时间不算长,但收获还是值得记录的!

简述下次计划


完结撒花!

其他反馈



请添加图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

鱼树C

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值