Skip to content

Commit f49ab20

Browse files
TheNetAdminsuyashmaharowenllyJangseon ParkUCSD-JP
committed
Heimdall
Author: Zixuan Wang <zxwang42@gmail.com> The initial public release of Heimdall Co-authored-by: Suyash Mahar <smahar@ucsd.edu> Co-authored-by: Luyi Li <lul014@ucsd.edu> Co-authored-by: Jangseon Park <jap036@ucsd.com> Co-authored-by: Jinpyo Kim <jik066@ucsd.edu> Co-authored-by: Theodore Michailidis <tmichail@ucsd.edu> Co-authored-by: Yue Pan <yup014@ucsd.edu> Co-authored-by: Mingyao Shen <myshen@ucsd.edu> Signed-off-by: Zixuan Wang <zxwang42@gmail.com> Signed-off-by: Suyash Mahar <smahar@ucsd.edu> Signed-off-by: Luyi Li <lul014@ucsd.edu> Signed-off-by: Jangseon Park <jap036@ucsd.com> Signed-off-by: Jinpyo Kim <jik066@ucsd.edu> Signed-off-by: Theodore Michailidis <tmichail@ucsd.edu> Signed-off-by: Yue Pan <yup014@ucsd.edu> Signed-off-by: Mingyao Shen <myshen@ucsd.edu>
0 parents  commit f49ab20

File tree

156 files changed

+13749
-0
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

156 files changed

+13749
-0
lines changed

.gitattributes

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
benchmark/llm_bench/datasets/wiki.test.raw filter=lfs diff=lfs merge=lfs -text
Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
name: "Set up Heimdall dependencies"
2+
author: "@zxwang42"
3+
description: "Set up GitHub workflow dependencies for https://github.com/awesome-cxl/heimdall/"
4+
branding:
5+
icon: "truck"
6+
color: "gray-dark"
7+
inputs:
8+
python-version:
9+
description: "The version of Python to install"
10+
required: false
11+
default: "3.12"
12+
runs:
13+
using: "composite"
14+
steps:
15+
- name: Install uv
16+
uses: astral-sh/setup-uv@v5
17+
with:
18+
python-version: ${{ inputs.python-version }}
19+
20+
- name: Set up env file for basic performance build
21+
run: cp benchmark/basic_performance/env_files/machine_template.env benchmark/basic_performance/env_files/$(hostname).env
22+
shell: bash
23+
24+
- name: Install packages
25+
run: |
26+
sudo apt-get update
27+
sudo apt-get install -y cmake libnuma-dev
28+
shell: bash

.github/workflows/build.yaml

Lines changed: 62 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,62 @@
1+
name: Build and run short tests
2+
on: push
3+
jobs:
4+
build:
5+
strategy:
6+
fail-fast: false
7+
matrix:
8+
python-version: ["3.10", "3.12"] # Maybe also some other versions like 3.13
9+
os: [ubuntu-latest] # Maybe also macos-latest, windows-latest
10+
runs-on: ${{ matrix.os }}
11+
env:
12+
USER_PASSWORD: "does_not_matter" # GitHub action should run `sudo` without password
13+
HEIMDALL_HOSTNAME: "github-workflow" # Match the name under `benchmark/basic_performance/env_files/{hostname}.env`
14+
steps:
15+
- uses: actions/checkout@v4
16+
with:
17+
submodules: "recursive"
18+
19+
- name: Set up dependencies
20+
uses: ./.github/actions/setup-heimdall
21+
with:
22+
python-version: ${{ matrix.python-version }}
23+
24+
- name: Install uv
25+
uses: astral-sh/setup-uv@v5
26+
with:
27+
python-version: ${{ matrix.python-version }}
28+
29+
- name: "Build basic performance bandwidth tests"
30+
run: uv run heimdall bench build basic bw
31+
32+
- name: "Install deps of lockfree data structures benchmark"
33+
run: uv run heimdall bench install lockfree all
34+
35+
- name: "Build lockfree data structures benchmark tests"
36+
run: uv run heimdall bench build lockfree all
37+
38+
build-standalone:
39+
strategy:
40+
fail-fast: false
41+
matrix:
42+
python-version: ["3.12"] # Maybe also some other versions like 3.13
43+
os: [ubuntu-latest] # Maybe also macos-latest, windows-latest
44+
runs-on: ${{ matrix.os }}
45+
env:
46+
USER_PASSWORD: "does_not_matter" # GitHub action should run `sudo` without password
47+
steps:
48+
- uses: actions/checkout@v4
49+
with:
50+
submodules: "recursive"
51+
52+
- name: Set up dependencies
53+
uses: ./.github/actions/setup-heimdall
54+
with:
55+
python-version: ${{ matrix.python-version }}
56+
57+
- name: Build standalone heimdall binary
58+
run: make standalone
59+
shell: bash
60+
61+
- name: "Build basic performance bandwidth tests"
62+
run: ./dist/heimdall bench build basic bw

.gitignore

Lines changed: 261 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,261 @@
1+
/build/
2+
/dist/
3+
./heimdall
4+
5+
### C ###
6+
# Prerequisites
7+
*.d
8+
9+
# Object files
10+
*.o
11+
*.ko
12+
*.obj
13+
*.elf
14+
15+
# Linker output
16+
*.ilk
17+
*.map
18+
*.exp
19+
20+
# Precompiled Headers
21+
*.gch
22+
*.pch
23+
24+
# Libraries
25+
*.lib
26+
*.a
27+
*.la
28+
*.lo
29+
30+
# Shared objects (inc. Windows DLLs)
31+
*.dll
32+
*.so
33+
*.so.*
34+
*.dylib
35+
36+
# Executables
37+
*.exe
38+
*.out
39+
*.app
40+
*.i*86
41+
*.x86_64
42+
*.hex
43+
44+
# Debug files
45+
*.dSYM/
46+
*.su
47+
*.idb
48+
*.pdb
49+
50+
# Kernel Module Compile Results
51+
*.mod*
52+
*.cmd
53+
.tmp_versions/
54+
modules.order
55+
Module.symvers
56+
Mkfile.old
57+
dkms.conf
58+
59+
### C++ ###
60+
# Prerequisites
61+
62+
# Compiled Object files
63+
*.slo
64+
65+
# Precompiled Headers
66+
67+
# Compiled Dynamic libraries
68+
69+
# Fortran module files
70+
*.mod
71+
*.smod
72+
73+
# Compiled Static libraries
74+
*.lai
75+
76+
# Executables
77+
78+
### Python ###
79+
# Byte-compiled / optimized / DLL files
80+
__pycache__/
81+
*.py[cod]
82+
*$py.class
83+
84+
# C extensions
85+
86+
# Distribution / packaging
87+
.Python
88+
develop-eggs/
89+
dist/
90+
downloads/
91+
eggs/
92+
.eggs/
93+
lib/
94+
lib64/
95+
parts/
96+
sdist/
97+
var/
98+
wheels/
99+
share/python-wheels/
100+
*.egg-info/
101+
.installed.cfg
102+
*.egg
103+
MANIFEST
104+
105+
# PyInstaller
106+
# Usually these files are written by a python script from a template
107+
# before PyInstaller builds the exe, so as to inject date/other infos into it.
108+
*.manifest
109+
*.spec
110+
111+
# Installer logs
112+
pip-log.txt
113+
pip-delete-this-directory.txt
114+
115+
# Unit test / coverage reports
116+
htmlcov/
117+
.tox/
118+
.nox/
119+
.coverage
120+
.coverage.*
121+
.cache
122+
nosetests.xml
123+
coverage.xml
124+
*.cover
125+
*.py,cover
126+
.hypothesis/
127+
.pytest_cache/
128+
cover/
129+
130+
# Translations
131+
*.mo
132+
*.pot
133+
134+
# Django stuff:
135+
*.log
136+
local_settings.py
137+
db.sqlite3
138+
db.sqlite3-journal
139+
140+
# Flask stuff:
141+
instance/
142+
.webassets-cache
143+
144+
# Scrapy stuff:
145+
.scrapy
146+
147+
# Sphinx documentation
148+
docs/_build/
149+
150+
# PyBuilder
151+
.pybuilder/
152+
target/
153+
154+
# Jupyter Notebook
155+
.ipynb_checkpoints
156+
157+
# IPython
158+
profile_default/
159+
ipython_config.py
160+
161+
# pyenv
162+
# For a library or package, you might want to ignore these files since the code is
163+
# intended to run in multiple environments; otherwise, check them in:
164+
# .python-version
165+
166+
# pipenv
167+
# According to pypa/pipenv#598, it is recommended to include Pipfile.lock in version control.
168+
# However, in case of collaboration, if having platform-specific dependencies or dependencies
169+
# having no cross-platform support, pipenv may install dependencies that don't work, or not
170+
# install all needed dependencies.
171+
#Pipfile.lock
172+
173+
# poetry
174+
# Similar to Pipfile.lock, it is generally recommended to include poetry.lock in version control.
175+
# This is especially recommended for binary packages to ensure reproducibility, and is more
176+
# commonly ignored for libraries.
177+
# https://python-poetry.org/docs/basic-usage/#commit-your-poetrylock-file-to-version-control
178+
#poetry.lock
179+
180+
# pdm
181+
# Similar to Pipfile.lock, it is generally recommended to include pdm.lock in version control.
182+
#pdm.lock
183+
# pdm stores project-wide configurations in .pdm.toml, but it is recommended to not include it
184+
# in version control.
185+
# https://pdm.fming.dev/#use-with-ide
186+
.pdm.toml
187+
188+
# PEP 582; used by e.g. github.com/David-OConnor/pyflow and github.com/pdm-project/pdm
189+
__pypackages__/
190+
191+
# Celery stuff
192+
celerybeat-schedule
193+
celerybeat.pid
194+
195+
# SageMath parsed files
196+
*.sage.py
197+
198+
# Environments
199+
.env
200+
.venv
201+
env/
202+
venv/
203+
myvenv/
204+
ENV/
205+
env.bak/
206+
venv.bak/
207+
208+
# Spyder project settings
209+
.spyderproject
210+
.spyproject
211+
212+
# Rope project settings
213+
.ropeproject
214+
215+
# mkdocs documentation
216+
/site
217+
218+
# mypy
219+
.mypy_cache/
220+
.dmypy.json
221+
dmypy.json
222+
223+
# Pyre type checker
224+
.pyre/
225+
226+
# pytype static type analyzer
227+
.pytype/
228+
229+
# Cython debug symbols
230+
cython_debug/
231+
232+
# PyCharm
233+
# JetBrains specific template is maintained in a separate JetBrains.gitignore that can
234+
# be found at https://github.com/github/gitignore/blob/main/Global/JetBrains.gitignore
235+
# and can be added to the global gitignore or merged into this file. For a more nuclear
236+
# option (not recommended) you can uncomment the following to ignore the entire idea folder.
237+
.idea/
238+
239+
### Python Patch ###
240+
# Poetry local configuration file - https://python-poetry.org/docs/configuration/#local-configuration
241+
poetry.toml
242+
243+
# ruff
244+
.ruff_cache/
245+
246+
# LSP config files
247+
pyrightconfig.json
248+
249+
# Extern git
250+
251+
# Profiling Result
252+
results/
253+
254+
# evironment
255+
self.env
256+
257+
# temp files
258+
temp.yaml
259+
260+
# vscode config files
261+
.vscode

.gitmodules

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
[submodule "extern/yaml-cpp"]
2+
path = extern/yaml-cpp
3+
url = https://github.com/jbeder/yaml-cpp.git

0 commit comments

Comments
 (0)