有沒有一種方法可以在llvm中使用靜態分析,我可以找出一個變量是否是其他變量的特定函數?例如:在cuda程序中,我想查找給定的變量tid
,它是否存儲全局線程ID或不是?LLVM:找出變量是否是其他變量的函數
int tid = blockIdx.x * blockDim.x + threadId.x;
編輯:我想,既然我可以寫一通,其分析程序,並查看是否有任何分歧或數組訪問基於此全局ID單獨,而不是像塊標識或局部的threadId其他值。我試圖找出更改cuda程序的gridDim,blockDim不會更改程序輸出的情況,例如向量添加,我可以使用gridDim 128,blockDim 4或gridDim 8,blockDim 64。不受影響。 Iam在llvm中這樣做是因爲我試圖使用一個名爲ocelot的編譯框架,它將cuda轉換爲x86。
謝謝,但我不明白它是如何指定的。任何澄清是必需的?我需要在字節碼級應用通行證。 – excray
在這種情況下,提供您希望能夠分析的示例LLVM源代碼(如LLVM ASM)可能會更有幫助。 「發現」也是模糊的......你想用這種分析做什麼?爲什麼它必須在字節碼級別?這個作業有沒有機會? – Gian