在OpenGL上实现OpenCL

在OpenGL上实现OpenCL,opengl,opencl,Opengl,Opencl,我已经看到OpenCL被CPU实现和一些GPU实现广泛支持 对于有GPU但没有GPU实现的情况,是否可以使用OpenGL实现OpenCL 也许大多数操作都可以很好地映射到GLSL片段着色器,甚至计算着色器 如果这是可行的,从哪里开始?是否有任何可以启动的“最小”CPU OpenCL实现 对于有GPU但没有GPU实现的情况,是否可以使用OpenGL实现OpenCL 可能的:是的,当然。每个图灵机都可以模仿任何其他图灵机 可行:OpenGL实现的GLSL编译器已经是primadonnas,每个实现的

我已经看到OpenCL被CPU实现和一些GPU实现广泛支持

对于有GPU但没有GPU实现的情况,是否可以使用OpenGL实现OpenCL

也许大多数操作都可以很好地映射到GLSL片段着色器,甚至计算着色器

如果这是可行的,从哪里开始?是否有任何可以启动的“最小”CPU OpenCL实现

对于有GPU但没有GPU实现的情况,是否可以使用OpenGL实现OpenCL

可能的:是的,当然。每个图灵机都可以模仿任何其他图灵机

可行:OpenGL实现的GLSL编译器已经是primadonnas,每个实现的编译器的行为略有不同。OpenGL本身有大量的启发式方法来选择代码路径。在OpenGL+GLSL上安装一个临时的OpenCL将是一个非常痛苦的练习

必需的:绝对不是:对于每一个具有实际支持OpenCL所需功能的GPU,驱动程序无论如何都支持OpenCL,所以这是一个没有争议的问题

对于有GPU但没有GPU实现的情况,是否可以使用OpenGL实现OpenCL

可能的:是的,当然。每个图灵机都可以模仿任何其他图灵机

可行:OpenGL实现的GLSL编译器已经是primadonnas,每个实现的编译器的行为略有不同。OpenGL本身有大量的启发式方法来选择代码路径。在OpenGL+GLSL上安装一个临时的OpenCL将是一个非常痛苦的练习


必需:绝对不是:对于每个具有实际支持OpenCL所需功能的GPU,驱动程序无论如何都支持OpenCL,因此这是一个没有争议的问题。

OpenCL对浮点操作的精度有一些非常明确的要求。GLSL的要求要宽松得多。因此,即使您在OpenGL之上实现了OpenCLAPI,您也永远无法获得相同的行为


哦,如果你开始不这么想,Vulkan在这方面也没有更好。

OpenCL对浮点运算的精度有一些非常明确的要求。GLSL的要求要宽松得多。因此,即使您在OpenGL之上实现了OpenCLAPI,您也永远无法获得相同的行为


哦,如果你开始不这么想,Vulkan在这方面也没有更好。

你很难找到一个GPU具备OpenCL所需的功能,但是驱动程序没有实现OpenCL。这不是问题。这些gpu的管道很少,两个内核上的MMX/SSE在性能/工作效率方面可能会更好。你很难找到一个具备OpenCL所需功能的gpu,但驱动程序没有实现OpenCL。这不是问题。那些gpu的管道很少,两个内核上的MMX/SSE在性能/工作比方面可能更好。简言之:如果gpu没有OpenCL驱动程序,那么将其用于OpenCL任务将不会非常有用?@dronus:的确如此。但这样做的实际威慑力是,这将是一场巨大的噩梦。您必须实现一个transpiler,OpenGL主机代码生成器,可能作为JIT实现;你必须处理上下文状态管理等问题。简言之:如果GPU没有可用的OpenCL驱动程序,那么在OpenCL任务中使用它就没有多大用处了?@dronus:的确如此。但这样做的实际威慑力是,这将是一场巨大的噩梦。您必须实现一个transpiler,OpenGL主机代码生成器,可能作为JIT实现;您必须处理上下文状态管理等等。