gpt4 book ai didi

opengl - 多设备 OpenCL/OpenGL 环境

转载 作者:行者123 更新时间:2023-12-05 07:55:20 25 4
gpt4 key购买 nike

我目前正在 OpenCL 中编写烟雾模拟,我使用 OpenGL (freeglut) 来可视化烟雾。

我的电脑是华硕 Zenbook,配备 Intel i7 CPU 和 Intel HD 4000 GPU,它们都被 OpenCL“识别”(HD 4000 = CL_DEVICE_TYP_GPU & Intel i7 = CL_DEVICE_TYPE_CPU)并包含在我的设备列表中。两种设备都支持“cl_khr_gl_sharing”。

我正在设置 OGL/OCL 上下文及其属性,如下所示:

cl_context_properties props[] = 
{
CL_GL_CONTEXT_KHR, (cl_context_properties)wglGetCurrentContext(),
CL_WGL_HDC_KHR, (cl_context_properties)wglGetCurrentDC(),
CL_CONTEXT_PLATFORM, (cl_context_properties)m_platformID,
NULL
};
cl_device_id devices[32];
size_t size;
clGetGLContextInfoKHR_fn clGetGLContextInfo = (clGetGLContextInfoKHR_fn)clGetExtensionFunctionAddressForPlatform(m_platformID, "clGetGLContextInfoKHR");
clGetGLContextInfo(props, CL_DEVICES_FOR_GL_CONTEXT_KHR, 32 * sizeof(cl_device_id), devices, &size);
cl_uint deviceCount = (cl_uint)(size/sizeof(cl_device_id));

cl_context cntxt = clCreateContext(props, deviceCount, devices, NULL, NULL, &status);

但是 clCreateContext 函数返回 -33,这是“INVALID_DEVICE”的错误代码。在上面的代码中,我的“devicecount”变量变为等于 2,这应该意味着两个设备都与当前 GL 上下文相关联。

只有当两个设备中的任何一个分别传递时,创建上下文才有效,在这些情况下模拟运行良好(当然在 CPU 上非常慢)。

类似的问题是this一个,它已经得到回答,但老实说,我真的不明白答案。

所以,我的问题是:

是否可以使用多个 CL 设备在 OpenCL 和 OpenGL 之间创建共享上下文?

如果是的话..

我用来创建上下文的方法是否正确,或者是否有另一种方法可以使用多个设备设置 OCL/OGL 上下文?

最佳答案

是的,您可以创建具有一个 GL 设备和多个 CL 设备的上下文。如果相应供应商支持 inter-gpu 互操作,则每个 GL 设备都可以与任何 CL 设备进行互操作。

关于opengl - 多设备 OpenCL/OpenGL 环境,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29914774/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com