我有一个带有NVidia显卡的系统,并且我正在考虑使用openCL来取代openMP来完成一些小的CPU任务(感谢VS2010 making openMP useless)
因为我已经安装了NVidia的opencl SDK,所以clGetPlatformIDs()只返回一个平台(NVidia的),所以只返回一个设备( GPU)。
我是否还需要安装英特尔的openCL软件开发工具包才能访问openCL平台?
cpu平台不应该总是可用的吗?我的意思是,你怎么会没有CPU呢?
如何同时针对两个openCL SDK进行构建?
发布于 2012-03-29 03:55:13
你需要有一个提供CPU接口的SDK。nVidia没有,AMD和英特尔的SDK做到了;在我的例子中,英特尔的SDK的速度要快得多(大约是10倍),这可能是因为我的编程很糟糕。
运行程序不需要SDK,只需要运行时即可。在Linux中,每个供应商都会在/etc/OpenCL/vendors/*.icd中安装一个文件,其中包含要使用的运行时库的路径。它由您链接到(libOpenCL.so)的OpenCL运行时扫描,然后在查询特定平台上的设备时调用每个供应商的库。
在Linux中,图形处理器驱动程序会自动安装OpenCL运行时,英特尔运行时很可能会从软件开发工具包中单独下载,但当然也是软件开发工具包的一部分。
发布于 2012-04-29 05:51:50
今天我终于开始尝试做openCl开发,哇……这根本不是直截了当的。
有一个AMD sdk,有一个intel sdk,还有一个nvidia sdk,每个sdk都有自己的属性(可能只支持CPU和GPU,或者只支持特定的显卡?)
这样做可能有合理的技术原因,但我真的希望只有一个sdk,在编程时,也许你可以指定GPU / CPU任务,或者它可能会使用最有意义/执行得最好的任何资源。
我想是时候深入研究了……试着决定我是选择CPU还是GPU。我有一个漂亮的新的4000美元的alienware笔记本电脑,带有SLI显卡,但也有一个8核cpu,所以耶…我想我必须尝试几个sdk,看看哪种形式最适合我的需求?
我不确定我的应用程序的最终用户会怎么做……他们似乎不能通过拨动开关来使其在cpu或gpu上运行。
OpenCL领域确实需要一些帮助……
https://stackoverflow.com/questions/9912119
复制相似问题