linux - 在 OpenCL 中使用内存映射文件

标签 linux opencl gpu mmap virtual-memory

我使用内存映射 I/O(Linux 上的 mmap 调用)访问磁盘上的文件。

是否可以使用 CL_MEM_USE_HOST_PTR(只读)将此虚拟内存缓冲区传递给 OpenCL。这会带来性能提升吗?

我想避免将整个文件复制到主机内存中,而是让 OpenCL 内核控制操作系统加载/缓冲文件的哪些部分。

最佳答案

我认为这应该可行——您不应该以错误、崩溃或不正确的结果告终;它是否带来性能提升可能取决于硬件、驱动程序/CL 实现和访问模式。如果在许多情况下它没有太大的不同,我不会感到惊讶。我可以想象 GPU 驱动程序预故障并连接所有页面,以便将其映射到 GPU 的地址空间。

关于linux - 在 OpenCL 中使用内存映射文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47534882/

相关文章:

c++ - 在没有兼容硬件的情况下运行 OpenCL?

opengl - 更详细地了解缓冲区交换

linux - 允许 apache 访问文件夹但拒绝其他用户访问

c - fopen中的r和rb有什么区别

linux - 在linux上,使用NFS,open()命令是远程执行的吗?

即使使用 sudo 也无法从/sys/class/net/eth0/carrier 读取

c++ - 将缓冲区写入设备时发生 OpenCL 访问冲突

cuda - 具有分散段的分段缩减

c++ - 为什么我会收到 CL_MEM_OBJECT_ALLOCATION_FAILURE?

multithreading - 使用 GPU 进行并行 for 循环的最简单方法