Skip to content

Latest commit

 

History

90 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

猫狗分类

2024年10月27日

上传了新文件,增加了测时间的功能

2024年12月13日

上传了debug过程的文档

2024年12月15日

上传了项目汇报的PPT,其中还有一些实验没有做完

2024年12月17日

修改了PPT的p2和p3,上传了Bilinear的代码

2024年12月20日

添加了bcnn的算子的列表

2024年12月21日

提交了auto_training的代码,可以通过.sh脚本实现自动训练,并且把数据保存为log文件

2024年12月22日

把auto_taining改完了,只要运行suto.sh脚本就可以自动运行,使用步骤如下

conda activate pytorch #激活虚拟环境

chmod +x auto.sh

./auto.sh & #执行sh脚本,可以在这个里面修改参数

2024年12月24日

写了并且测试完了l2-normalization,sign-squared-root,avgpool和bmm算子。 目前还差conv(之前没加padding),和bn算子没写。

2024年12月25日

把所有算子都写完了,并且最终结果和python上一样(c++的output: 0.153745,python的output: 0.153746)。
在写bn算子的时候我发现bn要在relu前面使用,这样效果更好,修改后跑了下正确率可以提高3%左右。
修改前val_acc:0.7811,修改后val_acc:0.8087
把所有的速度都测完了(还未加openmp),记录在了bcnn文件夹下的算子列表.md中,整个推理用时在9153ms左右,卷积操作用时占了大头。

2024年12月29日

使用openmp在for循环前面加了# pragma parallel for,但是效果不大,运行时间在9258ms左右,可能是哪里设置的有问题。

2024年12月30日

才发现昨天的并行语句有问题,应该是#pragma omp parallel for,写成了#pragma parallel for, 虽然没报错, 但是并没有并行。
又试了下#pragma opm parallel for,故意打错的指令,但是不报错,还能正常运行,但是不起作用,还是有点坑的。

2025年1月11日

上传了科研训练的总结,以及通过hook可视化中间层的文件。

2025年1月12日

给conv算子加上了并行,在并行的时候发现如果不符合规则会有额外的运行开销,包括并行里面有continue,多个线程同时访问变量(包括自增等)。解决方法就是首先修改掉continue部分,使得循环次数确定,之后在并行过程中多使用“绝对位置”,少用“相对位置”,例如

output[cnt[c]++] += sum;

由于多个线程同时访问,使得自增操作会有问题,解决方法要么使用critical锁住线程(但是会有额外时间开销),要么就是把cnt[c]修改成

int output_index = i * output.height * output.width + h * output.width + w;
output[output_index] += (padded_mat[index + dx[m]] * weight[weight_pos + m]);

这样可以避免这种情况。这样子推理整体运行时间从9秒降到了3秒。

About

No description, website, or topics provided.

Resources

Stars

2 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages