name: linux-x64-gpu-clang-python on: push: branches: [master] paths: - '.github/workflows/linux-x64-gpu-clang-python.yml' - 'CMakeLists.txt' - 'cmake/**' - 'src/*' - 'src/layer/*' - 'src/layer/x86/**' - 'src/layer/vulkan/**' - 'python/**' pull_request: branches: [master] paths: - '.github/workflows/linux-x64-gpu-clang-python.yml' - 'CMakeLists.txt' - 'cmake/**' - 'src/*' - 'src/layer/*' - 'src/layer/x86/**' - 'src/layer/vulkan/**' - 'python/**' concurrency: group: linux-x64-gpu-clang-python-${{ github.ref }} cancel-in-progress: true permissions: contents: read jobs: linux-clang-gpu: runs-on: ubuntu-20.04 strategy: matrix: python-version: [3.7, 3.9, 3.11] steps: - uses: actions/checkout@v4 with: submodules: true - name: cache-vulkansdk id: cache-vulkansdk uses: actions/cache@v3 with: path: "1.3.236.0" key: vulkansdk-linux-x86_64-1.3.236.0 - name: vulkansdk if: steps.cache-vulkansdk.outputs.cache-hit != 'true' run: | wget https://sdk.lunarg.com/sdk/download/1.3.236.0/linux/vulkansdk-linux-x86_64-1.3.236.0.tar.gz?Human=true -O vulkansdk-linux-x86_64-1.3.236.0.tar.gz tar -xf vulkansdk-linux-x86_64-1.3.236.0.tar.gz rm -rf 1.3.236.0/source 1.3.236.0/samples find 1.3.236.0 -type f | grep -v -E 'vulkan|glslang' | xargs rm - name: cache-swiftshader id: cache-swiftshader uses: actions/cache@v3 with: path: swiftshader-install key: swiftshader-linux-install-20230420 - name: checkout-swiftshader if: steps.cache-swiftshader.outputs.cache-hit != 'true' uses: actions/checkout@v4 with: repository: google/swiftshader path: swiftshader ref: dd55e592406dc0bae219df11adec6363840aff4a - name: checkout-swiftshader-submodules if: steps.cache-swiftshader.outputs.cache-hit != 'true' run: | cd swiftshader git -c submodule."third_party/git-hooks".update=none submodule update --init --recursive - name: swiftshader if: steps.cache-swiftshader.outputs.cache-hit != 'true' run: | cd swiftshader mkdir -p build; cd build cmake -DCMAKE_INSTALL_PREFIX=install -DSWIFTSHADER_BUILD_EGL=FALSE -DSWIFTSHADER_BUILD_GLESv2=FALSE -DSWIFTSHADER_BUILD_GLES_CM=FALSE -DSWIFTSHADER_BUILD_VULKAN=TRUE -DSWIFTSHADER_BUILD_PVR=FALSE -DSWIFTSHADER_BUILD_TESTS=FALSE -DSWIFTSHADER_ENABLE_ASTC=FALSE -DSWIFTSHADER_WARNINGS_AS_ERRORS=FALSE -DREACTOR_BACKEND=Subzero -DREACTOR_DEFAULT_OPT_LEVEL=Default -DCMAKE_BUILD_TYPE=Release .. cmake --build . -j 2 mkdir $GITHUB_WORKSPACE/swiftshader-install cp Linux/* $GITHUB_WORKSPACE/swiftshader-install - name: set up python ${{ matrix.python-version }} uses: actions/setup-python@v4 with: python-version: ${{ matrix.python-version }} - name: Install dependencies run: | python -m pip install --upgrade pip pip install pytest setuptools wheel twine - name: build env: CC: clang CXX: clang++ run: | export VULKAN_SDK=`pwd`/1.3.236.0/x86_64 mkdir build && cd build cmake -DNCNN_VULKAN=ON -DNCNN_PYTHON=ON -DNCNN_DISABLE_RTTI=OFF -DNCNN_DISABLE_EXCEPTION=OFF -DNCNN_BUILD_TOOLS=OFF -DNCNN_BUILD_EXAMPLES=OFF .. cmake --build . -j 2 - name: install python run: cd python && pip install . - name: test run: | export VK_ICD_FILENAMES="$GITHUB_WORKSPACE/swiftshader-install/vk_swiftshader_icd.json" cd python && pytest tests - name: build and publish if: startsWith(github.ref, 'refs/tags') env: TWINE_USERNAME: __token__ TWINE_PASSWORD: ${{ secrets.TEST_PYPI_API_TOKEN }} TWINE_REPOSITORY_URL: "https://test.pypi.org/legacy/" run: | cd python python setup.py bdist_wheel twine upload dist/*