有没有一种方法可以在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