Skip to content

Commit

Permalink
Add build and run Resnet50 and VGG16 actions
Browse files Browse the repository at this point in the history
to the tartan CI job. Also adding support to
create artifacts and publish OCK demo.
  • Loading branch information
MaryaSharf committed Jan 18, 2024
1 parent 0a09502 commit 449a012
Show file tree
Hide file tree
Showing 6 changed files with 239 additions and 62 deletions.
2 changes: 1 addition & 1 deletion .github/actions/build_portBLAS_action/action.yml
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@ runs:
export LD_LIBRARY_PATH=${{ inputs.workspace }}/linux_nightly_release/lib:$LD_LIBRARY_PATH
export CMAKE_CXX_COMPILER=${{ inputs.workspace }}/linux_nightly_release/bin/clang++
export CMAKE_C_COMPILER=${{ inputs.workspace }}/linux_nightly_release/bin/clang
export OCL_ICD_FILENAMES=${{ inputs.workspace }}/build/lib/libCL.so
export OCL_ICD_FILENAMES=${{ inputs.workspace }}/install/lib/libCL.so
export CXX=${{ inputs.workspace }}/linux_nightly_release/bin/clang++
# Note: With default options enabled, portBLAS supports complex math using
# <ext/oneapi/experimental/sycl_complex.hpp>. It was removed in DPC++ in 0b5757bf.
Expand Down
2 changes: 1 addition & 1 deletion .github/actions/build_portDNN_action/action.yml
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@ runs:
export LD_LIBRARY_PATH=${{ inputs.workspace }}/linux_nightly_release/lib:$LD_LIBRARY_PATH
export CMAKE_CXX_COMPILER=${{ inputs.workspace }}/linux_nightly_release/bin/clang++
export CMAKE_C_COMPILER=${{ inputs.workspace }}/linux_nightly_release/bin/clang
export OCL_ICD_FILENAMES=${{ inputs.workspace }}/build/lib/libCL.so
export OCL_ICD_FILENAMES=${{ inputs.workspace }}/install/lib/libCL.so
cmake -B portDNN_build_dir portDNN -GNinja -DCMAKE_CXX_COMPILER=$(pwd)/linux_nightly_release/bin/clang++ -DSNN_BUILD_BENCHMARKS=OFF -DSNN_BENCH_SYCLBLAS=OFF -DSNN_BUILD_DOCUMENTATION=OFF
ninja -C portDNN_build_dir
90 changes: 90 additions & 0 deletions .github/actions/build_vgg_resnet_action/action.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,90 @@
name: Setup and build networks; VGG16, Resnet50
description: Build and run VGG16 and Resnet50 with oneAPI base toolkit and oneAPI-Construction-Kit

inputs:
workspace:
description: 'Main workflow workspace'
default: ${{ github.workspace }}

runs:
# We don't want a new docker just a list of steps, so mark as composite
using: "composite"
steps:
- name: setup python
uses: actions/setup-python@v4
with:
python-version: '3.8'

- name: Install Python libraries and system dependencies
shell: bash
run: |
pip install --user requests numpy h5py Pillow
sudo add-apt-repository universe
sudo apt-get update
sudo apt-get install -y libblas-dev libopenblas64-dev libopenblas-dev libpthread-stubs0-dev libboost-all-dev
- name: Clone portDNN
shell: bash
run: git clone --recursive --depth 1 --single-branch https://github.com/codeplaysoftware/portDNN.git

- name: Download Daily Release
shell: bash
run: |
wget "https://github.com/intel/llvm/releases/download/nightly-2023-12-18/sycl_linux.tar.gz"
mkdir linux_nightly_release
tar -xzf sycl_linux.tar.gz -C linux_nightly_release
- name: Download Image for testing
shell: bash
run: |
wget https://upload.wikimedia.org/wikipedia/commons/8/8d/Labrador_Retriever_Molly.jpg
- name: Set up environment and build networks
shell: bash
run: |
export LD_LIBRARY_PATH=${{ inputs.workspace }}/build/lib:${{ inputs.workspace }}/linux_nightly_release/lib/libsycl.so:${{ inputs.workspace }}/linux_nightly_release/lib:$LD_LIBRARY_PATH
export CMAKE_CXX_COMPILER=${{ inputs.workspace }}/linux_nightly_release/bin/clang++
export CMAKE_C_COMPILER=${{ inputs.workspace }}/linux_nightly_release/bin/clang
export CA_HAL_DEBUG=1
export CA_PROFILE_LEVEL=3
export ONEAPI_DEVICE_SELECTOR=opencl:acc
export OCL_ICD_FILENAMES=${{ inputs.workspace }}/build/lib/libCL.so
# As the oneAPI basetoolkit release has a whitelist of devices, it filters out RefSi.
# To override it, as a temporary solution we can point SYCL_CONFIG_FILE_NAME to ``.
# This way it doesn't set the default sycl.conf.
export SYCL_CONFIG_FILE_NAME=""
export portDNN_source=$(pwd)/portDNN
export OCL_ICD_VENDORS=/dev/null
# VGG16
mkdir vdata
cd vdata
wget --no-verbose https://storage.googleapis.com/tensorflow/keras-applications/vgg16/vgg16_weights_tf_dim_ordering_tf_kernels.h5
python $portDNN_source/samples/networks/vgg/h5toBin.py vgg16_weights_tf_dim_ordering_tf_kernels.h5
cd ..
# Resnet50
mkdir rdata
cd rdata
wget --no-verbose https://storage.googleapis.com/tensorflow/keras-applications/resnet/resnet50_weights_tf_dim_ordering_tf_kernels.h5
python $portDNN_source/samples/networks/resnet50/h5toBin.py resnet50_weights_tf_dim_ordering_tf_kernels.h5
cd ..
# Preparing an image
python $portDNN_source/samples/networks/img2bin.py $(pwd)/Labrador_Retriever_Molly.jpg
# Testing on image for VGG16
CA_HAL_DEBUG=1 CA_PROFILE_LEVEL=3 OCL_ICD_FILENAMES=${{ inputs.workspace }}/build/lib/libCL.so ONEAPI_DEVICE_SELECTOR=opencl:acc SYCL_CONFIG_FILE_NAME= ${{ inputs.workspace }}/portDNN_build_dir/samples/networks/vgg/vgg vdata/ $(pwd)/Labrador_Retriever_Molly.jpg.bin
# Testing on image for Resnet50
CA_HAL_DEBUG=1 CA_PROFILE_LEVEL=3 OCL_ICD_FILENAMES=${{ inputs.workspace }}/build/lib/libCL.so ONEAPI_DEVICE_SELECTOR=opencl:acc SYCL_CONFIG_FILE_NAME= ${{ inputs.workspace }}/portDNN_build_dir/samples/networks/resnet50/resnet50 rdata/ $(pwd)/Labrador_Retriever_Molly.jpg.bin
- name: Package artifacts
shell: bash
run: |
tar -cvzf network_artifacts.tar.gz vdata rdata Labrador_Retriever_Molly.jpg Labrador_Retriever_Molly.jpg.bin
- name: Upload Artifacts
uses: actions/upload-artifact@v2
with:
name: network_build
path: network_artifacts.tar.gz
147 changes: 147 additions & 0 deletions .github/workflows/run_ock_demo.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,147 @@
# Build, Run and Test OCK Demo EcoSystem
name: Build and Run OCK Demo
on:
schedule:
- cron: '59 23 * * 5' # Run every Friday at 11:59 PM
# Allows you to run this workflow manually from the Actions tab
workflow_dispatch:

concurrency:
group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }}
cancel-in-progress: true

jobs:

# build and run for RISCV
run_riscv_m1_ock_demo:
runs-on: ubuntu-22.04

steps:
- name: Checkout repo
uses: actions/checkout@v3

# installs tools, ninja, installs llvm and sets up sccahe
- name: setup ubuntu
uses: ./.github/actions/setup_ubuntu_build
with:
llvm_version: 17
llvm_build_type: RelAssert

- name: setup python
uses: actions/setup-python@v4
with:
python-version: '3.8'

- name: Install Python libraries and system dependencies
run: |
pip install --user requests numpy h5py Pillow
sudo add-apt-repository universe
sudo apt-get update
sudo apt-get install -y libblas-dev libopenblas64-dev libopenblas-dev libpthread-stubs0-dev libboost-all-dev
- name: Build riscv M1
uses: ./.github/actions/do_build_ock/do_build_m1
with:
build_type: Release
extra_flags: '-DCA_REFSI_M1_DEMO_MODE=ON'

- name: Download Daily Release
run: |
# TODO: Update the nightly release from intel/llvm from 2023-12-18 to daily once
# everything has stablised
wget "https://github.com/intel/llvm/releases/download/nightly-2023-12-18/sycl_linux.tar.gz"
mkdir linux_nightly_release
tar -xzf sycl_linux.tar.gz -C linux_nightly_release
- name: Build portBLAS
uses: ./.github/actions/build_portBLAS_action
with:
workspace: ${{ github.workspace }}

- name: Build portDNN
uses: ./.github/actions/build_portDNN_action
with:
workspace: ${{ github.workspace }}

- name: Package Build Artifacts
run: |
tar -cvzf artifacts.tar.gz build portDNN_build_dir portBLAS_build_dir
- name: Upload Artifacts
uses: actions/upload-artifact@v2
with:
name: ock_demo_build
path: artifacts.tar.gz

build_and_run_networks:
runs-on: ubuntu-22.04
needs: run_riscv_m1_ock_demo
steps:
- name: Checkout repo
uses: actions/checkout@v3

- name: Download artifacts
uses: actions/download-artifact@v2
with:
name: ock_demo_build

- name: Untar artifacts
run: |
tar -xvzf artifacts.tar.gz
- name: Build vgg and resnet
uses: ./.github/actions/build_vgg_resnet_action
with:
workspace: ${{ github.workspace }}

publish_OCK_demo_artifacts:
runs-on: ubuntu-22.04
needs: [run_riscv_m1_ock_demo, build_and_run_networks]
env:
GH_TOKEN: ${{ secrets.GH_TOKEN }}
steps:
- name: Download artifacts
uses: actions/download-artifact@v2
with:
name: ock_demo_build

- name: Download network artifacts
uses: actions/download-artifact@v2
with:
name: network_build

- name: Untar artifacts and package OCK demo tar
run: |
tar -xvzf artifacts.tar.gz
tar -xvzf network_artifacts.tar.gz
ls
tar -cvzf ock_demo.tar.gz build portDNN_build_dir portBLAS_build_dir vdata rdata
- name: Upload Artifacts
uses: actions/upload-artifact@v2
with:
name: ock_demo_with_networks
path: ock_demo.tar.gz

- name: Compute tag
id: tag
run: |
if [ "${{ github.event_name == 'schedule' }}" == "true" ]; then
echo "TAG=$(date +'%Y-%m-%d')" >> "$GITHUB_OUTPUT"
else
# TODO: Use date of the commit?
echo "TAG=$(date +'%Y-%m-%d')-${GITHUB_SHA::7}" >> "$GITHUB_OUTPUT"
fi
- name: Create OCK demo release
uses: softprops/action-gh-release@de2c0eb89ae2a093876385947365aca7b0e5f844
env:
GITHUB_TOKEN: ${{ secrets.GH_TOKEN }}
with:
files:
ock_demo.tar.gz
tag_name: nightly-${{ steps.tag.outputs.TAG }}
name: OCK daily ${{ steps.tag.outputs.TAG }}
prerelease: true
body: "Daily build ${{ steps.tag.outputs.TAG }}"
target_commitish: ${{ github.sha }}
60 changes: 0 additions & 60 deletions .github/workflows/run_tartan.yml

This file was deleted.

Binary file removed examples/technical_blogs/tartan_blog/Simple.jpg
Binary file not shown.

0 comments on commit 449a012

Please sign in to comment.