Attention! This forum will be made read-only by Dec-20. Please migrate to Most of existing active users should've received invitation by e-mail.
Ask Your Question

OpenCV Error: Gpu API call (invalid device symbol) in buildPointList_gpu

asked 2016-02-22 09:03:12 -0500

heytheres gravatar image

Hi guys, I followed the instructions from here:

With the exception that I built OpenCV v3.1 and also opencv_contrib.

I could run the cpp samples - edges.cpp without any problem.

However, when I run gpu sample, I am encountering this error:

<-----COMMAND HERE -->

ubuntu@tegra-ubuntu:~/opencv3/opencv/samples/gpu$ ./houghlines ../data/pic1.png

<-----OUTPUT HERE -->

CPU Time : 7.13239 ms

CPU Found : 12

OpenCV Error: Gpu API call (invalid device symbol) in buildPointList_gpu, file /home/ubuntu/opencv3/opencv/modules/cudaimgproc/src/cuda/, line 116 terminate called after throwing an instance of 'cv::Exception' what(): /home/ubuntu/opencv3/opencv/modules/cudaimgproc/src/cuda/ error: (-217) invalid device symbol in function buildPointList_gpu


<------ END OUTPUT ------>

I have checked that my CUDA in nvidia TX1 is actually working by running NVIDIA Cuda 7.0 samples.

<---- Nvidia TX1 deviceQuery ----->

CUDA Device Query (Runtime API) version (CUDART static linking)

Detected 1 CUDA Capable device(s)

Device 0: "GM20B"

CUDA Driver Version / Runtime Version 7.0 / 7.0

CUDA Capability Major/Minor version number: 5.3

Total amount of global memory: 3854 MBytes (4041023488 bytes)

( 2) Multiprocessors, (128) CUDA Cores/MP: 256 CUDA Cores

GPU Max Clock rate: 72 MHz (0.07 GHz)

Memory Clock rate: 13 Mhz

Memory Bus Width: 64-bit

L2 Cache Size: 262144 bytes

Maximum Texture Dimension Size (x,y,z) 1D=(65536), 2D=(65536, 65536), 3D=(4096, 4096, 4096)

Maximum Layered 1D Texture Size, (num) layers 1D=(16384), 2048 layers

Maximum Layered 2D Texture Size, (num) layers 2D=(16384, 16384), 2048 layers

Total amount of constant memory: 65536 bytes

Total amount of shared memory per block: 49152 bytes

Total number of registers available per block: 32768

Warp size: 32

Maximum number of threads per multiprocessor: 2048

Maximum number of threads per block: 1024

Max dimension size of a thread block (x,y,z): (1024, 1024, 64)

Max dimension size of a grid size (x,y,z): (2147483647, 65535, 65535)

Maximum memory pitch: 2147483647 bytes

Texture alignment: 512 bytes

Concurrent copy and kernel execution: Yes with 2 copy engine(s)

Run time limit on kernels: No

Integrated GPU sharing Host Memory: Yes

Support host page-locked memory mapping: Yes

Alignment requirement for Surfaces: Yes

Device has ECC support: Disabled

Device supports Unified Addressing (UVA): Yes

Device PCI Domain ID / Bus ID / location ID: 0 / 0 / 0

Compute Mode:

 < Default (multiple host threads can use ::cudaSetDevice() with device simultaneously) >

deviceQuery, CUDA Driver = CUDART, CUDA Driver Version = 7.0, CUDA Runtime Version = 7.0, NumDevs = 1,

Device0 = GM20B

Result = PASS

<--- END Nvidia TX1 device Query ---->

Thanks guys for helping!

edit retag flag offensive close merge delete

1 answer

Sort by ยป oldest newest most voted

answered 2017-03-01 08:24:59 -0500

Change the CUDA_ARCH_BIN value when running CMAKE for opencv compiling. For examle this is the CMAKE command I use for TX1: cmake -DWITH_CUDA=ON -DCUDA_ARCH_BIN="5.3" -DCMAKE_INSTALL_PREFIX=/usr/local/opencv-3.2.0 -DCUDA_ARCH_PTX="" -DBUILD_TESTS=OFF -DBUILD_PERF_TESTS=OFF ... This issue is discussed in issue 4849 on the opencv github (sorry, not enough karma to put link)

edit flag offensive delete link more
Login/Signup to Answer

Question Tools

1 follower


Asked: 2016-02-22 09:02:01 -0500

Seen: 1,829 times

Last updated: Mar 01 '17