Problem with cv::gpu::integral (Bug #866)
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
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