Skip to content
Merged
Show file tree
Hide file tree
Changes from 50 commits
Commits
Show all changes
53 commits
Select commit Hold shift + click to select a range
3d55d6a
Extend Dockerflow with GAP9 Support
Xeratec Nov 13, 2025
8ae3fef
Improve speed of LLVM cloning
Xeratec Nov 12, 2025
6acde80
Initial GAP9 Support
Xeratec Nov 13, 2025
a7ac74e
Minor cleanup
Xeratec Nov 13, 2025
f916db8
Update Readme
Xeratec Nov 13, 2025
3cd6e29
[GAP9] Fix DeeployTest.c nested team fork issue
runwangdl Nov 14, 2025
9ca4595
[GAP9]Fix GCC segmentation fault in Transpose template syntax
runwangdl Nov 14, 2025
7e77991
[GAP9] Link PULP-NN
runwangdl Nov 15, 2025
294d83a
[GAP9] OpRepre n_cores Missing
runwangdl Nov 15, 2025
4946ed5
[GAP9] LInk Math and PULP Kernels
runwangdl Nov 15, 2025
a08b6fd
[GAP9] Replace MCHAN DMA with cl_dma.h API and Decouple deployer form…
runwangdl Nov 17, 2025
b51e29d
[GAP0] WIP Tiling Support for L3
runwangdl Nov 21, 2025
6b5c2e5
[GAP9] Layernorm Epsilon ABI Issue
runwangdl Nov 21, 2025
3a1d877
[GAP9] Fixed Zero Cyclecounter Issue
runwangdl Nov 27, 2025
faa6421
[GAP9] Add CI
runwangdl Nov 28, 2025
584729c
[GAP9] Fix L2 GVSoC target build with hexlist
runwangdl Nov 28, 2025
3e2fc87
[GAP9] Sdk.config add macro for clusterstack
runwangdl Nov 28, 2025
6b55e98
[GAP9] Fix Cluster DMA Concurrent Tasks Bug with Mchan Template from …
runwangdl Nov 30, 2025
ccaad61
[GAP9] Fix free template from PULP-sdk to GAP9sdk
runwangdl Nov 30, 2025
af01a2e
[GAP9] Fix duplicate L3 Alloc Code generation due to PULP inheritance…
runwangdl Nov 30, 2025
e4ed675
Merge remote-tracking branch 'run/devel' into gap9-operators-github
runwangdl Nov 30, 2025
71896e7
[GAP9] Change GAP9 DWConV Based on PULP change
runwangdl Nov 30, 2025
f88d5c5
[GAP-CI] Update runner-gap9.yml
runwangdl Dec 16, 2025
4429a6a
[GAP-CI] Some CI Bugs fixed
runwangdl Dec 17, 2025
40d1dec
Update default docker for gap9 platform
runwangdl Jan 11, 2026
ff05304
Change other target to default docker
runwangdl Jan 11, 2026
c5cce58
Merge remote-tracking branch 'origin/devel' into gap9-operators-github
runwangdl Feb 3, 2026
9b72ff6
GAP9 PyTest Adaptation
runwangdl Feb 3, 2026
f9a785d
Apply Philip's Patch about GAP9 workflow
runwangdl Feb 4, 2026
8ba22ba
Add math.h to sqrt.c
runwangdl Feb 4, 2026
e94bef0
Change the config list for GAP9
runwangdl Feb 4, 2026
c75553f
Change docker to private pulp deeploy-gap9 docker
runwangdl Feb 4, 2026
0dd9596
Add pre-built pulp-nn-mixed library
runwangdl Feb 4, 2026
f374493
Select docker based on Repo
runwangdl Feb 4, 2026
3b74a29
Correct config list for Gap9
runwangdl Feb 4, 2026
a42f620
Correct config list 2.0
runwangdl Feb 4, 2026
bd526dc
fix linting
runwangdl Feb 4, 2026
60a7e0e
Softhier bug because extra printf"init network"
runwangdl Feb 4, 2026
5649f96
Fix Comments: - Add L3 tests and fix build configuration issues
runwangdl Feb 4, 2026
06289bf
Fix linting
runwangdl Feb 4, 2026
82de2e1
Fix Linting 2.0
runwangdl Feb 4, 2026
adfe9f3
Exclude prebuilt directories from license checks
runwangdl Feb 4, 2026
67e7e5b
Fix coderabbit comments
runwangdl Feb 4, 2026
67bbbb5
Remove unwanted changes from GAP9 prebuilt library commit
runwangdl Feb 5, 2026
a0e65a6
Move pulp-nn to targetlibrary/third-party and correct ci workflow sel…
runwangdl Feb 5, 2026
3dd6ec1
Trigger CI
runwangdl Feb 5, 2026
09c70ab
Register submodules at new paths in TargetLibraries/third_party/
runwangdl Feb 5, 2026
6fb9cd2
Fix CMake add_subdirectory for out-of-tree sources
runwangdl Feb 5, 2026
c4768e1
Change CHANGELOG
runwangdl Feb 5, 2026
8593fdf
Merge branch 'devel' into gap9-operators-github
runwangdl Feb 5, 2026
c4a4de6
Merge remote-tracking branch 'origin/devel' into gap9-operators-github
Xeratec Feb 6, 2026
f0be2ec
Fix Changelog
Xeratec Feb 6, 2026
36cf5bc
Fix formatting
Xeratec Feb 6, 2026
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
54 changes: 54 additions & 0 deletions .github/workflows/_runner-gap9-tiled.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,54 @@
# SPDX-FileCopyrightText: 2025 ETH Zurich and University of Bologna
#
# SPDX-License-Identifier: Apache-2.0

---
name: _runner-gap9-tiled

"on":
workflow_call:
inputs:
runner:
required: true
type: string
docker-image:
required: true
type: string
pytest-markers:
required: true
type: string

jobs:
test-runner-gap9-tiled:
runs-on: ${{ inputs.runner }}
container:
image: ${{ inputs.docker-image }}
steps:
- name: Checkout Repo
uses: actions/checkout@v4
with:
submodules: recursive
- name: Build Deeploy
shell: bash
run: |
source /app/install/gap9-sdk/.gap9-venv/bin/activate
source /app/install/gap9-sdk/configs/gap9_evk_audio.sh || true
pip install -e . || true
deactivate
- name: Cache ccache
uses: actions/cache/restore@v4
with:
path: /app/.ccache
key: ccache-gap9
- name: Run Test
run: |
source /app/install/gap9-sdk/.gap9-venv/bin/activate
source /app/install/gap9-sdk/configs/gap9_evk_audio.sh || true
export GVSOC_INSTALL_DIR=/app/install/gap9-sdk/install/workstation
export GAP_RISCV_GCC_TOOLCHAIN=/app/install/gcc/gap9
cd DeeployTest
mkdir -p /app/.ccache
export CCACHE_DIR=/app/.ccache
pytest test_platforms.py -v -m "${{ inputs.pytest-markers }}"
deactivate
shell: bash
54 changes: 54 additions & 0 deletions .github/workflows/_runner-gap9.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,54 @@
# SPDX-FileCopyrightText: 2025 ETH Zurich and University of Bologna
#
# SPDX-License-Identifier: Apache-2.0

---
name: _runner-gap9

"on":
workflow_call:
inputs:
runner:
required: true
type: string
docker-image:
required: true
type: string
pytest-marker:
required: true
type: string

jobs:
test-runner-gap9:
runs-on: ${{ inputs.runner }}
container:
image: ${{ inputs.docker-image }}
steps:
- name: Checkout Repo
uses: actions/checkout@v4
with:
submodules: recursive
- name: Build Deeploy
shell: bash
run: |
source /app/install/gap9-sdk/.gap9-venv/bin/activate
source /app/install/gap9-sdk/configs/gap9_evk_audio.sh || true
pip install -e . || true
deactivate
Comment thread
coderabbitai[bot] marked this conversation as resolved.
- name: Cache ccache
uses: actions/cache/restore@v4
with:
path: /app/.ccache
key: ccache-gap9
Comment thread
runwangdl marked this conversation as resolved.
- name: Run Test
run: |
source /app/install/gap9-sdk/.gap9-venv/bin/activate
source /app/install/gap9-sdk/configs/gap9_evk_audio.sh || true
export GVSOC_INSTALL_DIR=/app/install/gap9-sdk/install/workstation
export GAP_RISCV_GCC_TOOLCHAIN=/app/install/gcc/gap9
cd DeeployTest
mkdir -p /app/.ccache
export CCACHE_DIR=/app/.ccache
pytest test_platforms.py -v -n 4 -m "gap9 and ${{ inputs.pytest-marker }}"
deactivate
shell: bash
Comment thread
coderabbitai[bot] marked this conversation as resolved.
2 changes: 1 addition & 1 deletion .github/workflows/ci-lint.yml
Original file line number Diff line number Diff line change
Expand Up @@ -64,4 +64,4 @@ jobs:
- name: Check Licenses
shell: bash
run: |
python scripts/reuse_skip_wrapper.py $(find . \( -name '*.py' -o -name '*.c' -o -name '*.h' -o -name '*.html' -o -name '*.rst' -o -name '*.yml' -o -name '*.yaml' \) -not -path "*toolchain*" -not -path "*third_party*" -not -path "*.git/*" -not -path "*install/*" -type f)
python scripts/reuse_skip_wrapper.py $(find . \( -name '*.py' -o -name '*.c' -o -name '*.h' -o -name '*.html' -o -name '*.rst' -o -name '*.yml' -o -name '*.yaml' \) -not -path "*toolchain*" -not -path "*third_party*" -not -path "*prebuilt*" -not -path "*.git/*" -not -path "*install/*" -type f)
62 changes: 62 additions & 0 deletions .github/workflows/ci-platform-gap9-tiled.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,62 @@
# SPDX-FileCopyrightText: 2025 ETH Zurich and University of Bologna
#
# SPDX-License-Identifier: Apache-2.0

---
name: CI • GAP9 (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-gap9:latest"

concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true

jobs:
select-env:
uses: ./.github/workflows/_select-env.yml
with:
docker_image_deeploy: ${{ github.event.inputs.docker_image_deeploy || github.repository == 'pulp-platform/Deeploy' && 'ghcr.io/pulp-platform/deeploy-gap9:latest'}}
Comment thread
runwangdl marked this conversation as resolved.

gap9-kernels-tiled-singlebuffer-L2:
needs: select-env
uses: ./.github/workflows/_runner-gap9-tiled.yml
with:
runner: ${{ needs.select-env.outputs.runner }}
docker-image: ${{ needs.select-env.outputs.image }}
pytest-markers: "gap9_tiled and kernels and singlebuffer and l2"

gap9-kernels-tiled-doublebuffer-L2:
needs: select-env
uses: ./.github/workflows/_runner-gap9-tiled.yml
with:
runner: ${{ needs.select-env.outputs.runner }}
docker-image: ${{ needs.select-env.outputs.image }}
pytest-markers: "gap9_tiled and kernels and doublebuffer and l2"

gap9-models-tiled-singlebuffer-L2:
needs: select-env
uses: ./.github/workflows/_runner-gap9-tiled.yml
with:
runner: ${{ needs.select-env.outputs.runner }}
docker-image: ${{ needs.select-env.outputs.image }}
pytest-markers: "gap9_tiled and models and singlebuffer and l2"

gap9-models-tiled-doublebuffer-L2:
needs: select-env
uses: ./.github/workflows/_runner-gap9-tiled.yml
with:
runner: ${{ needs.select-env.outputs.runner }}
docker-image: ${{ needs.select-env.outputs.image }}
pytest-markers: "gap9_tiled and models and doublebuffer and l2"
47 changes: 47 additions & 0 deletions .github/workflows/ci-platform-gap9.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,47 @@
# SPDX-FileCopyrightText: 2025 ETH Zurich and University of Bologna
#
# SPDX-License-Identifier: Apache-2.0

---
name: CI • GAP9

"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-gap9:latest"


concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true

jobs:
select-env:
uses: ./.github/workflows/_select-env.yml
with:
docker_image_deeploy: ${{ github.event.inputs.docker_image_deeploy || (github.repository == 'pulp-platform/Deeploy' && 'ghcr.io/pulp-platform/deeploy-gap9:latest') }}

gap9-kernels:
needs: select-env
uses: ./.github/workflows/_runner-gap9.yml
with:
runner: ${{ needs.select-env.outputs.runner }}
docker-image: ${{ needs.select-env.outputs.image }}
pytest-marker: "kernels"

gap9-models:
needs: select-env
uses: ./.github/workflows/_runner-gap9.yml
with:
runner: ${{ needs.select-env.outputs.runner }}
docker-image: ${{ needs.select-env.outputs.image }}
pytest-marker: "models"
54 changes: 54 additions & 0 deletions .github/workflows/infra-generate-ccache-gap9.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,54 @@
# SPDX-FileCopyrightText: 2025 ETH Zurich and University of Bologna
#
# SPDX-License-Identifier: Apache-2.0

---
name: Infrastructure • Generate CCache GAP9

"on":
workflow_dispatch:
inputs:
docker_image_deeploy:
description: "Deeploy GAP9 Image to use"
required: false
default: "ghcr.io/pulp-platform/deeploy-gap9:latest"
schedule:
# Runs the workflow on the default branch every day at 2AM CET to keep the cache fresh
- cron: "0 2 * * *"
Comment thread
runwangdl marked this conversation as resolved.

jobs:
generate-ccache-gap9:
runs-on: ubuntu-latest
container:
image: ${{ github.event.inputs.docker_image_deeploy || 'ghcr.io/pulp-platform/deeploy-gap9:latest' }}
steps:
- name: Checkout Repo
uses: actions/checkout@v4
with:
submodules: recursive
- name: Build Deeploy
shell: bash
run: |
source /app/install/gap9-sdk/.gap9-venv/bin/activate
source /app/install/gap9-sdk/configs/gap9_evk_audio.sh || true
pip install -e . || true
deactivate

- name: Generate CCache for GAP9
run: |
source /app/install/gap9-sdk/.gap9-venv/bin/activate
source /app/install/gap9-sdk/configs/gap9_evk_audio.sh || true
export GVSOC_INSTALL_DIR=/app/install/gap9-sdk/install/workstation
export GAP_RISCV_GCC_TOOLCHAIN=/app/install/gcc/gap9
cd DeeployTest
mkdir -p /app/.ccache
export CCACHE_DIR=/app/.ccache
pytest 'test_platforms.py::test_gap9_kernels[Kernels/Integer/Add/Regular]' --skipsim
pytest 'test_platforms.py::test_gap9_tiled_kernels_l2_singlebuffer[Kernels/Integer/Add/Large-5000-L2-singlebuffer]' --skipsim
deactivate

- name: Clean and Upload CCache
uses: actions/cache@v4
with:
path: /app/.ccache
key: ccache-gap9
Comment thread
runwangdl marked this conversation as resolved.
4 changes: 2 additions & 2 deletions .gitmodules
Original file line number Diff line number Diff line change
Expand Up @@ -3,10 +3,10 @@
# SPDX-License-Identifier: Apache-2.0

[submodule "pulp-nn-mixed"]
path = TargetLibraries/PULPOpen/third_party/pulp-nn-mixed
path = TargetLibraries/third_party/pulp-nn-mixed
url = https://github.com/pulp-platform/pulp-nn-mixed.git
[submodule "pulp-nnx"]
path = TargetLibraries/PULPOpen/third_party/pulp-nnx
path = TargetLibraries/third_party/pulp-nnx
url = https://github.com/pulp-platform/pulp-nnx.git
[submodule "CMSIS-NN"]
path = TargetLibraries/CMSIS/third_party/CMSIS-NN
Expand Down
2 changes: 2 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -50,6 +50,7 @@ This file contains the changelog for the Deeploy project. The changelog is divid
- Fix bias hoisting in generic GEMM with no bias [#126](https://github.com/pulp-platform/Deeploy/pull/126)

### Added
- **GAP9 Platform Support**: Deployer, Bindings, Templates, Tiler, DMA (L3Dma/MchanDma), target library, CI workflows
- The `publish.yml` action to build a branch and push it to PyPi. The action is automatically triggered when a tag with the "v*" format is emitted.
- I created a release of [Banshee](https://github.com/pulp-platform/banshee/releases/tag/v0.5.0-prebuilt) so we don't need to rebuild it over and over. The `Makefile` now pulls that release depending on the platform.
- I bumped the onnx-graphsurgeon version such that we don't need to use NVIDIA's PyPi index anymore.
Expand Down Expand Up @@ -116,6 +117,7 @@ This file contains the changelog for the Deeploy project. The changelog is divid
- Calculate non-kernel overhead and show total time spent during profiling

### Changed
- PULP-NN moved to TargetLibraries third-party folder
- Rename package name from `PULP-Deeploy` to `deeploy-pulp`.
- Each CI workflow has been simplified to call the pytest suite with certain markers.
- Structure of Tests subdir for improved ordering
Expand Down
40 changes: 36 additions & 4 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
#
# SPDX-License-Identifier: Apache-2.0

cmake_minimum_required(VERSION 3.12)
cmake_minimum_required(VERSION 3.19)

set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/lib)
set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/lib)
Expand All @@ -14,13 +14,14 @@ set(CMAKE_C_COMPILER_LAUNCHER "ccache")
set(CMAKE_CXX_COMPILER_LAUNCHER "ccache")

set(CMAKE_EXPORT_COMPILE_COMMANDS TRUE)
set(CMAKE_TRY_COMPILE_TARGET_TYPE STATIC_LIBRARY)

if(TOOLCHAIN STREQUAL GCC)
set(CMAKE_INTERPROCEDURAL_OPTIMIZATION TRUE)
endif()

set(platform MemPool CACHE STRING "Platform (MemPool, SoftHier, QEMU, Siracusa, Siracusa_w_neureka, PULP-Open, Generic, Snitch)")
set_property(CACHE platform PROPERTY STRINGS MemPool SoftHier QEMU Siracusa Siracusa_w_neureka PULP-Open Generic Snitch)
set(platform MemPool CACHE STRING "Platform (MemPool, SoftHier, QEMU, Siracusa, Siracusa_w_neureka, PULP-Open, GAP9, Generic, Snitch)")
set_property(CACHE platform PROPERTY STRINGS MemPool SoftHier QEMU Siracusa Siracusa_w_neureka PULP-Open GAP9 Generic Snitch)

if(platform STREQUAL MemPool)
message(STATUS "Building for platform 'MemPool'")
Expand All @@ -32,6 +33,11 @@ elseif(platform STREQUAL Siracusa_w_neureka)
message(STATUS "Building for platform 'Siracusa_w_neureka'")
elseif(platform STREQUAL PULPOpen)
message(STATUS "Building for platform 'PULP-Open'")
elseif(platform STREQUAL GAP9)
message(STATUS "Building for platform 'GAP9'")
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR})
set(ENV{KCONFIG_CONFIG} DeeployTest/Platforms/GAP9/sdk.config)
include($ENV{GAP_SDK_HOME}/utils/cmake/setup.cmake)
elseif(platform STREQUAL Generic)
message(STATUS "Building for platform 'Generic'")
elseif(platform STREQUAL Snitch)
Expand All @@ -46,9 +52,14 @@ endif()

# Import useful functions / macros
include(${CMAKE_CURRENT_LIST_DIR}/cmake/Util.cmake)
include(${CMAKE_CURRENT_LIST_DIR}/cmake/common.cmake)
# Only if not GAP9
if(NOT platform STREQUAL GAP9)
include(${CMAKE_CURRENT_LIST_DIR}/cmake/common.cmake)
endif()
include(${CMAKE_CURRENT_LIST_DIR}/cmake/simulation.cmake)

add_library(deeploylib INTERFACE)

message(STATUS "============================= Project Configuration ============================")
message(STATUS "[Deeploy] platform = " ${platform})
message(STATUS "[Deeploy] use_dma = " ${use_dma})
Expand Down Expand Up @@ -211,6 +222,27 @@ if(platform STREQUAL Siracusa OR platform STREQUAL Siracusa_w_neureka OR platfor

endif()

if(platform STREQUAL GAP9)
project(${TESTNAME} LANGUAGES C ASM)
include(${CMAKE_CURRENT_LIST_DIR}/cmake/gap9/gap9_gvsoc.cmake)
add_compile_options(
-Wno-error=unknown-pragmas
)

add_compile_definitions(
DEEPLOY_GAP9_PLATFORM
)

add_subdirectory(TargetLibraries/Generic)
add_subdirectory(DeeployTest)
setupos(${TESTNAME})
add_subdirectory(TargetLibraries/GAP9)
target_include_directories(deeploygap9 PUBLIC TargetLibraries/Generic/inc)

target_link_libraries(deeploylib INTERFACE deeploybasic deeploygap9)

endif()

if(platform STREQUAL Snitch)

if(TOOLCHAIN STREQUAL LLVM)
Expand Down
Loading
Loading