作者mshockwave (夏克维夫)
看板CompilerDev
标题Re: [问题] 利用clang前端传递参数给後端opt Pass
时间Thu Apr 14 10:58:31 2022
※ 引述《unimaybe (unimaybe)》之铭言:
: 各位好
: 最近在写 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 是否有下错呢?
因为 -plugin-arg-<argument name> 不是用来传参数给 LLVM Pass plugin
而是用来传参数给 Clang plugin
Clang 其实有好几种 plugin: AST consumer plugin, custom pragma plugin,
custom attribute plugin
如果以你的例子 要传参数给 LLVM plugin, 可以试试
-Xclang -load -Xclang MyPass.so
-Xclang -mllvm -Xclang -my-fancy-arg
另外看来你的例子里用的是旧的PassManager的LLVM Pass
虽然现在依然可以用 但未来LLVM会逐渐phase out这种Pass喔
: 另外想请问有没有什麽无脑用 clang 编译 cuda 的方法,我现在都是 clang++ -v,再把
https://llvm.org/docs/CompileCudaWithLLVM.html
我个人倒是没有什麽用clang编CUDA相关经验啦 但上面这个连结可以参考一下
: 他手刻成 Makefile,但是就相当没有效率。
: 希望没有违反版规,有的话再麻烦提醒一下了,谢谢大家!
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 169.234.228.237 (美国)
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/CompilerDev/M.1649905114.A.4DF.html
1F:推 unimaybe: 原来如此,了解了!非常谢谢你的回覆~ 04/14 16:37