为了简化项目中的构建过程,我希望将多个源文件编译到设备PTX代码中,然后将所有这些模块放在一个.fatbin
文件中进行链接。
目前,我可以通过单独将每个文件编译到.ptx
,或者同时编译所有文件,同时使用--keep
保存中间文件,然后显式地将每个文件添加到一个加脂二进制文件中:
nvcc -c --keep mysource1.cu mysource2.cu ...
fatbinary --create="mysources.fatbin" --image3=kind=ptx,file=mysource1.ptx --image3=kind=ptx,file=mysource2.ptx ...
这是相当麻烦的,所以我想知道是否有一种更简单/更简洁的方式来这样做,也许在一个nvcc调用。我尝试过对多个源文件调用nvcc --fatbin --device-link
,但这似乎并没有将ptx代码保存在输出加脂二进制文件中(至少在使用cuobjdump
检查时没有这样做)。
发布于 2021-11-26 15:23:31
这里一种可能的方法是使用一个库。命令可以如下所示:
nvcc -gencode arch=compute_XX,code=sm_XX -gencode ... --lib -rdc=true -o libmy.a mysource1.cu ...
当您知道最终需要设备链接时,可以使用上面的命令。在这种情况下,当您在静态库中链接对象或最终可执行文件时,您将在以后指定设备链接步骤。
对于不需要设备链接的情况,只需省略-rdc=true
开关即可。
https://stackoverflow.com/questions/70096713
复制相似问题