c - 可以在CUDA设备中使用SAL(科学算法库)吗?

标签 c cuda gpu

我有一些包含 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__ 修饰函数code> 根据需要,然后使用 nvcc 编译器重新编译库源代码,以生成具有可在设备代码中使用的函数的版本。 (如果它是模板/ header 库,则可能只需修饰库代码,然后重新编译您的应用程序即可。)

根据库的实现,这可能是一项非常复杂的任务。

关于c - 可以在CUDA设备中使用SAL(科学算法库)吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29115400/

相关文章:

objective-c - C 预处理器确定是否在单元测试中

c - 带 cuda c 的盒式过滤器

C++:升级到 GTX970 后 cv::gpu::GpuMat::upload 出现长时间延迟

c - 在 C 中,为什么程序无法识别第二个 if 语句或大写 char 变量?

c - 用C读取和写入二进制文件

c - 声明结构数组时出错

c++ - 指定流的内核启动,但具有默认的共享内存大小

arrays - 用于数组处理的 GPU cuda 代码,摘要

gpu - CPU和GPU与Theano的不同结果

python - 在 keras 上使用 multiple_gpu_model - 导致资源耗尽