我有一些主机代码,其中包含SAL功能。 SAL函数用于处理大数据。我想在CUDA设备中调整相同的功能,并分析主机和设备的执行时间。但由于SAL功能适用于主机/ CPU,如何在GPU上允许这些功能,还是可以从GPU端调用SAL功能?
例如,
cvabsx((COMPLEX *)in, 2, out, 1, size, 0);
上述SAL函数计算复数的大小。现在我想在GPU方面进行调整。这该怎么做?或者是否有任何其他库比SAL执行得快得多?
答案 0 :(得分:1)
您不能在设备上使用为x86使用而编译的库(即仅用于主机代码,仅使用主机代码编译器)。
显然,诸如CUBLAS等许多GPU兼容库可以与GPU一起使用。但对于大多数普通的编译库,它们不能直接与设备代码中的GPU一起使用。
如果您可以访问库的源代码,那么(理论上)应该可以通过库源代码,并根据需要使用__host__
__device__
修饰函数,然后使用nvcc
编译器重新编译库源,以生成具有可在设备代码中使用的函数的版本。 (如果它是模板/头库,可能只需要修改库代码,然后重新编译应用程序。)
根据库的实现,这可能是一项非常复杂的任务。