作者unimaybe (unimaybe)
看板CompilerDev
标题[问题] 利用clang前端传递参数给後端opt Pass
时间Tue Apr 12 15:06:31 2022
各位好
最近在写 LLVM 的 Pass
主要是针对 Compile 成 IR 的 CUDA Code 做一些事情,我会把 distance 的参数传进去
,Pass 会利用这个参数做一些事情。以下是我下的 command
opt -load buildDir/CUDAMemPass.so -cudamem -distance 4 main.bc -o main.i.bc
这样下参数确实是可以传进去的,但是因为把 CUDA 编译成 IR 的 Makefile 实在很麻烦
,要编成 ptx, fatbin,如果有好几个 cuda file 就更复杂 ,所以在 Stackoveflow 看
到有人用 clang 前端传参数进去,大概长这样
clang++ um.cu -o um -Xclang -load -Xclang CUDAMemPass.so -Xclang
-plugin-arg-distance -Xclang 4 --cuda-gpu-arch=sm_61 -L
/usr/local/cuda/lib64/
这样确实是可以跑,不会有error,但是参数实际上却没有传进去 (print 出来是0)
想请问大家我 clang 的 command 是否有下错呢?
另外想请问有没有什麽无脑用 clang 编译 cuda 的方法,我现在都是 clang++ -v,再把
他手刻成 Makefile,但是就相当没有效率。
希望没有违反版规,有的话再麻烦提醒一下了,谢谢大家!
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 140.112.25.99 (台湾)
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/CompilerDev/M.1649747193.A.D80.html
1F:→ oToToT: 记得cmake设个compiler就能用clang编cuda了 04/14 18:12
2F:推 sorcerer1973: 你不会偷瞄最Flat的最终执行的指令行,直接拷贝,每 04/21 16:53
3F:→ sorcerer1973: 次都画葫芦编译就好,都不学,比较利根。 04/21 16:53