Memory 我该如何增加“;“全局内存”;可用于英特尔CPU OpenCL驱动程序?

Memory 我该如何增加“;“全局内存”;可用于英特尔CPU OpenCL驱动程序?,memory,opencl,cpu,intel,amd-processor,Memory,Opencl,Cpu,Intel,Amd Processor,我的系统有32GB的ram,但英特尔OpenCL实现的设备信息显示“CL_设备_全局_内存大小:2147352576”(~2GB) 我的印象是,在CPU平台上,全局内存是“普通”ram,因此OpenCL CPU实现应该可以使用大约30+GB的内存。(当然,我使用的是64位版本的SDK) 是否有某种秘密设置告诉英特尔OpenCL驱动程序增加全局内存并使用所有系统内存 已解决:通过将所有内容重新编译为64位使其正常工作。看起来很愚蠢,但我认为OpenCL的工作原理与OpenGL类似,在OpenGL中

我的系统有32GB的ram,但英特尔OpenCL实现的设备信息显示“CL_设备_全局_内存大小:2147352576”(~2GB)

我的印象是,在CPU平台上,全局内存是“普通”ram,因此OpenCL CPU实现应该可以使用大约30+GB的内存。(当然,我使用的是64位版本的SDK)


是否有某种秘密设置告诉英特尔OpenCL驱动程序增加全局内存并使用所有系统内存

已解决:通过将所有内容重新编译为64位使其正常工作。看起来很愚蠢,但我认为OpenCL的工作原理与OpenGL类似,在OpenGL中,您可以轻松地从32位进程中分配8GB纹理内存,驱动程序可以为您处理细节(当然,您不能在一次扫描中分配8GB,但可以传输多个纹理,这些纹理的总和超过4GB)


我仍然认为,将OpenCL内存抽象限制在进程的地址空间(至少对于intel/amd驱动程序而言)是令人恼火的,但可能有一些微妙的细节或性能权衡,为什么选择此实现。

这可能是一个愚蠢的问题,您使用的是64位操作系统吗?我的8GB i5显示了Intel OpenCL SDK的正确数量。当然,我使用的是64位Windows 7。为了排除英特尔特定的驱动程序错误,我安装了AMD OpenCL SDK,它也只显示~2GB。至少知道使用完整的地址空间是很好的,但是为什么我不能使用超过2GB的地址空间对我来说仍然是个谜。你的处理器版本是什么?我的是第二代或第三代i5-2400。对不起,另一个愚蠢的问题是,当使用glGetDeviceInfo时,您传递的是无符号long而不是uint或int吗?如果您解决了问题,您应该写一个答案并接受它来传达该答案,而不是在问题中写解决方案