-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathpre-push
executable file
·86 lines (72 loc) · 13.1 KB
/
pre-push
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
#!/bin/bash
# sudo dpkg --add-architecture i386
# sudo apt install ccache clang clang-tidy cmake cppcheck g++ git iwyu lcov libblas-dev pkg-config libfftw3-dev libboost-test-dev libboost-timer-dev libopenblas-dev libtbb-dev make ninja-build valgrind libboost-test-dev:i386 libboost-timer-dev:i386
# sudo dnf install boost-devel blas-devel ccache clang clang-tools-extra cmake cppcheck fftw-devel git lcov libasan liblas-devel libubsan ninja-build valgrind
# install circle # mkdir -p $HOME/bin && wget https://www.circle-lang.org/linux/build_latest.tgz -P $HOME/tmp/ && tar zxvf $HOME/tmp/build_latest.tgz --directory $HOME/bin/ && $HOME/bin/circle --version
# install nvc++
# on Ubuntu:
# curl https://developer.download.nvidia.com/hpc-sdk/ubuntu/DEB-GPG-KEY-NVIDIA-HPC-SDK | sudo gpg --dearmor -o /usr/share/keyrings/nvidia-hpcsdk-archive-keyring.gpg
# echo 'deb [signed-by=/usr/share/keyrings/nvidia-hpcsdk-archive-keyring.gpg] https://developer.download.nvidia.com/hpc-sdk/ubuntu/amd64 /' | sudo tee /etc/apt/sources.list.d/nvhpc.list
# sudo apt-get update -y
# sudo apt-get install -y nvhpc-24-7
# on Fedora:
# sudo yum-config-manager --add-repo https://developer.download.nvidia.com/hpc-sdk/rhel/nvhpc.repo && sudo yum install -y nvhpc-cuda-multi-24.5
# install oneAPI
# wget -O- https://apt.repos.intel.com/intel-gpg-keys/GPG-PUB-KEY-INTEL-SW-PRODUCTS.PUB | gpg --dearmor | sudo tee /usr/share/keyrings/oneapi-archive-keyring.gpg > /dev/null
# echo "deb [signed-by=/usr/share/keyrings/oneapi-archive-keyring.gpg] https://apt.repos.intel.com/oneapi all main" | sudo tee /etc/apt/sources.list.d/oneAPI.list
# sudo apt update
# sudo apt install intel-hpckit
set -x # echo on
export CMAKE_GENERATOR=Ninja
export CMAKE_CUDA_COMPILER_LAUNCHER="ccache"
export CMAKE_CXX_COMPILER_LAUNCHER="ccache"
# export CMAKE_EXE_LINKER_FLAGS="-fuse-ld=mold"
# export CMAKE_SHARED_LINKER_FLAGS="-fuse-ld=mold"
if [ -z "$1" ]; then
echo "no arg"
else
CMT="--target $1"
CTR="-R $1"
fi
if [[ $(uname -m) != 'arm64' ]]; then
export VALGRIND_EXE="valgrind --trace-children=yes --leak-check=full --track-origins=yes --show-leak-kinds=all --suppressions=.valgrind_suppressions --gen-suppressions=all --error-exitcode=1 "
(mkdir -p .build.clang++-rel && cd .build.clang++-rel && CXX=clang++ cmake .. -DCMAKE_BUILD_TYPE=Release && cmake --build . $CMT && ctest --parallel 2 --output-on-failure $CTR) || exit 666
(mkdir -p .build.g++ && cd .build.g++ && CXX=g++ cmake .. -DCMAKE_BUILD_TYPE=Debug -DCMAKE_EXPORT_COMPILE_COMMANDS=ON && cmake --build . $CMT && ctest --parallel 2 --output-on-failure $CTR ) || exit 666
(mkdir -p .build.clang++ && cd .build.clang++ && CXX=clang++ cmake .. -DCMAKE_BUILD_TYPE=Debug && cmake --build . $CMT && ctest --parallel 2 --output-on-failure $CTR) || exit 666
(mkdir -p .build.clang++.libcpp && cd .build.clang++.libcpp && CXX=clang++ cmake .. -DCMAKE_BUILD_TYPE=Debug -DCMAKE_CXX_STANDARD=20 -DCMAKE_CXX_FLAGS="-stdlib=libc++" && cmake --build . $CMT && ctest --parallel 2 --output-on-failure $CTR) || exit 666
(mkdir -p .build.g++-rel && cd .build.g++-rel && CXX=g++ cmake .. -DCMAKE_BUILD_TYPE=Release && cmake --build . $CMT && ctest --parallel 2 --output-on-failure $CTR) || exit 666
#(mkdir -p .build.g++.m32 && cd .build.g++.m32 && CXX=g++ CXXFLAGS="-m32" cmake .. -DCMAKE_BUILD_TYPE=Debug && cmake --build . && ctest --parallel 2 --output-on-failure) || exit 666
(mkdir -p .build.g++.plus && cd .build.g++.plus && CXX=g++ cmake .. -DCMAKE_BUILD_TYPE=Release -DCMAKE_CXX_STANDARD=23 -DBLA_VENDOR=OpenBLAS `#-DCMAKE_CXX_CPPCHECK="cppcheck;--enable=all;--suppress=missingIncludeSystem;--inline-suppr;--std=c++17;--checkers-report=cppcheck.report;--error-exitcode=1"` -DCMAKE_CXX_FLAGS="-D_GLIBCXX_DEBUG=1" -DCMAKE_CXX_FLAGS="-fimplicit-constexpr -fanalyzer -Wno-analyzer-null-dereference -Wno-analyzer-possible-null-dereference -Wno-analyzer-malloc-leak -Wno-analyzer-use-of-uninitialized-value -Wno-analyzer-use-after-free" && cmake --build . $CMT && ctest --parallel --output-on-failure -T memcheck $CTR) || exit 666
(mkdir -p .build.clang++.plus && cd .build.clang++.plus && CXX=clang++ cmake .. -DCMAKE_BUILD_TYPE=Release -DCMAKE_CXX_STANDARD=20 -DBLA_VENDOR=Generic -DCMAKE_CXX_CLANG_TIDY="clang-tidy" `#-DCMAKE_CXX_INCLUDE_WHAT_YOU_USE="iwyu;-Xiwyu;--mapping_file=/home/correaa/boost-multi/.iwyu-test.imp;-Xiwyu;--no_fwd_decls"` && cmake --build . $CMT && ASAN_OPTIONS="new_delete_type_mismatch=0" ctest --parallel --output-on-failure $CTR) || exit 666
#(mkdir -p .build.hip && cd .build.hip && CXX=clang++ cmake .. -DCMAKE_BUILD_TYPE=Release -DCMAKE_HIP_COMPILER=/opt/rocm/llvm/bin/clang++ -DCMAKE_CXX_FLAGS="-DMULTI_USE_HIP" -DCMAKE_HIP_FLAGS="-DMULTI_USE_HIP" -DENABLE_HIP=1 -DCMAKE_HIP_ARCHITECTURES=gfx90a && cmake --build . ) || exit 666
#(mkdir -p .build.g++-.cov && cd .build.g++-.cov && CXX=g++ cmake .. -DCMAKE_BUILD_TYPE=Debug -DCMAKE_CXX_FLAGS="--coverage -lgcov -fno-inline -fno-inline-small-functions -fno-default-inline" -DCMAKE_EXE_LINKER_FLAGS="-lgcov --coverage" && cmake --build . && ASAN_OPTIONS="new_delete_type_mismatch=0" ctest -j 12 --output-on-failure -T Test `# && lcov --directory . --capture --output-file coverage.info && lcov --remove coverage.info '/usr/*' --output-file coverage.info && lcov --list coverage.info && genhtml coverage.info`) || exit 666
if [[ $(uname -m) != 'aarch64' ]]; then
(mkdir -p .build.circle && cd .build.circle && CXX="$HOME/bin/circle" cmake .. -DCMAKE_BUILD_TYPE=Debug -DCMAKE_CXX_STANDARD=20 -DDISABLE_MPI=1 -DCMAKE_CXX_EXTENSIONS=OFF -DENABLE_CIRCLE=1 -DCMAKE_THREAD_LIBS_INIT="-lpthread" && cmake --build . $CMT && ctest --parallel --output-on-failure $CTR) || exit 666
(mkdir -p .build.nvcc && cd .build.nvcc && cmake .. -DCMAKE_BUILD_TYPE=Release -DCMAKE_CXX_STANDARD=20 -DENABLE_CUDA=1 -DCMAKE_CUDA_COMPILER=nvcc -DCMAKE_CUDA_HOST_COMPILER=g++ -DCMAKE_CXX_COMPILER=g++ -DCMAKE_CUDA_ARCHITECTURES=75 && cmake --build . $CMT && ctest --parallel --output-on-failure $CTR) || exit 666
(mkdir -p .build.icpx && cd .build.icpx && CXX=/opt/intel/oneapi/compiler/latest/bin/icpx cmake .. -DCMAKE_BUILD_TYPE=Release -DCMAKE_CXX_STANDARD=23 && cmake --build . $CMT && ctest --parallel --output-on-failure $CTR) || exit 666
(mkdir -p .build.nvc++ && cd .build.nvc++ && CXX=/opt/nvidia/hpc_sdk/Linux_x86_64/2024/compilers/bin/nvc++ cmake .. -DCMAKE_BUILD_TYPE=Release -DCMAKE_CXX_FLAGS="-stdpar=multicore" -DBLA_PREFER_PKGCONFIG=ON-DCMAKE_CXX_COMPILER=/opt/nvidia/hpc_sdk/Linux_x86_64/2024/compilers/bin/nvc++ && cmake --build . $CMT && ctest --parallel --output-on-failure $CTR) || exit 666
(mkdir -p .build.culang && cd .build.culang && cmake .. -DCMAKE_BUILD_TYPE=Release -DENABLE_CUDA=1 -DCMAKE_CUDA_COMPILER=clang++ -DCMAKE_CUDA_HOST_COMPILER=clang++ -DCMAKE_CXX_COMPILER=clang++ -DCMAKE_CUDA_ARCHITECTURES=75 && cmake --build . $CMT && ctest --parallel --output-on-failure $CTR) || exit 666
(mkdir -p .build.clang++.mull && cd .build.clang++.mull && CXX=clang++-16 cmake .. -DCMAKE_BUILD_TYPE=Debug -DCMAKE_CXX_FLAGS="-O0 -fpass-plugin=/usr/lib/mull-ir-frontend-16 -g -grecord-command-line -fprofile-instr-generate -fcoverage-mapping" && cmake --build . $CMT && (ls test/*.x | xargs -n 1 sh -c 'echo $0 && ((mull-runner-16 $0 --ld-search-path /usr/lib --test-program=ctest -- -j2 --stop-on-failure) || exit 255)') ) || exit 666
fi
# find ./detail/ -name "*.hpp" \( -exec iwyu -std=c++17 -Xiwyu --mapping_file=/usr/share/include-what-you-use/stl.c.headers.imp -Xiwyu --mapping_file=$HOME/boost-multi/.iwyu-test.imp -Xiwyu --error=0 -Xiwyu --max_line_length=200 -Xiwyu --quoted_includes_first -Xiwyu --cxx17ns {} -I$HOME/boost-multi/include/ \; -o -quit \)
## sudo setfacl --modify user:correaa:rw /var/run/docker.sock
# gitlab-runner exec docker rocm
# to recover from GPU error (e.g. after hibernating)
# fuser --kill /dev/nvidia-uvm
# sudo modprobe -r nvidia_uvm
# sudo modprobe nvidia_uvm
else
#(mkdir -p .build.g++-14 && cd .build.g++-14 && CXX=g++-14 cmake .. -DCMAKE_BUILD_TYPE=Debug -DCMAKE_CXX_STANDARD=23 && cmake --build . $CMT && ctest -j 12 --output-on-failure $CTR) || exit 666
(mkdir -p .build.c++.std23 && cd .build.c++.std23 && CXX=c++ CXXFLAGS="-fexperimental-library" cmake .. -DCMAKE_EXPORT_COMPILE_COMMANDS=ON -DCMAKE_BUILD_TYPE=Release -DCMAKE_CXX_STANDARD=23 && cmake --build . $CMT && ctest -j 12 --output-on-failure $CTR) || exit 666
#(mkdir -p .build.mull && cd .build.mull && CXX=c++ CXXFLAGS="-O1 -fpass-plugin=~/bin/mull-ir-frontend-16 -g -grecord-command-line -fprofile-instr-generate -fcoverage-mapping" cmake .. && cmake --build . $CMT && (ls *.x | xargs -n 1 sh -c 'echo $0 && ((~/bin/mull-runner-16 $0 -test-program=ctest -- -j2 --stop-on-failure) || exit 255)')) || exit 666
(mkdir -p .build.c++.asan && cd .build.c++.asan && CXX=c++ cmake .. -DCMAKE_BUILD_TYPE=Debug -DCMAKE_CXX_STANDARD=20 -DCMAKE_CXX_FLAGS="-D_LIBCPP_DEBUG=1 -fsanitize=undefined -fsanitize=pointer-overflow -fsanitize-trap=pointer-overflow -fsanitize=address -fno-omit-frame-pointer -fsanitize=signed-integer-overflow" && cmake --build . $CMT && ASAN_OPTIONS="new_delete_type_mismatch=1" ctest -j 12 --output-on-failure $CTR) || exit 666
(mkdir -p .build.c++.m32 && cd .build.c++.m32 && CXX=c++ cmake .. -DCMAKE_BUILD_TYPE=Debug && cmake --build . $CMT && ctest -j 12 --output-on-failure $CTR) || exit 666
(mkdir -p .build.c++.tidy && cd .build.c++.tidy && CXX=c++ cmake .. -DCMAKE_BUILD_TYPE=Debug -DCMAKE_CXX_CLANG_TIDY=clang-tidy -DCMAKE_CXX_CPPLINT="cpplint;--quiet" -DCMAKE_CXX_CPPCHECK="cppcheck;--enable=all;--suppress=missingIncludeSystem;--checkers-report=cppcheck.report;--suppress=checkersReport;--inline-suppr;--std=c++17;--error-exitcode=1" -DCMAKE_CXX_INCLUDE_WHAT_YOU_USE="include-what-you-use;-Xiwyu;--mapping_file=/Users/correatedesco1/boost-multi/.iwyu-test.imp;-Xiwyu;--no_fwd_decls;-Xiwyu;--error" && cmake --build . $CMT --verbose --parallel && ctest -j 12 --output-on-failure $CTR) || exit 666
#(mkdir -p .build.clang++.iwyu && cd .build.clang++.iwyu && CXX=clang++ cmake .. -DCMAKE_CXX_INCLUDE_WHAT_YOU_USE="iwyu" && make -j 10 && ctest -j 12 --output-on-failure) || exit
# TODO(correaa) make cppcheck work for all the code
#(find . -name '*.hpp' -exec cppcheck --enable=all --inline-suppr --suppress=unmatchedSuppression:{} --suppress=syntaxError --suppress=missingInclude --suppress=missingIncludeSystem --suppress=preprocessorErrorDirective --suppress=syntaxError --suppress=unusedFunction --suppress=arithOperationsOnVoidPointer --suppress=sizeofDereferencedVoidPointer -D__align__ -DCUDARTAPI --language=c++ --std=c++17 --error-exitcode=666 --suppress=unmatchedSuppression {} \;) || exit
fi
#fuser --kill /dev/nvidia-uvm
#while fuser --silent /dev/nvidia-uvm; do sleep 1; done
#echo "$0 $@: reload nvidia_uvm"
#modprobe -r nvidia_uvm && modprobe nvidia_uvm