我希望能够在 NVidia 上以 GPU 模式运行我的软件,并在 ATI 或 Intel 上以 CPU(软件)模式运行我的软件。我怎样才能做到这一点?
这与 PhysX 的工作原理相同。
目前我在 ATI 卡机器上收到一个错误,指出未找到 nvcuda.dll。
请不要建议 OpenCL。 这个问题和我的类似。但是我不能接受 OpenCL 的答案。
我在 Windows 7 + Visual Studio 2008 上
将其转换为答案:
有一个名为 GPU Ocelot 的软件可以确定在运行时运行 gpu 代码的硬件:http ://code.google.com/p/gpuocelot/
通过 Ocelot 运行所有呼叫,您应该一切顺利。
从主页:
Ocelot是一个模块化的异构系统动态编译框架,为CUDA程序提供各种后端目标,为PTX虚拟指令集提供分析模块。Ocelot 目前允许 CUDA 程序在 NVIDIA GPU、AMD GPU 和 x86-CPU 上全速执行,无需重新编译。
现在有在非 NVidia 硬件上运行 CUDA 的举措,例如 Otoy:http: //venturebeat.com/2016/03/09/otoy-breakthrough-lets-game-developers-run-the-best-graphics-software -跨平台/
本质上,它将 CUDA 调用转换为其他后端(Metal、Vilkan、DirectX、OpenGL),以允许为 CUDA 编写的应用程序在一系列平台上运行。目前尚不清楚是否可以简单地将他们的 nvcuda.dll 放在正确的位置,从而立即让您的应用程序运行,或者开发人员是否必须在部署软件之前进行更改。
到目前为止,还没有公开发布 afaik。