为什么有些OpenCL示例用C++而不是C语言编写?

ska*_*tek 0 c c++ opencl

免责声明:作者处于初学者级别的C/C++.

维基百科说"OpenCL包含一种用于编写内核的语言(基于C99)".

但是如果你看一下OpenCL编程指南一书中的任何代码示例,你会发现除了内核.cl文件外,总会有一个.cpp文件(甚至很少).

("尽管本书中描述的许多示例应用程序都是使用编程语言C++开发的,但我们专注于OpenCL C API来控制OpenCL组件.")

这是否意味着内核是用类C语言编写的,而所有其他东西(如内存对象管理)都是用C++编写的?为什么一切都不是用C语言编写的?C++绑定不会引入开销吗?

Fre*_*Foo 6

这是否意味着内核是用类C语言编写的,而所有其他东西(如内存对象管理)都是用C++编写的?

OpenCL本身是C99的扩展,所以.cl文件都写在那里.您必须检查C++文件中的内容以查看其中实现的内容.

为什么一切都不是用C语言编写的?

作者可能会发现C++更方便.

C++绑定不会引入开销吗?

不,因为C++语言标准中定义的C/C++桥可以实现几乎零开销.它可能取决于编译器,但通常,当你从C++调用C函数时,它就像从C调用函数一样便宜.C++本身遵循C的"零开销"理念:它的高级(与C相比)特征是没有钱,但是你没有为你不使用的东西买单.