这是我本科毕设内容的一部分,内容是一篇论文中的一部分,仅供学习,欢迎拍砖
如图,我们展示了CUDA应用程序在GPU和GPGPU-Sim下的编译运行过程。
CUDA应用程序分为device代码和host代码。当在GPU上编译CUDA应用程序时,nvcc编译器会将device代码和host代码区分开。device代码会被编译成ptx,再由ptxas编译成cubin.bin文件,最后再和host代码、libcuda.a一块由底层的C/C++编译器编译链接生成可执行文件。在运行CUDA应用程序时,通过调用libcuda内的接口从而在GPU上运行device代码。
GPGPU-Sim的模拟机制为通过编程语言自定义生成libcuda.a库文件,该库文件实行了CUDA Runtime函数库内大部分函数的重定义,用于替换CUDA应用程序编译链接时所需的libcuda.a。在执行CUDA应用程序时,就会通过libcuda调用GPGPU-Sim的内的模拟接口,从在实现在GPGPU-Sim上模拟实现CUDA应用程序。
根据GPGPU-Sim的模拟机制,我们就可以通过修改Sim的代码,实现我们的目的。比如,在CUDA应用程序输出自己需要的数据等等。
转载请注明出处!