Skip to content

Fix PULP GEMM batch serialization #23

Fix PULP GEMM batch serialization

Fix PULP GEMM batch serialization #23

# Copyright 2025 ETH Zurich and University of Bologna.
# Licensed under the Apache License, Version 2.0, see LICENSE for details.
# 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":"testRequantizedLinear","L1":[16000]},
{"name":"testPointwise","L1":[32000]},
{"name":"testPointwiseConvBNReLU","L1":[32000]},
{"name":"testPointwiseUnsignedWeights","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":"testRequantizedLinear","L1":[16000]},
{"name":"testPointwise","L1":[32000]},
{"name":"testPointwiseConvBNReLU","L1":[32000]},
{"name":"testPointwiseUnsignedWeights","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: "miniMobileNet", L1: [2000] } # LMACAN: 1000 leads to non-2d transfers in L3!
- { name: "Attention", L1: [2500] }
- { name: "Transformer", L1: [15000] }
- { name: "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: "miniMobileNet", L1: [2000] } # LMACAN note
- { name: "Attention", L1: [5000] }
- { name: "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":"testRequantizedLinear","L1":[16000]},
{"name":"testPointwise","L1":[32000]},
{"name":"testPointwiseConvBNReLU","L1":[32000]},
{"name":"testPointwiseUnsignedWeights","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: "miniMobileNet", L1: [2000] } # LMACAN note
- { name: "Attention", L1: [3500] }
# - { name: "Transformer", L1: [30000] }
- { name: "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 }}