0
点赞
收藏
分享

微信扫一扫

刚进公司就负责项目,把老弟整蒙了!

Aliven888 2023-04-29 阅读 55

目录

今日已完成任务列表


超算/高性能计算总结

遇到的问题及解决方案


任务完成详细笔记


阶段一

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

阶段二

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

插入模式(i)

可视模式(v)

GCC
分步编译和链接

直接编译出二进制文件

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

GDB

阶段三

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

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

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 条评论