From 788f9b2543d0c0b42665448d9263f533e1ed17dc Mon Sep 17 00:00:00 2001 From: Nicolas Pope <nicolas.pope@utu.fi> Date: Fri, 13 Aug 2021 09:39:39 +0000 Subject: [PATCH] Dockerfiles and docker dev environment --- .gitignore | 3 +- .gitlab-ci.yml | 7 +- CMakeLists.txt | 3 +- README.md | 31 ++++ SDK/CPP/public/CMakeLists.txt | 2 +- .../src/analysis/tracking/detectandtrack.cpp | 4 +- .../src/analysis/tracking/nvopticalflow.cpp | 2 +- .../src/sources/stereovideo/stereovideo.cpp | 2 +- docker/CI/Dockerfile | 19 ++ docker/CI/container-script.sh | 8 + docker/CI/pipeline-script.sh | 12 ++ docker/base/Dockerfile | 168 ++++++++++++++++++ docker/base/README.md | 13 ++ docker/base/libnvcuvid.so | Bin 0 -> 3528 bytes docker/base/libnvidia-encode.so | Bin 0 -> 1480 bytes docker/devel/Dockerfile | 6 + docker/devel/README.md | 9 + lib/libstereo/CMakeLists.txt | 9 +- 18 files changed, 282 insertions(+), 16 deletions(-) create mode 100644 docker/CI/Dockerfile create mode 100755 docker/CI/container-script.sh create mode 100755 docker/CI/pipeline-script.sh create mode 100644 docker/base/Dockerfile create mode 100644 docker/base/README.md create mode 100644 docker/base/libnvcuvid.so create mode 100644 docker/base/libnvidia-encode.so create mode 100644 docker/devel/Dockerfile create mode 100644 docker/devel/README.md diff --git a/.gitignore b/.gitignore index 27cf8ed81..5a98e865b 100644 --- a/.gitignore +++ b/.gitignore @@ -13,4 +13,5 @@ lab-designs/viewer doc/ web-service/npm-debug.log web-service/server/npm-debug.log -gmon.out \ No newline at end of file +gmon.out +.devcontainer.json \ No newline at end of file diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 5f294f78b..c8856cd98 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -25,12 +25,7 @@ build: # - apt-get update -qq && apt-get install -y -qq g++ cmake git # - apt-get install -y -qq libopencv-dev libgoogle-glog-dev liburiparser-dev libreadline-dev libmsgpack-dev uuid-dev script: - - mkdir build - - cd build - - /snap/bin/cmake .. -GNinja -DCMAKE_CXX_FLAGS="-fdiagnostics-color" -DWITH_OPTFLOW=TRUE -DUSE_CPPCHECK=FALSE -DBUILD_CALIBRATION=TRUE -DWITH_CERES=TRUE -DCMAKE_BUILD_TYPE=Release -DCPACK_GENERATOR=DEB - - ninja - - ninja package - - ctest --output-on-failure + - ./docker/CI/pipeline-script.sh # - cd ../SDK/Python # - python3 -m unittest discover test diff --git a/CMakeLists.txt b/CMakeLists.txt index dfe9498e2..5a8e01e50 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -49,7 +49,7 @@ MACRO( VERSION_STR_TO_INTS major minor patch version ) ENDMACRO( VERSION_STR_TO_INTS ) if (CMAKE_COMPILER_IS_GNUCXX) - set(CMAKE_CUDA_HOST_COMPILER gcc-7) + set(CMAKE_CUDA_HOST_COMPILER gcc) endif() find_package( OpenCV REQUIRED COMPONENTS core imgproc highgui cudaimgproc calib3d imgcodecs videoio aruco cudaarithm cudastereo cudaoptflow face tracking quality xfeatures2d) @@ -290,6 +290,7 @@ enable_language(CUDA) if (NOT WIN32) set(CMAKE_CUDA_FLAGS "-Xcompiler -fPIC") + set(CMAKE_CUDA_STANDARD 14) endif() set(CMAKE_CUDA_ARCHITECTURES 61) set(CMAKE_CUDA_FLAGS_DEBUG "--gpu-architecture=compute_61 -g -DDEBUG -D_DEBUG") diff --git a/README.md b/README.md index f439aa909..a7db91306 100644 --- a/README.md +++ b/README.md @@ -32,6 +32,37 @@ found in the `config` folder. The intention is that a web interface will eventually enable this configuration to take place online. ## Build + +### Container +FTL can be built and developed inside a docker container. To do this, run the +following sequence of commands and create a `.devcontainer.json` file as shown. + +Note: A ~3Gb image will be downloaded when running these commands, which +contains all build dependencies and tools. + +```bash +cd ./docker/devel +docker build -t ftl-devel --build-arg USER_ID=$(id -u) --build-arg GROUP_ID=$(id -g) . +``` + +And the `.devcontainer.json` looks similar to this and goes in the repository +root: + +```json +{ + "image": "ftl-devel", + "runArgs": [ + "--runtime=nvidia", + "--device=/dev/snd", + "--device=/dev/bus/usb", + "-e", "DISPLAY=:1", + "-v", "/tmp/.X11-unix:/tmp/.X11-unix", + ], + "extensions": [] +} +``` + +### Local Use the following commands in the root repository directory to build: ```bash diff --git a/SDK/CPP/public/CMakeLists.txt b/SDK/CPP/public/CMakeLists.txt index 25770980f..b3a689f08 100644 --- a/SDK/CPP/public/CMakeLists.txt +++ b/SDK/CPP/public/CMakeLists.txt @@ -23,7 +23,7 @@ if(WIN32) set(OS_LIBS "") else() add_definitions(-DUNIX) - set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11 -fPIC -march=native -mfpmath=sse -Wall -Werror=unused-result -Werror=return-type -pthread") + set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++14 -fPIC -march=native -mfpmath=sse -Wall -Werror=unused-result -Werror=return-type -pthread") set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -pg") set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} -O3") set(OS_LIBS "dl") diff --git a/components/operators/src/analysis/tracking/detectandtrack.cpp b/components/operators/src/analysis/tracking/detectandtrack.cpp index 0b9e783e0..7f4b86ba6 100644 --- a/components/operators/src/analysis/tracking/detectandtrack.cpp +++ b/components/operators/src/analysis/tracking/detectandtrack.cpp @@ -194,7 +194,9 @@ bool DetectAndTrack::track(const Mat &im) { } else { it++; }*/ - if (it->fail_count >= max_fail_ || !it->tracker->update(im, it->object)) { + cv::Rect rect = it->object; + + if (it->fail_count >= max_fail_ || !it->tracker->update(im, rect)) { it = tracked_.erase(it); } else { ++it; diff --git a/components/operators/src/analysis/tracking/nvopticalflow.cpp b/components/operators/src/analysis/tracking/nvopticalflow.cpp index 8c0d38a69..e0d3ca44b 100644 --- a/components/operators/src/analysis/tracking/nvopticalflow.cpp +++ b/components/operators/src/analysis/tracking/nvopticalflow.cpp @@ -43,7 +43,7 @@ bool NVOpticalFlow::init() { return false; } nvof_ = cv::cuda::NvidiaOpticalFlow_1_0::create( - size_.width, size_.height, + size_, cv::cuda::NvidiaOpticalFlow_1_0::NV_OF_PERF_LEVEL_SLOW, true, false, false, 0); diff --git a/components/rgbd-sources/src/sources/stereovideo/stereovideo.cpp b/components/rgbd-sources/src/sources/stereovideo/stereovideo.cpp index 192697d2a..27e01dba9 100644 --- a/components/rgbd-sources/src/sources/stereovideo/stereovideo.cpp +++ b/components/rgbd-sources/src/sources/stereovideo/stereovideo.cpp @@ -254,7 +254,7 @@ void StereoVideoSource::updateParameters(ftl::rgbd::Frame &frame) { return true; }); - if (lsrc_->isStereo()) { + if (lsrc_->isStereo() && calibration_.enabled) { Eigen::Matrix4d pose; // NOTE: pose update (new origin/rotation) cv::cv2eigen(calibration_.origin * rectification_->getPose(Channel::Left), pose); diff --git a/docker/CI/Dockerfile b/docker/CI/Dockerfile new file mode 100644 index 000000000..3b55e246f --- /dev/null +++ b/docker/CI/Dockerfile @@ -0,0 +1,19 @@ +FROM ftlab/base:1.0-dev + +RUN mkdir /opt/ftl +WORKDIR /opt/ftl +COPY ./applications ./applications +COPY ./cmake ./cmake +COPY ./components ./components +COPY ./lib ./lib +COPY ./ext ./ext +COPY ./SDK ./SDK + +CMD mkdir build &&\ + cd build &&\ + cmake .. -GNinja -DCMAKE_CXX_FLAGS="-fdiagnostics-color" -DWITH_OPTFLOW=TRUE -DUSE_CPPCHECK=FALSE -DBUILD_CALIBRATION=TRUE -DWITH_CERES=TRUE -DCMAKE_BUILD_TYPE=Release -DCPACK_GENERATOR=DEB &&\ + ninja &&\ + ninja package &&\ + ctest --output-on-failure + + diff --git a/docker/CI/container-script.sh b/docker/CI/container-script.sh new file mode 100755 index 000000000..61d46ee14 --- /dev/null +++ b/docker/CI/container-script.sh @@ -0,0 +1,8 @@ +#!/bin/sh + +cd /opt/ftl +mkdir build +cd build +cmake .. -DCMAKE_CXX_FLAGS="-fdiagnostics-color" -DWITH_OPTFLOW=TRUE -DUSE_CPPCHECK=FALSE -DBUILD_CALIBRATION=TRUE -DWITH_CERES=TRUE -DCMAKE_BUILD_TYPE=Release -DCPACK_GENERATOR=DEB && +make -j4 && +ctest --output-on-failure diff --git a/docker/CI/pipeline-script.sh b/docker/CI/pipeline-script.sh new file mode 100755 index 000000000..1fe21694e --- /dev/null +++ b/docker/CI/pipeline-script.sh @@ -0,0 +1,12 @@ +#!/bin/sh + +docker run \ + --runtime=nvidia \ + --device=/dev/snd \ + --device=/dev/bus/usb \ + -e NVIDIA_DRIVER_CAPABILITIES=graphics,compute,utility,video \ + -v "${PWD}:/opt/ftl" \ + -u $(id -u ${USER}):$(id -g ${USER}) \ + ftlab/base:1.0-dev \ + /opt/ftl/docker/CI/container-script.sh + \ No newline at end of file diff --git a/docker/base/Dockerfile b/docker/base/Dockerfile new file mode 100644 index 000000000..9f4775d8b --- /dev/null +++ b/docker/base/Dockerfile @@ -0,0 +1,168 @@ +FROM nvidia/cuda:11.4.0-devel-ubuntu20.04 AS devel + +ARG OPENCV_VERSION=4.5.3 +ARG DEBIAN_FRONTEND=noninteractive +ENV TZ=Europe/London +ENV NVIDIA_DRIVER_CAPABILITIES graphics,compute,utility,video + +RUN apt-get update &&\ + # Install build tools, build dependencies and python + apt-get install --no-install-recommends -y \ + build-essential \ + cmake \ + git \ + openssh-client \ + wget \ + unzip \ + yasm \ + cppcheck \ + pkg-config \ + libceres-dev \ + libreadline-dev \ + libopus-dev \ + libxtst-dev \ + libswscale-dev \ + libtbb2 \ + libtbb-dev \ + libjpeg-dev \ + libpng-dev \ + libglew-dev \ + zlib1g-dev \ + libasound-dev \ + libavcodec-dev \ + libavformat-dev \ + libavutil-dev \ + libpostproc-dev \ + libswscale-dev \ + libeigen3-dev \ + libgtk2.0-dev \ + libxxf86vm-dev \ + uuid-dev \ + libmsgpack-dev \ + liburiparser-dev \ + software-properties-common \ + && apt-key adv --keyserver keys.gnupg.net --recv-key F6E65AC044F831AC80A06380C8B3A55A6F3EFCDE || apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-key F6E65AC044F831AC80A06380C8B3A55A6F3EFCDE && \ + add-apt-repository "deb https://librealsense.intel.com/Debian/apt-repo focal main" -u && \ + apt-get update && \ + apt-get install --no-install-recommends -y \ + librealsense2-dev \ + && rm -rf /var/lib/apt/lists/* + +COPY ./libnvcuvid.so ./libnvidia-encode.so /usr/lib/x86_64-linux-gnu/ + +RUN cd /opt/ &&\ + # Pylon + wget -O pylon.deb https://seafile.utu.fi/f/b4585f6c84f0462fac04/?dl=1 &&\ + apt-get install ./pylon.deb &&\ + rm ./pylon.deb &&\ + rm -rf /var/lib/apt/lists/* &&\ + # Portaudio + cd /opt/ &&\ + wget http://files.portaudio.com/archives/pa_stable_v190700_20210406.tgz &&\ + tar -xf ./pa_stable_v190700_20210406.tgz &&\ + rm ./pa_stable_v190700_20210406.tgz &&\ + cd ./portaudio &&\ + ./configure && make && make install &&\ + rm -rf ./portaudio &&\ + # Download and unzip OpenCV and opencv_contrib and delte zip files + cd /opt/ &&\ + wget https://github.com/opencv/opencv/archive/$OPENCV_VERSION.zip &&\ + unzip $OPENCV_VERSION.zip &&\ + rm $OPENCV_VERSION.zip &&\ + wget https://github.com/opencv/opencv_contrib/archive/$OPENCV_VERSION.zip &&\ + unzip ${OPENCV_VERSION}.zip &&\ + rm ${OPENCV_VERSION}.zip &&\ + # Create build folder and switch to it + mkdir /opt/opencv-${OPENCV_VERSION}/build && cd /opt/opencv-${OPENCV_VERSION}/build &&\ + # Cmake configure + cmake \ + -DOPENCV_EXTRA_MODULES_PATH=/opt/opencv_contrib-${OPENCV_VERSION}/modules \ + -DWITH_CUDA=ON \ + -DOPENCV_ENABLE_NONFREE=ON\ + -DCUDA_ARCH_BIN="6.1 7.5" \ + -DBUILD_TESTS=OFF\ + -DBUILD_PERF_TESTS=OFF\ + -DBUILD_EXAMPLES=OFF\ + -DBUILD_opencv_bioinspired=OFF\ + -DBUILD_opencv_cudaobjdetect=OFF\ + -DBUILD_opencv_dnn=OFF\ + -DBUILD_opencv_dnn_objdetect=OFF\ + -DBUILD_opencv_dnn_superres=OFF\ + -DBUILD_opencv_fuzzy=OFF\ + -DBUILD_opencv_hdf=OFF\ + -DBUILD_opencv_hfs=OFF\ + -DBUILD_opencv_dpm=OFF\ + -DBUILD_opencv_image_hash=OFF\ + -DBUILD_opencv_java_bindings_generator=OFF\ + -DBUILD_opencv_js=OFF\ + -DBUILD_opencv_saliency=OFF\ + -DBUILD_opencv_sfm=OFF\ + -DBUILD_opencv_stitching=OFF\ + -DBUILD_opencv_structured_light=OFF\ + -DBUILD_opencv_superres=OFF\ + -DBUILD_opencv_surface_matching=OFF\ + -DBUILD_opencv_viz=OFF\ + -DBUILD_opencv_xobjdetect=OFF\ + -DBUILD_opencv_gapi=OFF\ + -DBUILD_opencv_videostab=OFF\ + -DBUILD_opencv_rgbd=OFF\ + -DWITH_CUDNN=OFF\ + -DWITH_TIFF=OFF\ + -DWITH_WEBP=OFF\ + -DWITH_OPENEXR=OFF\ + -DWITH_OPENCL=OFF\ + -DWITH_PROTOBUF=OFF\ + -DCMAKE_BUILD_TYPE=RELEASE \ + # Install path will be /usr/local/lib (lib is implicit) + -DCMAKE_INSTALL_PREFIX=/usr/local \ + .. &&\ + # Make + make -j"$(nproc)" && \ + # Install to /usr/local/lib + make install && \ + ldconfig &&\ + # Remove OpenCV sources and build folder + rm -rf /opt/opencv-${OPENCV_VERSION} && rm -rf /opt/opencv_contrib-${OPENCV_VERSION} &&\ + ln -s /usr/local/include/opencv4/opencv2 /usr/local/include/opencv2 + +FROM nvidia/cuda:11.4.0-base-ubuntu20.04 AS runtime + +ARG OPENCV_VERSION=4.5.3 +ARG DEBIAN_FRONTEND=noninteractive +ENV TZ=Europe/London +ENV NVIDIA_DRIVER_CAPABILITIES graphics,compute,utility,video + +RUN apt-get update && apt-get upgrade -y &&\ + # Install build tools, build dependencies and python + apt-get install --no-install-recommends -y \ + libceres1 \ + libreadline8 \ + libopus0 \ + libxtst6 \ + libtbb2 \ + libjpeg8 \ + libpng16-16 \ + libtiff5 \ + libavformat58 \ + libpq5 \ + libxine2 \ + libglew2.1 \ + zlib1g \ + libasound2 \ + libavcodec58 \ + libavutil56 \ + libpostproc55 \ + libswscale5 \ + libgtk2.0-0 \ + libxxf86vm1 \ + uuid \ + libmsgpackc2 \ + liburiparser1 \ + software-properties-common \ + && rm -rf /var/lib/apt/lists/* + +COPY --from=devel /usr/local/share /usr/local/share +COPY --from=devel /usr/local/lib /usr/local/lib +COPY --from=devel /opt/pylon /opt/pylon +COPY --from=devel /etc/udev/rules.d/69-basler-cameras.rules /etc/udev/rules.d/ +COPY --from=devel /etc/profile.d /etc/profile.d diff --git a/docker/base/README.md b/docker/base/README.md new file mode 100644 index 000000000..a11c2fe6b --- /dev/null +++ b/docker/base/README.md @@ -0,0 +1,13 @@ +# FTL Base Docker Image +This image contains all dependencies and build tools for FTL. + +* CUDA 11.4.0 +* OpenCV 4.5.3 +* Pylon 6.1.1 + +## Image Build +An example build command is given below, just bump the version number. + +``` +docker build -t ftlab/base:1.0-dev --target=devel . +``` \ No newline at end of file diff --git a/docker/base/libnvcuvid.so b/docker/base/libnvcuvid.so new file mode 100644 index 0000000000000000000000000000000000000000..f08a209545e076a835d11dcc24bd20d22088b1c5 GIT binary patch literal 3528 zcmd6qPiWLf6vt;1HBqCksam5^qWA|QEDE9$7Rf&~2kXBy7D8bA%kD49*6eQh{boZF zQhO;S^&sNGQ+g}n(MzF+P(t+(4}u2|J?z!uNvMbi8%@9OH}7pWlk5~hN*}zL+0XaQ z%$u3tZ+G^)a~IFo#9~UUR-IM!>CFa1+F4lG%nelS>Wo^4vR>6ivFn$mRjq|h21%_{ zO9W^RnnL)(Cc~wkhekFZl~lAuts0ac)2}}2rPS3II>Sq1;;y9Mc7*MRH^M)M$KiY7 zd*Ec-;2WcsDfXeFKD*$%;k5i__*S^fXkF{zk|XV@<UsuzsDN!TRk^G<7PSMk4qglY z489ZI1phay#msWv5<84WBX}bX2$Q@{<KT#2viLX5`z`)A^Y1PGl=+0k?=l~<_+#Wi z^B%YOw;cbq#ousz(&Ds7G|oF-kgV%A^Zi!*L*}g(pJKk-;+@PlSiHpil*OBH@NxCm z(#+--L@ZlBnv`dQ6~B+y+hg%#93MRZXv@0(<oKIb{6^-T7H_PQ&*3WkC!Y6^HO^HY z|4WPCXFh6i;Ap+_97_JbaC~6Jt8{TZo9POCPy5||x{&dMN_0J&@e5bHAY23Y7K%aI zUlnceSIqUq#X|bViVtS86{y<}bx@crv%dUjxtGc6N;a*F0nf(aEAnNwD&b0Anehc* zoBqAp)5XwCU4}uIH@3`7zm8%iTR2|`a-J?n8zq|5QX*z#nt?O_!W%QeftOngojPfT zj<!6C?Dn+BEXa;ypvz<C<29UCekePPU0Jaay}n+1?!J6(_3ReJ{3$;}Q>IdbVVDZF z7ige-MvZ0%^W)Lek_Zcl6L`-0dVYNI<kA1FL}D=dej<xaT~o1%cx-P&UHu)r1N0k0 z-o3Q66ulcATjM{}bZwFMgtR2Q)u9hSk2~~f=x;w%AAc5l$)V3d|J|XNpg(Zvi_mX7 z^k(dXcIZjy{SJKqdb>lPhJM7M&q8l-=yT9tzpuW3CFp-R^hM~uIrL_H2mkEQlhAKD z^a1E&4t*N>b%#C+J?YTrpdWPTCFu1IeG&Sr#p?UljEl|lD!SaSS}_J0-KEG{u%~2l zNBxxrd2e2_&ev4c#{K19MR&OW#1i2MeoM4Bs1hSyIHD4n$$U7OGqny>Li-b1CH#@p zQ1l&4x|hqQKT&eDUfLsGetF+y|LFcjCc4~BWuNKJOJj&G`zrM_7U*tDP3bTDOZQaK z&{T3xQp>rJM#jfxKA=3nOwLvA5mMhPN1BG@E%+$+m;CSWeM9Oqlw5^L{(|Uth31wp i`5z<yZ{|5rbm>q3C&*|$qD6p<8GaDkDk0kT`u_pVP7(wF literal 0 HcmV?d00001 diff --git a/docker/base/libnvidia-encode.so b/docker/base/libnvidia-encode.so new file mode 100644 index 0000000000000000000000000000000000000000..99934c7b22357afacb382aef554075081ee787f6 GIT binary patch literal 1480 zcmcIky>1gh5T3IGwje|fN&yOmsi-(XhY&%DLLiYsWI#c5r?qd9kKnU)yNMhcIutq{ zgJ+<!l*aUVg**TqoinpHUoe44Ai+qx-|RO(yEA)x@7FdTSE7g@ReDIWN-HI^tcGz_ z6^3QHM>9OvsTO=M{4o8ZjWrLDs2O}@kBdCOk1Hh)9I;Jg6lR&4L6dZU6ITyWM9+?W zDsg`*h?BBwJfud6pW$&<#7E0KYx-$j<!JO3hDBDcGXF*s;Ea!$Z_u~NLA43jfYLYd zM;`buG5<UN);T<F?XBgVeri`*8>@vi-fra1o4jMEEl;d}YKAX%2ZMg$ZTiv{F6-x% z*wlDKNz!&M;i$qhm8bMJYv+4enwi@+<c?iGzDu;d{_*(hVL2~^Du|+Y&nX%<qQ%)- z{Sy~;gLxT8lgT91v@+NDP+7f#`o#8t$Cq>Lb8HjYF5&c^n$j>9e52oWjl3;gUn<>b zNAa@aHO2o9vFkctc+;l1Yh0J&bU%0dy%K#vvA07{vF#?W3)8cKH@&R$j}9jFN{{dz zqi?`Fx)1DlA9xS*Y?mCcqp!fv8jrVvc=Y!=+hG$|+!GM@qG?F44NJPonsB&Rybs{) zsb{I++@No<BJnu?Ko#ICI4a`&p!qWodrJ)>_>bZLHVSN6qo{~)C@*^>R;d67O5UF) JSr`9lIRWM5b;tk! literal 0 HcmV?d00001 diff --git a/docker/devel/Dockerfile b/docker/devel/Dockerfile new file mode 100644 index 000000000..3e8f44702 --- /dev/null +++ b/docker/devel/Dockerfile @@ -0,0 +1,6 @@ +FROM ftlab/base:1.0-dev + +ARG USER_ID +ARG GROUP_ID +RUN addgroup --gid $GROUP_ID user && adduser --disabled-password --gecos '' --uid $USER_ID --gid $GROUP_ID user +USER user diff --git a/docker/devel/README.md b/docker/devel/README.md new file mode 100644 index 000000000..a673e9fd5 --- /dev/null +++ b/docker/devel/README.md @@ -0,0 +1,9 @@ +# FTL Developer Docker Image + +This is a small wrapper image that should be built locally by the developer. It adds correct user permissions to the image to ensure files are created correctly on the host if volumes are used. + +## Image Build + +``` +docker build -t ftl-devel --build-arg USER_ID=$(id -u) --build-arg GROUP_ID=$(id -g) . +``` diff --git a/lib/libstereo/CMakeLists.txt b/lib/libstereo/CMakeLists.txt index a5f3255d2..4424ee092 100644 --- a/lib/libstereo/CMakeLists.txt +++ b/lib/libstereo/CMakeLists.txt @@ -16,17 +16,18 @@ find_package( Threads REQUIRED ) check_language(CUDA) enable_language(CUDA) -set(CMAKE_CXX_CPPCHECK "cppcheck") +# set(CMAKE_CXX_CPPCHECK "cppcheck") set(CMAKE_CXX_STANDARD 17) +set(CMAKE_CUDA_STANDARD 14) set(CMAKE_USE_RELATIVE_PATHS ON) set(CMAKE_CXX_FLAGS_RELEASE) if (CMAKE_COMPILER_IS_GNUCXX) - set(CMAKE_CUDA_HOST_COMPILER gcc-7) - set(CMAKE_CUDA_FLAGS "--gpu-architecture=compute_61 -std=c++14 -Xcompiler -fPIC -Xcompiler ${OpenMP_CXX_FLAGS} --expt-relaxed-constexpr") + set(CMAKE_CUDA_HOST_COMPILER gcc) + set(CMAKE_CUDA_FLAGS "--gpu-architecture=compute_61 -Xcompiler -fPIC -Xcompiler ${OpenMP_CXX_FLAGS} --expt-relaxed-constexpr") set(CMAKE_CUDA_FLAGS_RELEASE "-O3") else() - set(CMAKE_CUDA_FLAGS "--gpu-architecture=compute_61 -std=c++14 --expt-relaxed-constexpr") + set(CMAKE_CUDA_FLAGS "--gpu-architecture=compute_61 --expt-relaxed-constexpr") set(CMAKE_CUDA_FLAGS_RELEASE "-O3") endif() -- GitLab