我是OpenCL的新手.
我有一个使用模板的算法.它在OpenMP并行化方面运行良好,但现在数据量已经增长,处理它的唯一方法是重写它以使用OpenCL.我可以轻松地使用MPI为集群构建它,但类似特斯拉的GPU比集群便宜得多:)
有没有办法在OpenCL内核中使用C++模板?
是否有可能以某种方式通过C++编译器或某些工具扩展模板,然后使用如此改变的内核函数?
编辑.解决方法的想法是以某种方式从模板中的C++代码生成与C99兼容的代码.
我找到了一个关于Comeau的信息:
Comeau C++ 4.3.3是一个完整而真实的编译器,可执行完整的语法检查,完整的语义检查,完整的错误检查以及所有其他编译器职责.输入C++代码被转换为内部编译器树和符号表,看起来不像C++或C.同样,它生成一个内部专有的中间形式.但是,Comeau C++ 4.3.3不是使用专有的后端代码生成器,而是生成C代码作为输出.除了C++的技术优势之外,Comeau C++ 4.3.3等产品的C生成方面也被吹捧为C++成功的原因,因为C编译器的普遍可用性使其能够被带到大量平台.
C编译器仅用于并且仅用于获得本机代码生成.这意味着Comeau C++专为与各个平台上的特定C编译器一起使用而定制.请注意,要求剪裁必须由Comeau完成.否则,生成的C代码没有意义,因为它绑定到特定平台(其中平台至少包括CPU,OS和C编译器),此外,生成的C代码不是独立的.因此,它不能单独使用(请注意,这在使用Comeau C++时是技术和法律要求),这就是为什么通常没有选项来查看生成的C代码:它几乎总是无用的和编译过程包括其代,应被视为翻译的内部阶段.