是否可以在 CUDA 设备中使用 SAL(科学算法库)?
Is it possible to use SAL(Scientific Algorithm Library) in CUDA device?
我有一些包含 SAL 函数的主机代码。 SAL 函数用于处理大数据。我想在 CUDA 设备中调整相同的功能并分析主机和设备的执行时间。但是由于 SAL 函数是针对 host/CPU 的,GPU 如何允许这些函数或者是否可以从 GPU 端调用 SAL 函数?
例如,
cvabsx((COMPLEX *)in, 2, out, 1, size, 0);
上面的 SAL 函数计算复数的大小。现在我想在 GPU 端对此进行调整。这个怎么做?或者有没有比 SAL 执行速度更快的其他库?
您不能在设备上使用为 x86 使用编译的库(即纯粹用于主机代码使用,仅使用主机代码编译器)。
显然,GPU 兼容库(例如 CUBLAS 和许多其他库)可以与 GPU 一起使用。但是对于大多数普通的编译库来说,它们不能直接在设备代码中与GPU一起使用。
如果您可以访问库的源代码,那么(理论上)应该可以浏览库源代码,并根据需要用 __host__
__device__
修饰函数,然后使用 nvcc
编译器重新编译库源代码,以生成具有可在设备代码中使用的函数的版本。 (如果是 templated/header 库,可能只需修饰库代码,然后重新编译您的应用程序即可。)
根据库的实现,这可能是一项非常复杂的任务。
我有一些包含 SAL 函数的主机代码。 SAL 函数用于处理大数据。我想在 CUDA 设备中调整相同的功能并分析主机和设备的执行时间。但是由于 SAL 函数是针对 host/CPU 的,GPU 如何允许这些函数或者是否可以从 GPU 端调用 SAL 函数?
例如,
cvabsx((COMPLEX *)in, 2, out, 1, size, 0);
上面的 SAL 函数计算复数的大小。现在我想在 GPU 端对此进行调整。这个怎么做?或者有没有比 SAL 执行速度更快的其他库?
您不能在设备上使用为 x86 使用编译的库(即纯粹用于主机代码使用,仅使用主机代码编译器)。
显然,GPU 兼容库(例如 CUBLAS 和许多其他库)可以与 GPU 一起使用。但是对于大多数普通的编译库来说,它们不能直接在设备代码中与GPU一起使用。
如果您可以访问库的源代码,那么(理论上)应该可以浏览库源代码,并根据需要用 __host__
__device__
修饰函数,然后使用 nvcc
编译器重新编译库源代码,以生成具有可在设备代码中使用的函数的版本。 (如果是 templated/header 库,可能只需修饰库代码,然后重新编译您的应用程序即可。)
根据库的实现,这可能是一项非常复杂的任务。