Fangjun Kuang
Committed by GitHub

fix building on linux with GPU (#249)

  1 +name: linux-gpu
  2 +
  3 +on:
  4 + push:
  5 + branches:
  6 + - master
  7 + tags:
  8 + - '*'
  9 + paths:
  10 + - '.github/workflows/linux-gpu.yaml'
  11 + - '.github/scripts/test-online-transducer.sh'
  12 + - '.github/scripts/test-offline-transducer.sh'
  13 + - '.github/scripts/test-offline-ctc.sh'
  14 + - 'CMakeLists.txt'
  15 + - 'cmake/**'
  16 + - 'sherpa-onnx/csrc/*'
  17 + - 'sherpa-onnx/c-api/*'
  18 + - 'c-api-examples/**'
  19 + pull_request:
  20 + branches:
  21 + - master
  22 + paths:
  23 + - '.github/workflows/linux-gpu.yaml'
  24 + - '.github/scripts/test-online-transducer.sh'
  25 + - '.github/scripts/test-offline-transducer.sh'
  26 + - '.github/scripts/test-offline-ctc.sh'
  27 + - 'CMakeLists.txt'
  28 + - 'cmake/**'
  29 + - 'sherpa-onnx/csrc/*'
  30 + - 'sherpa-onnx/c-api/*'
  31 + release:
  32 + types:
  33 + - published
  34 +
  35 + workflow_dispatch:
  36 + inputs:
  37 + release:
  38 + description: "Whether to release"
  39 + type: boolean
  40 +
  41 +env:
  42 + RELEASE:
  43 + |- # Release if there is a release tag name or a release flag in workflow_dispatch
  44 + ${{ github.event.release.tag_name != '' || github.event.inputs.release == 'true' }}
  45 +
  46 +concurrency:
  47 + group: linux-gpu-${{ github.ref }}
  48 + cancel-in-progress: true
  49 +
  50 +jobs:
  51 + linux_gpu:
  52 + runs-on: ${{ matrix.os }}
  53 + name: ${{ matrix.build_type }}
  54 + strategy:
  55 + fail-fast: false
  56 + matrix:
  57 + os: [ubuntu-latest]
  58 + build_type: [Release, Debug]
  59 +
  60 + steps:
  61 + - uses: actions/checkout@v2
  62 + with:
  63 + fetch-depth: 0
  64 +
  65 + - name: Configure CMake
  66 + shell: bash
  67 + run: |
  68 + mkdir build
  69 + cd build
  70 + cmake -D CMAKE_BUILD_TYPE=${{ matrix.build_type }} -DCMAKE_INSTALL_PREFIX=./install -DBUILD_SHARED_LIBS=ON -DSHERPA_ONNX_ENABLE_GPU=ON ..
  71 +
  72 + - name: Build sherpa-onnx for ubuntu
  73 + shell: bash
  74 + run: |
  75 + cd build
  76 + make -j2
  77 + make install
  78 +
  79 + ls -lh lib
  80 + ls -lh bin
  81 +
  82 + - name: Display dependencies of sherpa-onnx for linux
  83 + shell: bash
  84 + run: |
  85 + file build/bin/sherpa-onnx
  86 + readelf -d build/bin/sherpa-onnx
  87 +
  88 + - name: Test offline Whisper
  89 + shell: bash
  90 + run: |
  91 + export PATH=$PWD/build/bin:$PATH
  92 + export EXE=sherpa-onnx-offline
  93 +
  94 + .github/scripts/test-offline-whisper.sh
  95 +
  96 + - name: Test offline CTC
  97 + shell: bash
  98 + run: |
  99 + export PATH=$PWD/build/bin:$PATH
  100 + export EXE=sherpa-onnx-offline
  101 +
  102 + .github/scripts/test-offline-ctc.sh
  103 +
  104 + - name: Test offline transducer
  105 + shell: bash
  106 + run: |
  107 + export PATH=$PWD/build/bin:$PATH
  108 + export EXE=sherpa-onnx-offline
  109 +
  110 + .github/scripts/test-offline-transducer.sh
  111 +
  112 + - name: Test online transducer
  113 + shell: bash
  114 + run: |
  115 + export PATH=$PWD/build/bin:$PATH
  116 + export EXE=sherpa-onnx
  117 +
  118 + .github/scripts/test-online-transducer.sh
  119 +
  120 + - name: Test online transducer (C API)
  121 + shell: bash
  122 + run: |
  123 + export PATH=$PWD/build/bin:$PATH
  124 + export EXE=decode-file-c-api
  125 +
  126 + .github/scripts/test-online-transducer.sh
  127 +
  128 + - name: Copy files
  129 + if: env.RELEASE == 'true'
  130 + shell: bash
  131 + run: |
  132 + SHERPA_ONNX_VERSION=v$(grep "SHERPA_ONNX_VERSION" ./CMakeLists.txt | cut -d " " -f 2 | cut -d '"' -f 2)
  133 +
  134 + dst=sherpa-onnx-${SHERPA_ONNX_VERSION}-linux-x64-gpu
  135 + mkdir $dst
  136 +
  137 + cp -a build/install/bin $dst/
  138 + cp -a build/install/lib $dst/
  139 + cp -a build/install/include $dst/
  140 +
  141 + tree $dst
  142 +
  143 + tar cjvf ${dst}.tar.bz2 $dst
  144 +
  145 + - name: Release pre-compiled binaries and libs for linux x64
  146 + if: env.RELEASE == 'true' && matrix.build_type == 'Release'
  147 + uses: svenstaro/upload-release-action@v2
  148 + with:
  149 + file_glob: true
  150 + overwrite: true
  151 + file: sherpa-onnx-*linux-x64-gpu.tar.bz2
@@ -82,6 +82,19 @@ add_library(onnxruntime_providers_cuda SHARED IMPORTED) @@ -82,6 +82,19 @@ add_library(onnxruntime_providers_cuda SHARED IMPORTED)
82 set_target_properties(onnxruntime_providers_cuda PROPERTIES 82 set_target_properties(onnxruntime_providers_cuda PROPERTIES
83 IMPORTED_LOCATION ${location_onnxruntime_cuda_lib} 83 IMPORTED_LOCATION ${location_onnxruntime_cuda_lib}
84 ) 84 )
  85 +message(STATUS "location_onnxruntime_cuda_lib: ${location_onnxruntime_cuda_lib}")
  86 +
  87 +# for libonnxruntime_providers_shared.so
  88 +find_library(location_onnxruntime_providers_shared_lib onnxruntime_providers_shared
  89 + PATHS
  90 + "${onnxruntime_SOURCE_DIR}/lib"
  91 + NO_CMAKE_SYSTEM_PATH
  92 +)
  93 +add_library(onnxruntime_providers_shared SHARED IMPORTED)
  94 +set_target_properties(onnxruntime_providers_shared PROPERTIES
  95 + IMPORTED_LOCATION ${location_onnxruntime_providers_shared_lib}
  96 +)
  97 +message(STATUS "location_onnxruntime_providers_shared_lib: ${location_onnxruntime_providers_shared_lib}")
85 98
86 file(GLOB onnxruntime_lib_files "${onnxruntime_SOURCE_DIR}/lib/libonnxruntime*") 99 file(GLOB onnxruntime_lib_files "${onnxruntime_SOURCE_DIR}/lib/libonnxruntime*")
87 message(STATUS "onnxruntime lib files: ${onnxruntime_lib_files}") 100 message(STATUS "onnxruntime lib files: ${onnxruntime_lib_files}")
@@ -82,9 +82,18 @@ file(COPY ${onnxruntime_SOURCE_DIR}/lib/onnxruntime.dll @@ -82,9 +82,18 @@ file(COPY ${onnxruntime_SOURCE_DIR}/lib/onnxruntime.dll
82 ${CMAKE_BINARY_DIR}/bin/${CMAKE_BUILD_TYPE} 82 ${CMAKE_BINARY_DIR}/bin/${CMAKE_BUILD_TYPE}
83 ) 83 )
84 84
  85 +# for onnxruntime_providers_cuda.dll
  86 +
  87 +find_library(location_onnxruntime_providers_cuda_lib onnxruntime_providers_cuda
  88 + PATHS
  89 + "${onnxruntime_SOURCE_DIR}/lib"
  90 + NO_CMAKE_SYSTEM_PATH
  91 +)
  92 +message(STATUS "location_onnxruntime_providers_cuda_lib: ${location_onnxruntime_providers_cuda_lib}")
  93 +
85 add_library(onnxruntime_providers_cuda SHARED IMPORTED) 94 add_library(onnxruntime_providers_cuda SHARED IMPORTED)
86 set_target_properties(onnxruntime_providers_cuda PROPERTIES 95 set_target_properties(onnxruntime_providers_cuda PROPERTIES
87 - IMPORTED_LOCATION ${location_onnxruntime} 96 + IMPORTED_LOCATION ${location_onnxruntime_providers_cuda_lib}
88 INTERFACE_INCLUDE_DIRECTORIES "${onnxruntime_SOURCE_DIR}/include" 97 INTERFACE_INCLUDE_DIRECTORIES "${onnxruntime_SOURCE_DIR}/include"
89 ) 98 )
90 99
@@ -93,7 +102,28 @@ set_property(TARGET onnxruntime_providers_cuda @@ -93,7 +102,28 @@ set_property(TARGET onnxruntime_providers_cuda
93 IMPORTED_IMPLIB "${onnxruntime_SOURCE_DIR}/lib/onnxruntime_providers_cuda.lib" 102 IMPORTED_IMPLIB "${onnxruntime_SOURCE_DIR}/lib/onnxruntime_providers_cuda.lib"
94 ) 103 )
95 104
96 -file(COPY ${onnxruntime_SOURCE_DIR}/lib/onnxruntime_providers_cuda.dll 105 +# for onnxruntime_providers_shared.dll
  106 +
  107 +find_library(location_onnxruntime_providers_shared_lib onnxruntime_providers_shared
  108 + PATHS
  109 + "${onnxruntime_SOURCE_DIR}/lib"
  110 + NO_CMAKE_SYSTEM_PATH
  111 +)
  112 +message(STATUS "location_onnxruntime_providers_shared_lib: ${location_onnxruntime_providers_shared_lib}")
  113 +add_library(onnxruntime_providers_shared SHARED IMPORTED)
  114 +set_target_properties(onnxruntime_providers_shared PROPERTIES
  115 + IMPORTED_LOCATION ${location_onnxruntime_providers_shared_lib}
  116 + INTERFACE_INCLUDE_DIRECTORIES "${onnxruntime_SOURCE_DIR}/include"
  117 +)
  118 +set_property(TARGET onnxruntime_providers_shared
  119 + PROPERTY
  120 + IMPORTED_IMPLIB "${onnxruntime_SOURCE_DIR}/lib/onnxruntime_providers_shared.lib"
  121 +)
  122 +
  123 +file(
  124 + COPY
  125 + ${onnxruntime_SOURCE_DIR}/lib/onnxruntime_providers_cuda.dll
  126 + ${onnxruntime_SOURCE_DIR}/lib/onnxruntime_providers_shared.dll
97 DESTINATION 127 DESTINATION
98 ${CMAKE_BINARY_DIR}/bin/${CMAKE_BUILD_TYPE} 128 ${CMAKE_BINARY_DIR}/bin/${CMAKE_BUILD_TYPE}
99 ) 129 )
@@ -90,6 +90,7 @@ endif() @@ -90,6 +90,7 @@ endif()
90 if(SHERPA_ONNX_ENABLE_GPU) 90 if(SHERPA_ONNX_ENABLE_GPU)
91 target_link_libraries(sherpa-onnx-core 91 target_link_libraries(sherpa-onnx-core
92 onnxruntime_providers_cuda 92 onnxruntime_providers_cuda
  93 + onnxruntime_providers_shared
93 ) 94 )
94 endif() 95 endif()
95 96