【发布时间】:2015-07-19 10:37:55
【问题描述】:
情况是这样的;一组计算(用 C++ 编写),最好使用用户系统上可用的任何 GPU,或者如果不存在这样的 GPU,则使用他们的 CPU,其中该用户系统不是构建机器并且将是未知的(但相当标准的桌面)配置。
目前,我可以使用 Thrust 编写代码,但(除非我误解)在实际构建它时,目标已设置(广义上讲,Nvidia 或 CPU)并且二进制文件将仅使用 GPU 硬件用户的机器(否则甚至可能无法运行),如果它来自与构建二进制文件相同的 GPU 系列。
在一个神奇的理想世界中,我想要的是一个二进制文件,它将识别在其运行的机器上可用的 GPU(Nvidia、ATI、回退到普通 CPU)系列(如果有的话),并加以利用其中。必须构建三个单独的版本并确保每个用户都获得适合他们特定机器的正确版本是不可能的(目标是相当标准的桌面;Windows、Linux 和 Solaris - 不过让我们把它放在一边,因为有不同的构建这三个中的每一个都是完全可以接受的;目的是为这三个目标中的每一个提供一个二进制文件,以识别和使用可用的 GPU,无论是 Nvidia、ATI 还是普通 CPU)。
我一直在谷歌中输入一些有希望的术语,但尚未找到任何解决此问题的内容;据我所知,这是一个完全解决的问题,只是我没有输入正确的单词。
谁能告诉我这样做的标准方法是什么(如果有的话)?
编辑:删除了错误的推力信息,添加了有关最终目标硬件的注释
【问题讨论】:
-
ATI 没有推力。它是一个仅限 CUDA 的模板库。在 NVIDIA 平台上,您可以构建任意数量的 CUDA 架构,并且 GPU 架构选择是自动的,您无需执行任何操作
-
这个,nvidia-nsight问的问题是针对直接使用cuda函数的项目
-
这真是一个关于推荐异地资源(一种GPU编程语言/环境)的问题。
-
“这真是一个关于推荐异地资源的问题”天哪,是吗?我认为这是一个关于当前最佳实践是什么的问题。我可以自己找到大量关于 GPU 编程的场外资源。我找不到的是其他人如何管理针对多个最终用户系统的需求。