【发布时间】:2014-10-06 04:20:27
【问题描述】:
假设我有如下代码:
//MyFile.h
void MyFunction;
//MyFile.cpp
#include "MyFile.h"
void MyFunction()
{
float foo = sqrtf(85.3);
}
现在,我使用的实际函数更复杂,但重点是它们使用了 sqrtf()、sin() 等函数。
我想在主机和内核中都使用这个函数,但我不想定义它两次,因为这似乎是一种不好的做法。现在我尝试使用方法 clCreateProgramWithSource() 将“MyFile.h”传递到我的 cl_program。
如果我在设备上按原样运行它,它会正常工作,因为 openCL 内置了数学函数。但是,如果我希望它在主机上运行,我需要包含 cmath 或其他库来定义 sqrt、sin 等。但是如果我包含 cmath 以便它在主机上运行,它将不再能够在设备上运行,因为 openCL 不能包含/导入 cmath。
所以我似乎无法找到一种方法来定义它一次并在两个地方使用它。如果主机不依赖 cmath 来获取这些数学函数,那将不是问题,但目前我不知道该怎么做。
【问题讨论】:
标签: c++ math include opencl gpu