GPU编程
GPU 编程有多种选择。最广泛使用的莫过于CUDA,它是 Nvidia 的产品。它的流行显然与 Nvidia GPGPU 的普及息息相关。CUDA 本质上是 C++ 的扩展:C++ 程序中的额外结构和关键字可以在 GPGPU 上执行部分代码。Fortran 也有一个类似的扩展。
第二个最受欢迎的选项是OpenCL,它被设计为独立于供应商。这听起来是个不 最近的手机号码数据 的功能,但重要的是要意识到 CUDA 是 Nvidia 的产品,因此针对其 GPGPU 进行了优化。所以,如果你实际上不打算迁移到其他供应商的 GPGPU,那么 CUDA 仍然是更好的选择。
在许多情况下,:从 GPGPU 提供的低级并行性到多核 CPU 提供的任务并行性。这类应用程序通常会将 CUDA 或 OpenCL 与OpenMP或MPI等更高级的框架相结合。这也可以用于在多个 GPGPU 上运行代码,以获得更高的并行度并规避 GPGPU 的内存限制。
解决平台依赖性和多级问题的一种优雅方法是使用OCCA和Kokkos等框架。这些框架是应用程序编程接口 (API),允许通用并行表达式,然后将其编译到底层平台。在许多情况下,这可以为您提供独立于平台的代码,这些代码在所有类型的 GPGPU 上都能表现良好,即使它永远无法超越直接在 CUDA 中构建的高度优化的计算内核。