小编Jos*_* P.的帖子

C CUDA 内核的 PtrStepSz(GpuMat) 数组

我正在尝试使用 CUDA 内核内的 GpuMats 数组的信息修改 GpuMat。
为了修改它,我发送 GpuMat 并将其转换为内核中的 PtrStepSz,如下所示:

__global__ void func(cuda::PtrStepSz<float> X)
{//...
}
int main()
{//...
    GpuMat X;
    func<<<blocks, threads>>>(X);
}
Run Code Online (Sandbox Code Playgroud)

工作正常...现在我正在尝试使用 PtrStepSz 数组的信息...我一直在尝试类似的方法:

__global__ void func2(cuda::PtrStepSz<float> arr[])
{//...
}
int main()
{
    cuda::PtrStepSz<float> *d_arr;
    cudaMalloc((void**)&d_arr, sizeof(cuda::PtrStepSz<float>)*N );
    cuda::GpuMat mats[N];
    Mat O = Mat::ones(size, size, CV_32FC1);
    for (int i = 0; i < N; i++){
      mats[i].upload(O);
      d_arr[i] = mats[i];
    }
    func2<<<blocks, threads>>>(d_arr);
    //...
}
Run Code Online (Sandbox Code Playgroud)

这不起作用...甚至初始化部分也不行(我想这是因为我无法从CPU修改GPU内容)...关于如何完成我需要的任何想法?谢谢你的帮助

c++ opencv cuda gpu

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

标签 统计

c++ ×1

cuda ×1

gpu ×1

opencv ×1