Skip to content

Instantly share code, notes, and snippets.

@atinfinity
Last active July 15, 2023 16:46
Show Gist options
  • Save atinfinity/be474f6eb86ed8473fecb9ffbd6a9ad8 to your computer and use it in GitHub Desktop.
Save atinfinity/be474f6eb86ed8473fecb9ffbd6a9ad8 to your computer and use it in GitHub Desktop.
OpenCV with CUDAがg++11でビルドエラーになる問題の追試

OpenCV with CUDAがg++11でビルドエラーになる問題の追試

はじめに

https://qiita.com/wahhoi22/items/d9ef90877fdb41dba1af#c11を使ってそのままコンパイルするとエラーが生じるで書かれている現象をhttps://hub.docker.com/r/nvidia/cudaにある以下の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

また、https://forums.developer.nvidia.com/t/cuda-11-6-0-with-gcc-11-2-1-fails-to-process-system-headers-included-by-functional/203556/4

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を用いたときにhttps://qiita.com/wahhoi22/items/d9ef90877fdb41dba1af#c11を使ってそのままコンパイルするとエラーが生じるで書かれている現象が再現。

nvidia/cuda:11.6.2-cudnn8-devel-ubuntu20.04

g++バージョン build status
9.4.0 Passed
10.3.0 Passed
11.4.0 Passed

https://forums.developer.nvidia.com/t/cuda-11-6-0-with-gcc-11-2-1-fails-to-process-system-headers-included-by-functional/203556/4でレポートされているように修正されているように見受けられる。

同様の問題に遭遇した場合、CUDA ToolKitのバージョン変更、コンパイラのバージョン変更それぞれで影響範囲が異なるため、必要に応じて選択されたい。

参考URL

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment