Problem with cv::gpu::integral (Bug #866)


Added by Michal Kottman about 14 years ago. Updated about 14 years ago.


Status:Done Start date:
Priority:High Due date:
Assignee:Vladislav Vinogradov % Done:

0%

Category:gpu (cuda)
Target version:-
Affected version: Operating System:
Difficulty: HW Platform:
Pull request:

Description

I consistently receive the following error while running the 'surf_keypoint_matcher_gpu' example, but also happens in other code which calls cv::gpu::integral:

NCV CUDA Assertion Failed: cudaError_t=9, file=C:/work/p4_2006/sw/gpgpu/NPP_staging/npp/image/IntegralImage.cu, line=177

NPP Assertion Failed: NcvStat=-24, file=C:/work/p4_2006/sw/gpgpu/NPP_staging/npp/image/IntegralImage.cu, line=276

NPP Assertion Failed: NcvStat=-24, file=C:/work/p4_2006/sw/gpgpu/NPP_staging/npp/image/IntegralImage.cu, line=430

OpenCV Error: Npp Api call (NPP_TEXTURE_BIND_ERROR [Code = -24]) in unknown function, file ..\..\..\opencv\modules\gpu\src\imgproc_gpu.cpp, line 572

..\..\..\opencv\modules\gpu\src\imgproc_gpu.cpp:572: error: (-218) NPP_TEXTURE_BIND_ERROR [Code = -24]

In the SURF matcher, the calculation of descriptors for the first image runs correctly, but the exception is thrown on the calculation for the second image. The data passed to the SURF descriptor is OK (checked visually using imshow). The call fails on the following line:

nppSafeCall( nppiStIntegral_8u32u_C1R(const_cast<NppSt8u*>(src.ptr<NppSt8u>()), src.step, sum.ptr<NppSt32u>(), sum.step, roiSize, buffer.ptr<NppSt8u>(), bufSize) );

This happens consistently on two different machines (with NVidia 8600GT and 9800GT cards). Latest CUDA Toolkit v3.2 was used.


Associated revisions

Revision 2aa5f1bf
Added by Andrey Pavlenko almost 12 years ago

Merge pull request #866 from MadEgg:RetrieveFrame_index_argument

History

Updated by Anatoly Baksheev about 14 years ago

I see you run not the last version.
Is this reproduced in the head revision?
We replaced implementation of integrals on GPU.

Updated by Michal Kottman about 14 years ago

The reported problem happened on a fairly recent revision - 4636. When updating to HEAD (4644), I have problems compiling the library (doing a clean build, using Visual Studio 2008):

cascadeclassifier_nvidia_api.obj : error LNK2019: unresolved external symbol "enum NCVStatus +cdecl ncvDetectObjectsMultiScale_device(...
cascadeclassifier_nvidia_api.obj : error LNK2019: unresolved external symbol "enum NCVStatus +cdecl ncvHaarLoadFromFile_host(...
cascadeclassifier_nvidia_api.obj : error LNK2019: unresolved external symbol "enum NCVStatus +cdecl ncvHaarGetClassifierSize(...
..\..\bin\Debug\cascadeclassifier_nvidia_api_gpu.exe : fatal error LNK1120: 3 unresolved externals

(shortened for clarity)

Updated by Michal Kottman about 14 years ago

The compilation problem is fixed by r4672, however, the problem with GPU SURF remains. It fails on the second call to detection silently, just showing the following assertions errors:

NCV CUDA Assertion Failed: cudaError_t=9, file=.../opencv/modules/gpu/src/nvidia/NPP_staging/NPP_staging.cu, line=309

NCV Assertion Failed: NcvStat=4, file=.../opencv/modules/gpu/src/nvidia/NPP_staging/NPP_staging.cu, line=401

NCV Assertion Failed: NcvStat=4, file=.../opencv/modules/gpu/src/nvidia/NPP_staging/NPP_staging.cu, line=547

Looking at the indicated lines, the problem seems to be with cudaBindTexture.

Updated by Anatoly Baksheev about 14 years ago

It seems to be a bug in SURF on old GPUs. Got old card, reproduced. Will investigate.

Updated by Yvonnic MM about 14 years ago

Same problem with a 9600GT. Also the found keypoints are on horizontal stripes.

Updated by Yvonnic MM about 14 years ago

seems to be fixed in r4716

Updated by Vladislav Vinogradov about 14 years ago

  • Status set to Done
  • (deleted custom field) set to fixed

Also available in: Atom PDF