Gpu API call <misaligned adress>

asked 2016-09-21 09:42:37 -0500

Serge gravatar image

Hi erverybody, I have a little question, which I hope you can help me with:

I just started working with Cuda over OpenCV. As a part of my algorithm I need to calculate the Histogram of a certain region around each pixel.

So, I upload my image (1600*1600) to the gpu memory via

gpu_MainImage = new GpuMat();

Then, for every Pixel, that is far away from the border to have enough space around him, I call:

inline vector<float>* m_Histogram(const GpuMat *tmpGpuMat, const Range *myRowRange, const Range *myColRange)
    GpuMat GpuDest;
    GpuMat pgu_partImage(*tmpGpuMat, *myRowRange,*myColRange);


    Mat* tmpMat = new Mat();*tmpMat);
    vector<float> *returnVector = new vector<float>(*tmpMat);
    normalize(*returnVector, *returnVector, 0, 1, NORM_MINMAX);

    return returnVector;

This works fine for the first pixel, but crashes for the second pixel, saying:

OpenCV Error: Gpu API call <misaligned adress=""> in hist::histogram256, file E:/....../src/cuda/, line 106

Now, I kind of understand, that the adress of every object has to be a multiple of 8, but I dont know how to make sure of that. Can someone explain to me why the error occurses and how I can fix it?

edit retag flag offensive close merge delete