Skip to content

Improve Profiling (#138) #280

Improve Profiling (#138)

Improve Profiling (#138) #280

# SPDX-FileCopyrightText: 2025 ETH Zurich and University of Bologna
#
# SPDX-License-Identifier: Apache-2.0
---
name: CI • Siracusa + Neureka (Tiled)
"on":
push:
branches:
- "**"
tags:
- "v*.*.*"
pull_request:
workflow_dispatch:
inputs:
docker_image_deeploy:
description: "Deeploy Image to use"
required: false
default: "ghcr.io/pulp-platform/deeploy:devel"
concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true
jobs:
select-env:
uses: ./.github/workflows/_select-env.yml
with:
docker_image_deeploy: ${{ inputs.docker_image_deeploy }}
siracusa-neureka-kernels-tiled-singlebuffer-L2:
needs: select-env
uses: ./.github/workflows/_runner-siracusa-neureka-tiled-sequential.yml
with:
runner: ${{ needs.select-env.outputs.runner }}
docker-image: ${{ needs.select-env.outputs.image }}
tests-config: |
[
{"name":"Kernels/Integer/GEMM/Regular_RQPerColumn","L1":[16000]},
{"name":"Kernels/Integer/Conv/PW_2D","L1":[32000]},
{"name":"Kernels/Integer/Conv/PW_2D_RQ/Regular_RQ","L1":[32000]},
{"name":"Kernels/Integer/Conv/PW_2D_RQ/Unsigned_RQ","L1":[32000]}
]
num-cores: 8
siracusa-neureka-kernels-tiled-doublebuffer-L2:
needs: select-env
uses: ./.github/workflows/_runner-siracusa-neureka-tiled-sequential.yml
with:
runner: ${{ needs.select-env.outputs.runner }}
docker-image: ${{ needs.select-env.outputs.image }}
tests-config: |
[
{"name":"Kernels/Integer/GEMM/Regular_RQPerColumn","L1":[16000]},
{"name":"Kernels/Integer/Conv/PW_2D","L1":[32000]},
{"name":"Kernels/Integer/Conv/PW_2D_RQ/Regular_RQ","L1":[32000]},
{"name":"Kernels/Integer/Conv/PW_2D_RQ/Unsigned_RQ","L1":[32000]}
]
num-cores: 8
# double buffer enabled:
double-buffer: true
siracusa-neureka-models-tiled-singlebuffer-L3:
needs: select-env
strategy:
fail-fast: false
matrix:
test-data:
- { name: "Models/miniMobileNet", L1: [2000] } # LMACAN: 1000 leads to non-2d transfers in L3!
- { name: "Kernels/Integer/Attention", L1: [2500] }
- { name: "Models/Transformer", L1: [15000] }
- { name: "Models/microLlama/microLlama1", L1: [10000] }
num-cores: [8]
default-memory-level: ["L3"]
uses: ./.github/workflows/_runner-siracusa-neureka-tiled.yml
with:
runner: ${{ needs.select-env.outputs.runner }}
docker-image: ${{ needs.select-env.outputs.image }}
test-name: ${{ matrix.test-data.name }}
num-cores: ${{ matrix.num-cores }}
L1: ${{ toJson(matrix.test-data.L1) }}
default-memory-level: ${{ matrix.default-memory-level }}
siracusa-neureka-models-tiled-doublebuffer-L3:
needs: select-env
strategy:
fail-fast: false
matrix:
test-data:
- { name: "Models/miniMobileNet", L1: [2000] } # LMACAN note
- { name: "Kernels/Integer/Attention", L1: [5000] }
- { name: "Models/Transformer", L1: [30000] }
num-cores: [8]
double-buffer: [true]
default-memory-level: ["L3"]
uses: ./.github/workflows/_runner-siracusa-neureka-tiled.yml
with:
runner: ${{ needs.select-env.outputs.runner }}
docker-image: ${{ needs.select-env.outputs.image }}
test-name: ${{ matrix.test-data.name }}
num-cores: ${{ matrix.num-cores }}
L1: ${{ toJson(matrix.test-data.L1) }}
double-buffer: ${{ matrix.double-buffer }}
default-memory-level: ${{ matrix.default-memory-level }}
siracusa-neureka-kernels-tiled-singlebuffer-L2-wmem:
needs: select-env
uses: ./.github/workflows/_runner-siracusa-neureka-tiled-sequential.yml
with:
runner: ${{ needs.select-env.outputs.runner }}
docker-image: ${{ needs.select-env.outputs.image }}
tests-config: |
[
{"name":"Kernels/Integer/GEMM/Regular_RQPerColumn","L1":[16000]},
{"name":"Kernels/Integer/Conv/PW_2D","L1":[32000]},
{"name":"Kernels/Integer/Conv/PW_2D_RQ/Regular_RQ","L1":[32000]},
{"name":"Kernels/Integer/Conv/PW_2D_RQ/Unsigned_RQ","L1":[32000]}
]
num-cores: 8
neureka-wmem: true
siracusa-neureka-models-tiled-doublebuffer-L3-wmem:
needs: select-env
strategy:
fail-fast: false
matrix:
test-data:
- { name: "Models/miniMobileNet", L1: [2000] } # LMACAN note
- { name: "Kernels/Integer/Attention", L1: [3500] }
# - { name: "Models/Transformer", L1: [30000] }
- { name: "Models/microLlama/microLlama1", L1: [10000] }
num-cores: [8]
double-buffer: [true]
default-memory-level: ["L3"]
neureka-wmem: [true]
uses: ./.github/workflows/_runner-siracusa-neureka-tiled.yml
with:
runner: ${{ needs.select-env.outputs.runner }}
docker-image: ${{ needs.select-env.outputs.image }}
test-name: ${{ matrix.test-data.name }}
num-cores: ${{ matrix.num-cores }}
L1: ${{ toJson(matrix.test-data.L1) }}
double-buffer: ${{ matrix.double-buffer }}
default-memory-level: ${{ matrix.default-memory-level }}
neureka-wmem: ${{ matrix.neureka-wmem }}