Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Marya/pub tartan #284

Closed
wants to merge 3 commits into from
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
86 changes: 86 additions & 0 deletions .github/actions/build_vgg_resnet_action/action.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,86 @@
name: Setup and build networks; VGG16, Resnet50
description: Build and run VV16 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 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: 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 ${{ inputs.workspace }}/examples/technical_blogs/tartan_blog/Simple.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/ ${{ inputs.workspace }}/examples/technical_blogs/tartan_blog/Simple.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/ ${{ inputs.workspace }}/examples/technical_blogs/tartan_blog/Simple.jpg.bin

- name: Package artifacts
shell: bash
run: |
tar -cvzf network_artifacts.tar.gz vdata rdata

- name: Upload Artifacts
uses: actions/upload-artifact@v2
with:
name: network-build
path: network_artifacts.tar.gz
94 changes: 90 additions & 4 deletions .github/workflows/run_tartan.yml
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,9 @@ on:
- cron: '30 23 * * *' # Runs the workflow at midnight every day
# Allows you to run this workflow manually from the Actions tab
workflow_dispatch:

pull_request:
paths:
- '.github/workflows/run_tartan.yml'
concurrency:
group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }}
cancel-in-progress: true
Expand Down Expand Up @@ -34,7 +36,7 @@ jobs:

- name: Install Python libraries and system dependencies
run: |
pip install requests numpy h5py Pillow
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
Expand All @@ -47,7 +49,6 @@ jobs:
wget "https://github.com/intel/llvm/releases/download/nightly-2023-11-22/sycl_linux.tar.gz"
mkdir linux_nightly_release
tar -xzf sycl_linux.tar.gz -C linux_nightly_release
ls

- name: Build portBLAS
uses: ./.github/actions/build_portBLAS_action
Expand All @@ -57,4 +58,89 @@ jobs:
- name: Build portDNN
uses: ./.github/actions/build_portDNN_action
with:
workspace: ${{ github.workspace }}
workspace: ${{ github.workspace }}

- name: Package Build Artifacts
run: |
ls
tar -cvzf artifacts.tar.gz build portDNN_build_dir portBLAS_build_dir

- name: Upload Artifacts
uses: actions/upload-artifact@v2
with:
name: tartan-build
path: artifacts.tar.gz

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

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

- name: Untar artifacts
run: |
tar -xvzf artifacts.tar.gz
ls

- 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_tartan, build_and_run_networks]
env:
GH_TOKEN: ${{ secrets.GH_TOKEN }}
steps:
- name: Download artifacts
uses: actions/download-artifact@v2
with:
name: tartan-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
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 }}
Loading