仅为选定的 GPU 架构编译 cupy

Compile cupy only for selected GPU architecture

查看 git 存储库 (https://github.com/cupy/cupy) and documentation (https://docs-cupy.chainer.org/en/stable/install.html) 我没有找到任何生成仅与当前硬件 (GPU) 相关的可执行文件的方法。

举个例子,在opencv中(为了大大减少旧环境下8h以上的编译时间),可以指定GPU的架构。 (这里是一个仅从与硬件相关的源代码编译 opencv 的示例)

> 导出 JAVA_HOME=/opt/DEVOPS/SDK/jvm/jdk-11.0.4/ ; cmake3 .. -D INSTALL_C_EXAMPLES=ON -D INSTALL_PYTHON_EXAMPLES=ON -D WITH_CUDA=ON -D WITH_GTK=ON -D WITH_OPENGL=ON -D ENABLE_CXX11=ON -D BUILD_EXAMPLES=ON -D OPENCV_EXTRA_MODULES_PATH=/opt/SP/packages/opencv_contrib/modules -D BUILD_opencv_java=ON -D BUILD_opencv_python2=ON -D BUILD_opencv_python3=ON -D CUDA_FAST_MATH=ON -D CUDA_GENERATION="Maxwell" -D WITH_OPENMP=ON -D BUILD_TESTS=OFF -D OPENCV_ENABLE_NONFREE=ON -D BUILD_TIFF=ON -D WITH_OPENCL=ON -D WITH_IPP =ON -D WITH_TBB=ON -D WITH_EIGEN=ON -D WITH_V4L=ON -D BUILD_TESTS=OFF -D BUILD_PERF_TESTS=OFF -D CMAKE_BUILD_TYPE=RELEASE -D CMAKE_INSTALL_PREFIX=$(python3 -c "import sys; print(sys.prefix)") -D PYTHON3_EXECUTABLE=$(which python3) -D PYTHON3_INCLUDE_DIR=$(python3 -c "from distutils.sysconfig import get_python_inc; print(get_python_inc())") -D PYTHON3_PACKAGES_PATH=$(python3 -c "from distutils.sysconfig import get_python_lib; print(get_python_lib())") -D PYTHON3_LIBRARY= /opt/DEVOPS/SDK/anaconda3/lib -D OPENCV_PYTHON3_INSTALL_PATH=/opt/DEVOPS/SDK/anaconda3/lib/python3.7/site-packages -D PYTHON3_DEFAULT_EXECUTABLE=/opt/DEVOPS/SDK/anaconda3/bin/python -D OPENCV_ENABLE_NONFREE =开

通过这种方式,将只为给定的架构生成代码。

我发现这个有用的提交。 (https://github.com/cupy/cupy/commit/4d3b05c4f010d62f9daf92a049fa2e8a789f6cc2)

有人试过只为给定的架构编译 Cupy 强制'--generate-code'参数为'--generate-code=arch=compute_XX,code=compute_XX' 而不是使用所有可能的拱作为默认值?

default compilation arch

CUPY_NVCC_GENERATE_CODE 环境变量在 v7.0.0b2 或更高版本中可用。 https://github.com/cupy/cupy/pull/2293 你可以使用例如export CUPY_NVCC_GENERATE_CODE="arch=compute_50,code=sm_50" 构建仅在指定硬件上运行的 CuPy。