这篇文章用获取一些cuda 库函数的实现细节,用于调查异常耗时等表现。(因为有的时候因为环境信息,导致cublasHgemm等函数在CPU端的启动函数变化很长,这种情况下用nsight system只能获取变长的表现,不能确定是什么原因导致的变长,这就需要了解逻辑实现来确定可能的原因。)
基本命令组合nm+objdump
- nm: 获取函数的跳转索引
- objdump + grep -A10 -B10 获取制定跳转位置汇编语言的上下10行
nm -D libcublas.so | grep cublasGemmEx 得到代码地址
objdump -d libcublas.so | grep -A100 -B10 "b9d660:" 根据地址查询代码
使用cuobjdump获取device function对应的ptx代码
- 可以通过上面找到一些C++接口函数调用的device函数逻辑,然后用这个cuobjdump获取device function的具体内容
cuobjdump --dump-ptx libcublas.so | grep some_key_words