From 61953a7c85c8fab5e353aebb8ebaa54c158d3919 Mon Sep 17 00:00:00 2001 From: Ian Faust Date: Thu, 8 Aug 2024 17:36:05 +0200 Subject: [PATCH] [CI, Enhancement] generate a nightly oneDAL build for sklearnex Github Actions (#2863) * Create nightly-build.yml * Update nightly-build.yml * Update nightly-build.yml * move dpc portions to scripts * add end lines * readd for testing * move to complete powershell * wget to ps native * retry using vars.bat * change back to cmd * modify vc for dpc building * add deletion * Update ci.yml * remove changes to DevOps CI * Update nightly-build.yml * Update install_dpc.ps1 * Update install_dpc.ps1 * re-enable on PR to verify ubuntu-22.04 * Update nightly-build.yml --- .ci/scripts/collect_opencl_rt.ps1 | 21 +++++ .ci/scripts/install_dpc.ps1 | 27 +++++++ .github/workflows/nightly-build.yml | 116 ++++++++++++++++++++++++++++ 3 files changed, 164 insertions(+) create mode 100644 .ci/scripts/collect_opencl_rt.ps1 create mode 100644 .ci/scripts/install_dpc.ps1 create mode 100644 .github/workflows/nightly-build.yml diff --git a/.ci/scripts/collect_opencl_rt.ps1 b/.ci/scripts/collect_opencl_rt.ps1 new file mode 100644 index 00000000000..82714f372bd --- /dev/null +++ b/.ci/scripts/collect_opencl_rt.ps1 @@ -0,0 +1,21 @@ +#=============================================================================== +# Copyright contributors to the oneDAL project +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +#=============================================================================== + +echo "Download intel opencl runtime" +(new-object System.Net.WebClient).DownloadFile("https://registrationcenter-download.intel.com/akdlm/IRC_NAS/d9883ab0-0e26-47fd-9612-950b95460d72/w_opencl_runtime_p_2024.2.0.980.exe", "opencl_installer.exe") +echo "Unpacking opencl runtime installer" +Start-Process ".\opencl_installer.exe" -ArgumentList "--s --x --f ocl" -Wait +Move-Item -Path ".\ocl\w_opencl_runtime_p_2024.2.0.980.msi" -Destination ".\opencl_rt.msi" diff --git a/.ci/scripts/install_dpc.ps1 b/.ci/scripts/install_dpc.ps1 new file mode 100644 index 00000000000..e822a9de0ed --- /dev/null +++ b/.ci/scripts/install_dpc.ps1 @@ -0,0 +1,27 @@ +#=============================================================================== +# Copyright contributors to the oneDAL project +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +#=============================================================================== +echo "Download intel DPC++ compiler" +(new-object System.Net.WebClient).DownloadFile("https://registrationcenter-download.intel.com/akdlm/IRC_NAS/7991e201-ca0f-4689-bdb6-1ed73a8246fd/w_dpcpp-cpp-compiler_p_2024.2.0.491_offline.exe", "dpcpp_installer.exe") +echo "Unpacking DPC++ installer" +Start-Process ".\dpcpp_installer.exe" -ArgumentList "--s --x --f oneAPI" -Wait +echo "Installing DPC++ compiler" +# Installing the compiler can take upwards of 20 minutes +# It does not print any messages during installation +Start-Process ".\oneAPI\bootstrapper.exe" -ArgumentList "-s --eula=accept --install-dir=dpcpp" -Wait +echo "remove installer files" +Remove-Item -LiteralPath .\oneAPI -Force -Recurse -ErrorAction Ignore +Remove-Item .\dpcpp_installer.exe -Force +echo "DPC++ install complete" diff --git a/.github/workflows/nightly-build.yml b/.github/workflows/nightly-build.yml new file mode 100644 index 00000000000..6848eecc21c --- /dev/null +++ b/.github/workflows/nightly-build.yml @@ -0,0 +1,116 @@ +#=============================================================================== +# Copyright contributors to the oneDAL project +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +#=============================================================================== + +name: Nightly-build + +on: + schedule: + - cron: '0 21 * * *' + workflow_dispatch: + +permissions: + contents: read + +jobs: + build_lnx: + name: oneDAL Linux nightly build + if: github.repository == 'oneapi-src/oneDAL' + runs-on: ubuntu-22.04 + timeout-minutes: 120 + + steps: + - name: Checkout oneDAL + uses: actions/checkout@v4 + with: + repository: oneapi-src/oneDAL + - name: Install DPC++ + run: .ci/env/apt.sh dpcpp + - name: System Info + run: | + source /opt/intel/oneapi/compiler/latest/env/vars.sh + .ci/scripts/describe_system.sh + - name: Make daal + run: | + source /opt/intel/oneapi/compiler/latest/env/vars.sh + .ci/scripts/build.sh --compiler icx --optimizations avx2 --target daal + - name: Make onedal + run: | + source /opt/intel/oneapi/compiler/latest/env/vars.sh + .ci/scripts/build.sh --compiler icx --optimizations avx2 --target onedal + - name: Archive build + uses: actions/upload-artifact@v4 + with: + name: __release_lnx + path: ./__release_lnx_icx + + build_win: + name: oneDAL Windows nightly build + if: github.repository == 'oneapi-src/oneDAL' + runs-on: windows-2022 + timeout-minutes: 120 + + steps: + - name: Checkout oneDAL + uses: actions/checkout@v4 + with: + repository: oneapi-src/oneDAL + - name: Install DPC++ + run: | + & .ci/scripts/install_dpc.ps1 + - name: Prepare Intel OpenCL CPU runtime + run: | + # Store the unpacked runtime to centralize and reduce external downloads + & .ci/scripts/collect_opencl_rt.ps1 + - name: System Info + shell: cmd + run: | + set PATH=C:\msys64\usr\bin;%PATH% + pip install cpufeature + call .\dpcpp\compiler\latest\env\vars.bat + bash .ci/scripts/describe_system.sh + - name: Make daal + shell: cmd + run: | + call .\.ci\scripts\build.bat daal vc avx2 + - name: Make onedal + shell: cmd + run: | + call .\.ci\scripts\build.bat onedal_c vc avx2 + - name: Make oneapi_dpc + shell: cmd + run: | + call .\dpcpp\compiler\latest\env\vars.bat + call .\dpcpp\compiler\latest\bin\sycl-ls.exe + call .\.ci\scripts\build.bat onedal_dpc vc avx2 + - name: Archive build + uses: actions/upload-artifact@v4 + with: + name: __release_win + path: .\__release_win_vc + - name: Compress DPC++ + shell: cmd + run: | + tar -cvzf icx.zip .\dpcpp + - name: Archive DPC++ + uses: actions/upload-artifact@v4 + with: + name: icx_compiler + path: .\icx.zip + - name: Archive Intel OpenCL CPU runtime + uses: actions/upload-artifact@v4 + with: + name: opencl_rt_installer + path: .\opencl_rt.msi