【问题标题】:Using CUDA Optionally on Linux在 Linux 上选择使用 CUDA
【发布时间】:2017-10-17 03:54:57
【问题描述】:

我有一个用 C 编写的应用程序,它可以在多个平台上运行:Windows 和各种风格的 Unix。最重要的两个是 Linux,然后是 Windows。

其中一个核心算法可以从 CUDA 加速中受益。但是,如果系统不支持 CUDA(或者用户没有特别要求 GPGPU 加速),则一切都必须正常运行。

因此,我需要确保应用程序在正确的情况下尝试加载 CUDA 库。

在 Windows 上,延迟加载机制使这变得相当容易。

在 Linux 上是否有类似的简单机制来执行此操作?还是我必须经历与 dlopen() 相关的扭曲?

【问题讨论】:

  • 你可以静态链接到你需要的 cuda 库
  • Offtopic:显而易见的替代解决方案是避免使用 CUDA 并使用非供应商特定的 GPU 加速,例如OpenCL、OpenMP 或 OpenGL 计算着色器。当然,这些都有自己的缺点。

标签: c linux cuda


【解决方案1】:

你有两个选择,都完全有效:

  1. 正如您在问题中提到的,使用 dlopen 在运行时加载动态库
  2. 将 CUDA 工具包库静态链接到您的应用程序中。 NVIDIA 已经在几个主要的发布周期中为 linux 提供了静态版本的工具包库,并且完全支持静态链接。这种方法的缺点是应用程序大小。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-07-06
    • 1970-01-01
    • 2011-06-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-06-30
    相关资源
    最近更新 更多