在 opencl 中使用 cpu 设备访问文件系统
accessing file system using cpu device in opencl
我是opencl的新手。当内核在 cpu device.Suppose 上 运行 时,我对 opencl 的功能有疑问 我们在 cpu 设备上有一个内核 运行,它可以从磁盘上的文件。如果是,那么如何?如果没有,那为什么不呢?
你能推荐一个详细信息的来源吗??
提前致谢。
不能。仅仅是因为并非每个 OpenCL 设备都有文件系统或磁盘。
你不能。 OpenCL 正试图统一访问计算能力和文件系统取决于 OS。如果你想要这个功能,有线程(C++11 线程,pthread,...)或者 OpenMP 应该能够处理这个,因为它是 CPU-only thing.
允许设备内核访问文件系统是没有意义的,因为文件系统访问的大部分语义本质上与设备内核的大规模并行性质不兼容。
考虑到您只询问 CPU。
,有两种方法可以解决此问题
如果您打算使用 OpenCL 作为在 CPU 上执行多线程的方式,请考虑使用 OpenCL 所谓的“原生内核”,它们本质上只是普通的 C 函数,在OpenCL 上下文;
一种可能在 GPU 上也适用的更通用的方法是 mmap
您要操作的文件,然后使用 [= 将结果指针传递给 clCreateBuffer
12=] 旗帜.
我是opencl的新手。当内核在 cpu device.Suppose 上 运行 时,我对 opencl 的功能有疑问 我们在 cpu 设备上有一个内核 运行,它可以从磁盘上的文件。如果是,那么如何?如果没有,那为什么不呢? 你能推荐一个详细信息的来源吗?? 提前致谢。
不能。仅仅是因为并非每个 OpenCL 设备都有文件系统或磁盘。
你不能。 OpenCL 正试图统一访问计算能力和文件系统取决于 OS。如果你想要这个功能,有线程(C++11 线程,pthread,...)或者 OpenMP 应该能够处理这个,因为它是 CPU-only thing.
允许设备内核访问文件系统是没有意义的,因为文件系统访问的大部分语义本质上与设备内核的大规模并行性质不兼容。
考虑到您只询问 CPU。
,有两种方法可以解决此问题如果您打算使用 OpenCL 作为在 CPU 上执行多线程的方式,请考虑使用 OpenCL 所谓的“原生内核”,它们本质上只是普通的 C 函数,在OpenCL 上下文;
一种可能在 GPU 上也适用的更通用的方法是
mmap
您要操作的文件,然后使用 [= 将结果指针传递给clCreateBuffer
12=] 旗帜.