【问题标题】:Develop OpenCL application without GPU support on Laptop?在笔记本电脑上开发不支持 GPU 的 OpenCL 应用程序?
【发布时间】:2014-02-21 14:53:24
【问题描述】:

我是 OpenCL 新手,想开发一个可移植的独立于硬件的 OpenCL 应用程序。 根据官方website,我的笔记本电脑上有 ATI Radeon 7670m,它支持 OpenCL 1.1。 但是,此 GPU 未在 APP SDK 系统要求site 中列出。 我有兴趣使用 OpenCL 仅为 GPU 而不是 CPU 进行开发。 那么有什么办法可以做到这一点吗?

【问题讨论】:

  • 你有一个支持 OpenCL 的 GPU,你有 SDK,你的问题到底是什么?您可以简单地开始使用它! SDK/代码不会说“嘿,这个GPU未知,我不会用它”。事实上,您可以在 nVIDIA 或 Intel 设备中使用 AMD SDK。
  • @DarkZeros 感谢您的回复。好吧,如果是这种情况,那么为什么他们将这些设备列为系统要求。它还说它需要最新的催化剂控制中心。 nVIDIA 设备显然没有 CCC。因此,根据您的建议,这是否意味着信息是旧的/不正确的?
  • 那些不是“要求”更多的是指导方针。如果您的 GPU 支持它,那么您可以使用它,即使网站没有明确说明。
  • 好的... AMD 把我搞糊涂了:P 你能把它作为一个答案,以便我可以将其标记为正确吗?

标签: c++ c opencl


【解决方案1】:

我猜,网站上的信息已经过时了。 7670 肯定是兼容 OpenCL 的。事实上,几乎所有 5xxx 系列及更新的卡都可以运行 OpenCL。

【讨论】:

  • 7670M 支持 OpenCL 1.1 和 OpenGL 4.2 但@Cool_Coder 需要其他信息。他只想使用 OpenCL 开发 GPU。
  • 不明白。 TS 想开发 gpgpu 应用程序。提供标题和库,卡兼容 - 没有障碍。
  • 使用 OpenCL,您可以选择上下文。 OpenCL 在此上下文中工作(创建内存、编译和运行程序)。一个上下文可以有更多的设备/外围设备,例如 CPU 或 GPU 设备。您可以使用 CL_DEVICE_TYPE_CPU 或 CL_DEVICE_TYPE_GPU 设置设备的上下文。
  • @RomanArzumanyan 正如我在问题中提到的,我知道我的 GPU 支持 OpenCL 1.1。我的问题是我是否可以在上面开发 OpenCL 应用程序?这是因为 AMD 网站说我不能。你能澄清我的疑问吗?谢谢...
  • 是的,你可以开发。最新的标准是 1.2,但 OpenCL 1.1 也可以。许多卡都受到 v 1.1 支持的限制,所以这个版本被广泛使用。
【解决方案2】:

使用 OpenCL 上下文,您可以选择用于开发的设备(例如,CPU 或 GPU 设备),在您的情况下 CL_DEVICE_TYPE_GPU

cl::Context context(CL_DEVICE_TYPE_GPU, cprops, NULL, NULL, &err);

例如,来自 AMD 官方文档:

int main(void)
{
    cl_int err;
    cl::vector< cl::Platform > platformList;
    cl::Platform::get(&platformList);
    checkErr(platformList.size()!=0 ? CL_SUCCESS : -1, "cl::Platform::get");
    std::cerr << "Platform number is: " << platformList.size() << std::endl;std::string platformVendor;
    platformList[0].getInfo((cl_platform_info)CL_PLATFORM_VENDOR, &platformVendor);
    std::cerr << "Platform is by: " << platformVendor << "\n";
    cl_context_properties cprops[3] = {CL_CONTEXT_PLATFORM, (cl_context_properties)(platformList[0])(), 0};
    cl::Context context(CL_DEVICE_TYPE_GPU, cprops, NULL, NULL, &err);
    checkErr(err, "Conext::Context()"); 
}

【讨论】:

  • 感谢您的信息。我的困惑是关于我的硬件的 SDK 可用性。我可以在说 nVIDIA 硬件上使用 AMD SDK 进行 OpenCL 开发吗?如果是这样,那么我的硬件也不应该有任何问题。如果我错了,请纠正我。
  • 你的硬件没问题。在 AMD 开发者中心论坛上阅读此主题:devgurus.amd.com/thread/162244
  • @Cool_Coder 您继续为您的硬件使用 AMD App SDK,它肯定会找到您的设备。无论硬件如何,您都可以选择任何 SDK(英特尔、AMD 或 NVIDIA),唯一无法在交叉选择中获得的是特定供应商提供的特定于硬件的附加扩展。
  • 感谢 Sagar 帮了大忙。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-01-25
  • 1970-01-01
  • 2019-08-21
  • 1970-01-01
  • 2020-09-27
  • 1970-01-01
相关资源
最近更新 更多