Add CallOnce which is a clone or wrapper of std::call_once #245
Workflow file for this run
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: windows | |
on: | |
push: | |
branches: [master] | |
paths: | |
- '.github/workflows/windows.yml' | |
- 'CMakeLists.txt' | |
- 'cmake/**' | |
- 'src/*' | |
- 'src/layer/*' | |
- 'src/layer/x86/**' | |
- 'src/layer/vulkan/**' | |
- 'tests/**' | |
- 'tools/**' | |
- '!tools/pnnx/**' | |
- 'examples/**' | |
pull_request: | |
branches: [master] | |
paths: | |
- '.github/workflows/windows.yml' | |
- 'CMakeLists.txt' | |
- 'cmake/**' | |
- 'src/*' | |
- 'src/layer/*' | |
- 'src/layer/x86/**' | |
- 'src/layer/vulkan/**' | |
- 'tests/**' | |
- 'tools/**' | |
- '!tools/pnnx/**' | |
- 'examples/**' | |
concurrency: | |
group: windows-${{ github.ref }} | |
cancel-in-progress: true | |
permissions: | |
contents: read | |
jobs: | |
windows-gpu: | |
name: ${{ matrix.vs-version }} | |
runs-on: ${{ matrix.os }} | |
strategy: | |
matrix: | |
include: | |
- vs-version: vs2015 | |
toolset-version: v140 | |
os: windows-2019 | |
- vs-version: vs2017 | |
toolset-version: v141 | |
os: windows-2019 | |
- vs-version: vs2019 | |
toolset-version: v142 | |
os: windows-2022 | |
- vs-version: vs2022 | |
toolset-version: v143 | |
os: windows-2022 | |
env: | |
UseMultiToolTask: true | |
steps: | |
- uses: actions/checkout@v4 | |
with: | |
submodules: true | |
- name: cache-protobuf | |
id: cache-protobuf | |
uses: actions/cache@v4 | |
with: | |
path: "protobuf-install" | |
key: protobuf-${{ matrix.vs-version }}-x64-install-2 | |
- name: protobuf | |
if: steps.cache-protobuf.outputs.cache-hit != 'true' | |
run: | | |
Invoke-WebRequest -Uri https://github.com/protocolbuffers/protobuf/archive/v3.11.2.zip -OutFile protobuf-3.11.2.zip | |
7z x ./protobuf-3.11.2.zip | |
cd protobuf-3.11.2 | |
mkdir build-${{ matrix.vs-version }}; cd build-${{ matrix.vs-version }}; cmake -T ${{ matrix.toolset-version }},host=x64 -A x64 -DCMAKE_INSTALL_PREFIX="$env:GITHUB_WORKSPACE\protobuf-install" -Dprotobuf_BUILD_TESTS=OFF -Dprotobuf_MSVC_STATIC_RUNTIME=OFF -DNCNN_BUILD_TESTS=ON ../cmake | |
cmake --build . --config Release -j 4 | |
cmake --build . --config Release --target install | |
- name: cache-swiftshader | |
if: matrix.vs-version != 'vs2015' && matrix.vs-version != 'vs2017' | |
id: cache-swiftshader | |
uses: actions/cache@v4 | |
with: | |
path: swiftshader-install | |
key: swiftshader-${{ matrix.vs-version }}-x64-install-20240622 | |
- name: checkout-swiftshader | |
if: matrix.vs-version != 'vs2015' && matrix.vs-version != 'vs2017' && steps.cache-swiftshader.outputs.cache-hit != 'true' | |
uses: actions/checkout@v4 | |
with: | |
repository: google/swiftshader | |
path: swiftshader | |
ref: de870ac7518fe2b6bb651ecc22fc36647cf7b986 | |
- name: checkout-swiftshader-submodules | |
if: matrix.vs-version != 'vs2015' && matrix.vs-version != 'vs2017' && 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: matrix.vs-version != 'vs2015' && matrix.vs-version != 'vs2017' && steps.cache-swiftshader.outputs.cache-hit != 'true' | |
run: | | |
cd swiftshader | |
mkdir build-${{ matrix.vs-version }}; cd build-${{ matrix.vs-version }} | |
cmake -T ${{ matrix.toolset-version }},host=x64 -A x64 -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 . --config Release -j 4 | |
mkdir "$env:GITHUB_WORKSPACE/swiftshader-install" | |
Copy-Item -Path "Windows\*" -Destination "$env:GITHUB_WORKSPACE\swiftshader-install" | |
- name: x64 | |
run: | | |
mkdir build-x64; cd build-x64 | |
cmake -T ${{ matrix.toolset-version }},host=x64 -A x64 -Dprotobuf_DIR="$env:GITHUB_WORKSPACE\protobuf-install\cmake" -DNCNN_VULKAN=ON -DNCNN_BUILD_TESTS=ON .. | |
cmake --build . --config Release -j 4 | |
- name: x64-test | |
if: matrix.vs-version != 'vs2015' && matrix.vs-version != 'vs2017' | |
run: | | |
echo "[Processor]`nThreadCount=1`n" > build-x64/tests/Release/SwiftShader.ini | |
Copy-Item -Path "$env:GITHUB_WORKSPACE\swiftshader-install\vulkan-1.dll" -Destination 'build-x64\tests' | |
cd build-x64; ctest -C Release --output-on-failure -j 4 | |
- name: x64-sse2 | |
run: | | |
mkdir build-x64-sse2; cd build-x64-sse2 | |
cmake -T ${{ matrix.toolset-version }},host=x64 -A x64 -DNCNN_RUNTIME_CPU=OFF -DNCNN_XOP=OFF -DNCNN_AVX=OFF -DNCNN_AVX2=OFF -DNCNN_AVX512=OFF -DNCNN_BUILD_TESTS=ON -DNCNN_DISABLE_RTTI=ON -DNCNN_DISABLE_EXCEPTION=ON -DNCNN_BUILD_TOOLS=OFF -DNCNN_BUILD_EXAMPLES=OFF .. | |
cmake --build . --config Release -j 4 | |
- name: x64-sse2-test | |
run: cd build-x64-sse2; ctest -C Release --output-on-failure -j 4 | |
- name: x64-avx | |
run: | | |
mkdir build-x64-avx; cd build-x64-avx | |
cmake -T ${{ matrix.toolset-version }},host=x64 -A x64 -DNCNN_RUNTIME_CPU=OFF -DNCNN_XOP=OFF -DNCNN_AVX=ON -DNCNN_AVX2=OFF -DNCNN_AVX512=OFF -DNCNN_BUILD_TESTS=ON -DNCNN_DISABLE_RTTI=ON -DNCNN_DISABLE_EXCEPTION=ON -DNCNN_BUILD_TOOLS=OFF -DNCNN_BUILD_EXAMPLES=OFF .. | |
cmake --build . --config Release -j 4 | |
- name: x64-avx-test | |
run: cd build-x64-avx; ctest -C Release --output-on-failure -j 4 | |
- name: x86 | |
run: | | |
mkdir build-x86; cd build-x86 | |
cmake -T ${{ matrix.toolset-version }},host=x64 -A Win32 -DNCNN_SHARED_LIB=ON -DNCNN_BUILD_TESTS=ON -DNCNN_BUILD_TOOLS=OFF -DNCNN_BUILD_EXAMPLES=OFF .. | |
cmake --build . --config Release -j 4 | |
- name: x86-test | |
run: | | |
Copy-Item -Path "build-x86\src\Release\ncnn.dll" -Destination 'build-x86\tests' | |
cd build-x86; ctest -C Release --output-on-failure -j 4 |