parallel-processing - 如何编写可在任何 GPU 上运行的 GPU 并行化程序?
问题描述
我曾与 Halide 和 Cuda 合作过。但是,像 CUDA 这样的技术只能在 NVIDIA GPU 上运行。OpenCL 也可以在 AMD 卡上运行,但据我所知,还没有真正的一体化解决方案。
但是像 Matlab 这样的软件可以在任何操作系统上运行,与其中的 GPU 无关。我相信 Matlab 使用并行化技术来加速矩阵的计算(或者至少我希望如此)。
那么,如何编写一款可以使用 GPU 进行并行计算的软件,而无需为每种可能的 GPU 类型编写单独的软件呢?或者这实际上是唯一的出路?
我不打算在短期内编写这样的应用程序,我只是在参加了有关该主题的课程后变得好奇。
解决方案
您似乎对 matlab 支持任何将 cuda 用于 nividea gpus 的 gpu 是错误的,
请参阅:https
://www.mathworks.com/solutions/gpu-computing.html
和:https ://www.mathworks.com/matlabcentral/答案/336084-will-matlab-support-amd-gpu-in-future
回答你的问题
似乎有两个选项是:
OpenCL:https ://www.khronos.org/opencl/
DirectCompute/compute-shader:https ://docs.microsoft.com/en-us/windows/win32/direct3d11/direct3d-11-advanced-stages-compute-shader
OpenCL 是跨平台的,而 DirectCompute 仅是 Windows 并且基于 DirectX 构建
推荐阅读
- c# - IIS 8.5 事件代码 4009 Viewstate 使用应用程序池标识失败
- ansible - Ansible Tower API 不接受令牌
- java - Spring Boot REST Hibernate - 创建用户
- ios - 将 JSON 数据解析为 Swift
- c# - 事件 AppDomain.AssemblyResolve 未在 COM 服务器上触发
- javascript - 包含对象的 JSON 的迭代
- sql - 将计算值存储在数据库中是个坏主意吗?
- c++ - Boost Interprocess:托管共享内存错误
- maven - lein jar 包含 project.clj 和 pom.xml
- c# - 从父 .xaml 文件中引用 resourceDictionary