我如何在OpenCL中插入一组预先计算的函数
How can I interpolate a set of precomputed functions in OpenCL?
我正在使用OpenCL内核,我需要使用相关的勒让德多项式。
这是一组相当难计算的多项式,以整数n和m阶为索引,并接受实参数。实际多项式的细节是无关紧要的,因为我有一个(缓慢的)主机端函数可以生成它们,但是内核侧函数需要看起来像这样:
float legendre(int n, int m, float z)
{
float3 lookupCoords;
lookupCoords.x = n;
lookupCoords.y = m;
lookupCoords.z = z;
//Do something here to interpolate Z for a given N and M...
}
我想沿Z轴进行插值,但n轴和m轴只有最近邻,因为它们只定义为整数值。Z的一个好处是它只在-1和1之间定义,所以它看起来已经很像一个纹理坐标了。
我如何在OpenCL中使用采样器和查找表来完成此操作?
我的第一个想法是尝试使用一个3D纹理填充预先计算的订单,但我只想沿着一个维度(实际或Z参数)插值,我不确定这在OpenCL c中会是什么样子。
在OpenCL 1.1中使用read_imagef
与image3d_t
作为第一个参数,sampler_t
与CLK_FILTER_LINEAR
创建第二个参数,最后float4 coord
用于第三个参数,其中包含要读取的坐标。
为了只沿一个轴进行插值,让该坐标的值为任意浮点值,但使其他两个坐标为floor(value) + 0.5f
。这将使它们不会插入。像这样(只插入z):
float4 coordinate = (float4)(floor(x) + 0.5f, floor(y) + 0.5f, z, 0.0f);
在OpenCL 1.2中,你可以使用图像数组,但我不确定它是否会更快,NVIDIA不支持Windows上的OpenCL 1.2。
相关文章:
- 在 c++ 中拥有一组结构的正确方法是什么?
- 有哪些有效的方法可以消除一组 100 万个字符串>重复数据?
- 程序以使用 C++ 中的 while 循环查找一组数字的最小值
- 一组值的零开销下标运算符
- 使用一组结构,避免在一组结构中出现重复的结构
- CMake:我们可以为一组不形成可执行文件或库的特定文件指定包含目录吗?
- 合并一组模板专用化
- 如何更好地检查两个 char 变量是否在一组值中?
- C++有没有办法强制重写一组方法,如果其中一个方法在子类中具有重写?
- 给定一个枢轴点,按照它们与枢轴点构成的角度递增顺序对一组点进行排序
- 如何从一组变量中查找最低值
- 如何根据对的第二个元素对 STL c++ 中的一组对进行排序?
- 如何通过查找迭代器结果分配给一组对的元素
- 使用标准库或Boost库从一组数据中计算直方图
- 计算一组
- 在高性能计算中更好的做法是:将数据结构传递到一个函数或一组变量中
- 计算一组关系的整数映射的更有效的算法
- 我如何在OpenCL中插入一组预先计算的函数
- 逻辑错误:平均质心计算不正确,无限执行,'entries '函数 - K 表示一组点的聚类,以C++为单位
- c++风格的函数签名,用于计算一组值的标量