我有一些包含SAL功能的主机代码。 SAL函数用于处理大数据。我想在CUDA设备中采用相同的功能,并分析主机和设备的执行时间。但是,由于SAL函数是用于主机/ CPU的,因此如何在GPU上允许它们,还是可以从GPU端调用SAL函数?
例如,
cvabsx((COMPLEX *)in, 2, out, 1, size, 0);
上面的SAL函数计算复数的大小。现在,我想在GPU端进行调整。这该怎么做?还是有其他比SAL执行速度更快的库?
最佳答案
您不能在设备上使用针对x86使用(即仅用于主机代码使用,仅使用主机代码编译器)进行编译的库。
显然,GPU兼容的库(例如CUBLAS和许多其他库)可以与GPU一起使用。但是对于大多数普通的编译库,它们不能直接与GPU一起用于设备代码中。
如果可以访问该库的源代码,则(理论上)应该可以遍历该库的源代码,并根据需要用__host__
__device__
装饰函数,然后使用以下方法重新编译该库的源代码: nvcc
编译器,以生成具有在设备代码中可用的功能的版本。 (如果它是模板化/标头库,则可能只需修饰库代码,然后重新编译您的应用程序即可。)
根据库的实现,这可能是一项非常艰巨的任务。
关于c - 是否可以在CUDA设备中使用SAL(科学算法库)?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/29115400/