我想使用一些外部库(http://trac.osgeo.org/geos/)对几何对象(GIS)执行一些分析任务。我想在Cuda上使用OpenCL执行这些任务,这样我就可以使用GPU的并行功能在大量数据上并行执行这些任务。所以我的问题是:
我可以使用这些库编写内核吗?
此外,我如何将这些库的复杂数据结构的对象作为参数传递给内核/(具体如何创建这些复杂对象的缓冲区?
答案 0 :(得分:8)
OpenCL计划主要由两部分组成
由compile/setup the kernel的主机代码决定,从任何库/源获取/设置数据,将其转换为OpenCL内核允许的相应标量,向量或其他数据类型,{{3}处理数据并将结果从计算设备返回给主机(如果需要),然后将这些简单数据类型转换回其他代码消耗所需的任何形式。
所以没有 - 您无法直接在内核中使用常规C ++库 。但是你可以在主机代码中做任何你想做的事。
答案 1 :(得分:6)
不,您不能在OpenCL内核中使用外部库。请记住,OpenCl应用程序运行时需要编译任何内核,因为它无法事先知道它运行的平台。