小编LoR*_*StE的帖子

[OpenCL]最近邻居使用欧氏距离

我正在使用OpenCL来查找两组3D点之间的最近邻居.

最近邻:对于DataSet中的每个点(x,y,z),我必须找到模型中最近的一个.平方距离=(Ax-Bx)^ 2 +(Ay-By)^ 2 +(Az-Bz)^ 2

这是我到目前为止所做的:

struct point {
int x;
int y;
int z;
};

__kernel void 
nearest_neighbour(__global struct point *model,
__global struct point *dataset,
__global int *nearest,
const unsigned int model_size)
{
    int g_dataset_id = get_global_id(0);

    int dmin = -1;
    int d, dx, dy, dz;

    for (int i=0; i<model_size; ++i) {
        dx = model[i].x - dataset[g_dataset_id].x;
        dx = dx * dx;

        dy = model[i].y - dataset[g_dataset_id].y;
        dy = dy * dy;

        dz = model[i].z - dataset[g_dataset_id].z; …
Run Code Online (Sandbox Code Playgroud)

c c++ nearest-neighbor opencl

8
推荐指数
1
解决办法
3262
查看次数

限制OpenCL使用的计算单元数

我需要限制opencl应用程序使用的计算单元数.我在具有8个计算单元的CPU上运行它,我已经看到了CL_DEVICE_MAX_COMPUTE_UNITS.

我使用OpenCL获得的执行时间远远少于没有OpenCL的正常算法的8倍(比600倍快).我想只使用1个计算单元,因为我需要使用OpenCL优化的相同代码来查看真正的改进.

它仅用于测试,真正的应用程序将继续使用所有计算单元.

谢谢你的帮助

core opencl

1
推荐指数
1
解决办法
1357
查看次数

标签 统计

opencl ×2

c ×1

c++ ×1

core ×1

nearest-neighbor ×1