# OpenCV with CUDAがg++11でビルドエラーになる問題の追試 ## はじめに で書かれている現象をにある以下のDockerイメージを使って追試をした。 - nvidia/cuda:11.5.2-cudnn8-devel-ubuntu20.04 - nvidia/cuda:11.6.2-cudnn8-devel-ubuntu20.04 ## 環境情報 - OpenCV 4.5.5 - Ubuntu 20.04 コンパイラ(gcc、g++)は以下の3バージョンを用いてそれぞれ実施した。 - 9.4.0 - 10.3.0 - 11.4.0 また、で > Looks like the problem is fixed in cuda-11.6.2 とあるため、CUDA ToolKitは以下の2バージョンを用いてそれぞれ実施した。 - 11.5.2 - 11.6.2 ## ビルドスクリプト 今回用いたビルドスクリプトは以下の通りである。GeForce RTX 2080 Tiが搭載された環境で実施したため、`CUDA_ARCH_BIN="7.5"`としている。 ``` #!/bin/bash GENERATOR_NAME="Unix Makefiles" CUDA_ARCH_BIN="7.5" # building cmake \ -G "${GENERATOR_NAME}" \ -B build \ -D BUILD_CUDA_STUBS=OFF \ -D BUILD_DOCS=OFF \ -D BUILD_EXAMPLES=OFF \ -D BUILD_JASPER=OFF \ -D BUILD_JPEG=OFF \ -D BUILD_OPENEXR=OFF \ -D BUILD_PACKAGE=ON \ -D BUILD_PERF_TESTS=OFF \ -D BUILD_PNG=OFF \ -D BUILD_SHARED_LIBS=ON \ -D BUILD_TBB=OFF \ -D BUILD_TESTS=OFF \ -D BUILD_TIFF=OFF \ -D BUILD_WITH_DEBUG_INFO=ON \ -D BUILD_ZLIB=OFF \ -D BUILD_WEBP=OFF \ -D BUILD_opencv_apps=OFF \ -D BUILD_opencv_calib3d=OFF \ -D BUILD_opencv_core=ON \ -D BUILD_opencv_cudaarithm=ON \ -D BUILD_opencv_cudabgsegm=ON \ -D BUILD_opencv_cudacodec=OFF \ -D BUILD_opencv_cudafeatures2d=ON \ -D BUILD_opencv_cudafilters=ON \ -D BUILD_opencv_cudaimgproc=ON \ -D BUILD_opencv_cudalegacy=ON \ -D BUILD_opencv_cudaobjdetect=ON \ -D BUILD_opencv_cudaoptflow=ON \ -D BUILD_opencv_cudastereo=ON \ -D BUILD_opencv_cudawarping=ON \ -D BUILD_opencv_cudev=ON \ -D BUILD_opencv_dnn=ON \ -D BUILD_opencv_features2d=OFF \ -D BUILD_opencv_flann=OFF \ -D BUILD_opencv_gapi=OFF \ -D BUILD_opencv_highgui=ON \ -D BUILD_opencv_imgcodecs=ON \ -D BUILD_opencv_imgproc=ON \ -D BUILD_opencv_java=OFF \ -D BUILD_opencv_js=OFF \ -D BUILD_opencv_ml=OFF \ -D BUILD_opencv_objdetect=OFF \ -D BUILD_opencv_photo=OFF \ -D BUILD_opencv_python2=OFF \ -D BUILD_opencv_python3=OFF \ -D BUILD_opencv_stitching=OFF \ -D BUILD_opencv_ts=ON \ -D BUILD_opencv_video=OFF \ -D BUILD_opencv_videoio=OFF \ -D BUILD_opencv_world=OFF \ -D CMAKE_BUILD_TYPE=Release \ -D CUDA_ARCH_BIN=${CUDA_ARCH_BIN} \ -D CUDA_ARCH_PTX="" \ -D OPENCV_DNN_CUDA=ON \ -D OPENCV_EXTRA_MODULES_PATH=../opencv_contrib-4.5.5/modules \ -D WITH_1394=OFF \ -D WITH_CUBLAS=ON \ -D WITH_CUDA=ON \ -D WITH_CUFFT=ON \ -D WITH_CUDNN=ON \ -D WITH_EIGEN=ON \ -D WITH_FFMPEG=ON \ -D WITH_GDAL=OFF \ -D WITH_GPHOTO2=OFF \ -D WITH_GIGEAPI=OFF \ -D WITH_GSTREAMER=ON \ -D WITH_GTK=OFF \ -D WITH_INTELPERC=OFF \ -D WITH_IPP=ON \ -D WITH_IPP_A=OFF \ -D WITH_JASPER=ON \ -D WITH_JPEG=ON \ -D WITH_LAPACK=ON \ -D WITH_LIBV4L=ON \ -D WITH_OPENCL=OFF \ -D WITH_OPENCLAMDBLAS=OFF \ -D WITH_OPENCLAMDFFT=OFF \ -D WITH_OPENCL_SVM=OFF \ -D WITH_OPENEXR=ON \ -D WITH_OPENGL=ON \ -D WITH_OPENJPEG=ON \ -D WITH_OPENMP=OFF \ -D WITH_OPENNI=OFF \ -D WITH_PNG=ON \ -D WITH_PTHREADS_PF=ON \ -D WITH_PROTOBUF=OFF \ -D WITH_PVAPI=OFF \ -D WITH_QT=OFF \ -D WITH_TBB=OFF \ -D WITH_TIFF=ON \ -D WITH_UNICAP=OFF \ -D WITH_V4L=ON \ -D WITH_VTK=ON \ -D WITH_WEBP=ON \ -D WITH_XIMEA=OFF \ -D WITH_XINE=OFF \ . ``` ## ビルド結果 ### nvidia/cuda:11.5.2-cudnn8-devel-ubuntu20.04 |g++バージョン|build status| |---|---| |9.4.0|Passed| |10.3.0|Passed| |11.4.0|Failed| g++ 11.4.0を用いたときにで書かれている現象が再現。 ### nvidia/cuda:11.6.2-cudnn8-devel-ubuntu20.04 |g++バージョン|build status| |---|---| |9.4.0|Passed| |10.3.0|Passed| |11.4.0|Passed| でレポートされているように修正されているように見受けられる。 同様の問題に遭遇した場合、CUDA ToolKitのバージョン変更、コンパイラのバージョン変更それぞれで影響範囲が異なるため、必要に応じて選択されたい。 ## 参考URL - - -