Re: [問題] 利用clang前端傳遞參數給後端opt Pass
※ 引述《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://www.ptt.cc/bbs/CompilerDev/M.1649905114.A.4DF.html
推
04/14 16:37,
2年前
, 1F
04/14 16:37, 1F
討論串 (同標題文章)
本文引述了以下文章的的內容:
完整討論串 (本文為第 2 之 2 篇):