我是opencl的新手。当内核在cpu设备上运行时,我对opencl功能有疑问。假设我们有一个在cpu设备上运行的内核,它可以从磁盘上的文件中读取。如果是,那怎么样?如果没有,那为什么不呢? 能否请您提供详细信息来源? 提前谢谢。
答案 0 :(得分:4)
它不能。仅仅因为并非每个OpenCL设备都有文件系统或磁盘。
答案 1 :(得分:1)
你做不到。 OpenCL正试图统一访问计算能力,文件系统依赖于操作系统。如果你想要这个功能,有线程(C ++ 11线程,pthread,...)或OpenMP应该能够处理这个,因为它只是CPU的东西。
答案 2 :(得分:0)
允许设备内核访问文件系统没有意义,因为文件系统访问的大多数语义基本上与设备内核的大规模并行性质不兼容。
考虑到您只询问CPU,有两种方法可以解决这个问题。
如果您打算使用OpenCL作为在CPU上进行多线程处理的方法,请考虑使用OpenCL调用的“本机内核”,它本质上只是在OpenCL上下文中调用的普通C函数;
< / LI>可能在GPU上运行的更通用的方法是mmap
要操作的文件,并将生成的指针传递给带有clCreateBuffer
标志的CL_USE_HOST_PTR