写在前面
并行计算与GPU编程是我这学习编码精力投入比较多的一门课,其他诸如编译原理与技术、NOSQL数据库技术等等都是一些理论知识掌握,最多加上一些简单实践。
相反,GPU编程掌握理论知识只是基础,只有在实践中应用才能明白并行计算的核心以及其难点所在。
本学期的大作业花费了我将近一周的时间编码完成,期间遇到了很多调试的问题,且大部分时间会感觉这是一个非常玄学的BUG,就例如在kernel中写一个for循环,循环内输出i值,仅此而已就不能正常输出,最后发现其实没有问题,他只是并行输出了太多次,先前的i值没有打印到控制台上而已;再如计算性状的calculate函数中max值随代数增加不断增大,最后发现是因为没有memset;再如printf语句没有输出值,其实也只是拿了%d去输出双精度浮点数了。
所以好些问题其实还是C的基础不过关的问题,已经大三了依旧如此,可见前三年自己对编码水平并没有很重视。
验收目标
本学期的验收任务是柔性车间调度作业问题的并行计算求解,尽可能提高并行计算的性能,使得其运行时间较之于CPU串行版本有更大的加速比。
编写目的
想写这个博客的目的其实也很简单,自己对CUDA其实也算下了将近一周的精力,付出不多,只能说是把课程应付了过去,但是期间遇到的BUG不想再遇到,看到了同班qjx大佬的代码,感觉就不是一个画风,别人的代码格式规整,命名、函数库的使用都合乎规矩,自己的可阅读性就差上几个档次。好了就说到这里吧,记录一下保持记忆。
总的来说还是想尽可能提高自己,同时希望能帮到后来的学弟学妹吧。