Skip to content

Commit 9480203

Browse files
Restack micro-benchmark documentation
Bring the guide onto the hardened benchmark stack and document the shared sensor timing boundaries, observer floor, structured outputs, and reproducibility requirements.
2 parents b9d681f + 8afa384 commit 9480203

341 files changed

Lines changed: 24519 additions & 9055 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
../../skills/developer/isaaclab-updating-environment-docs

.github/CODEOWNERS

Lines changed: 172 additions & 81 deletions
Large diffs are not rendered by default.

.github/actions/multi-gpu/multi_gpu_shard_runner.sh

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -49,7 +49,7 @@ mkdir -p /tmp/mgpu-base-home /tmp/mgpu-pyuserbase
4949

5050
# Pytest deps (same as run-tests action). junitparser is imported at
5151
# tools/conftest.py load time, so it must be present first.
52-
./isaaclab.sh -p -m pip install pytest pytest-mock junitparser flatdict flaky "coverage>=7.6.1"
52+
./isaaclab.sh -p -m pip install pytest pytest-mock junitparser flaky "coverage>=7.6.1"
5353

5454
# Shard count from nvidia-smi -L (truth; torch under-counts MIG).
5555
MIG_COUNT=$(nvidia-smi -L | grep -c "^ MIG ") # grep -c = count of matching lines (MIG slices)

.github/actions/run-tests/action.yml

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -155,6 +155,7 @@ runs:
155155
if [ -n \"\$wait_pid\" ]; then kill \"\$wait_pid\" 2>/dev/null || true; fi; \
156156
exit 130" HUP INT TERM
157157
158+
echo "::group::Configuration / Setup"
158159
echo "Running tests in: $test_path"
159160
if [ -n "$pytest_options" ]; then
160161
echo "With pytest options: $pytest_options"
@@ -364,6 +365,7 @@ runs:
364365
fi
365366
366367
echo "Docker environment variables: '$docker_env_vars'"
368+
echo "::endgroup::"
367369
368370
# Run tests in a detached container and follow logs. Running detached
369371
# means the container lifecycle is independent of the shell - if the
@@ -394,7 +396,7 @@ runs:
394396
# set this detect-only flag, which makes cold asset downloads
395397
# fall back to slow repeated retries.
396398
unset HUB__ARGS__DETECT_ONLY
397-
./isaaclab.sh -p -m pip install pytest pytest-mock junitparser flatdict flaky \"coverage>=7.6.1\"
399+
./isaaclab.sh -p -m pip install pytest pytest-mock junitparser flaky \"coverage>=7.6.1\"
398400
if [ -n \"\${TEST_WHEELHOUSE_PACKAGES:-}\" ]; then
399401
if [ ! -d \"\${TEST_WHEELHOUSE_PATH:-}\" ]; then
400402
echo \"Wheelhouse path is missing: \${TEST_WHEELHOUSE_PATH:-}\"
@@ -429,6 +431,7 @@ runs:
429431
./isaaclab.sh -p -m pytest --ignore=tools/conftest.py $test_path $pytest_options -v --junitxml=tests/$result_file
430432
"
431433
434+
echo "::group::Following Docker container logs"
432435
# Stream container logs in background.
433436
docker logs -f "$container_name" &
434437
logs_pid=$!
@@ -453,13 +456,15 @@ runs:
453456
kill $logs_pid 2>/dev/null || true
454457
wait $logs_pid 2>/dev/null || true
455458
logs_pid=""
459+
echo "::endgroup::"
456460
457461
if [ $DOCKER_EXIT -eq 0 ]; then
458462
echo "🟢 Docker container completed successfully"
459463
else
460464
echo "🟠 Docker container failed (exit $DOCKER_EXIT), but continuing to copy results..."
461465
fi
462466
467+
echo "::group::Copy results"
463468
# Copy test results with error handling.
464469
# When volume-mounted, test output lands on the host filesystem directly
465470
# (docker cp cannot see bind-mounted paths after the container stops).
@@ -511,13 +516,16 @@ runs:
511516
elif docker cp "$container_name:/workspace/isaaclab/tests/comparison-images" "$img_dir" 2>/dev/null; then
512517
echo "🟢 Comparison images copied from container to $img_dir"
513518
fi
519+
echo "::endgroup::"
514520
521+
echo "::group::Cleanup"
515522
# Clean up container
516523
echo "🔵 Cleaning up Docker container..."
517524
docker rm $container_name 2>/dev/null || echo "🟠 Container cleanup failed, but continuing..."
518525
if [ -n "$docker_runtime_dir" ]; then
519526
rm -rf "$docker_runtime_dir" || echo "🟠 Docker runtime storage cleanup failed, but continuing..."
520527
fi
528+
echo "::endgroup::"
521529
522530
return $DOCKER_EXIT
523531
}

.github/workflows/docs.yaml

Lines changed: 13 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -118,10 +118,9 @@ jobs:
118118
git for-each-ref --format="%(refname:short)" refs/heads/ | xargs -r git branch -D
119119
make multi-docs
120120
121-
- name: Upload docs artifact
122-
uses: actions/upload-artifact@v7
121+
- name: Upload GitHub Pages artifact
122+
uses: actions/upload-pages-artifact@v4
123123
with:
124-
name: docs-html
125124
path: ./docs/_build
126125

127126
deploy-docs:
@@ -131,16 +130,15 @@ jobs:
131130
# deploy only on "deploy" branches
132131
if: needs.doc-build-type.outputs.trigger-deploy == 'true'
133132

134-
steps:
135-
- name: Download docs artifact
136-
uses: actions/download-artifact@v8
137-
with:
138-
name: docs-html
139-
path: ./docs/_build
133+
permissions:
134+
pages: write
135+
id-token: write
140136

141-
- name: Deploy to gh-pages
142-
uses: peaceiris/actions-gh-pages@v4
143-
with:
144-
github_token: ${{ secrets.GITHUB_TOKEN }}
145-
publish_dir: ./docs/_build
146-
keep_files: false
137+
environment:
138+
name: github-pages
139+
url: ${{ steps.deployment.outputs.page_url }}
140+
141+
steps:
142+
- name: Deploy GitHub Pages
143+
id: deployment
144+
uses: actions/deploy-pages@v4

.github/workflows/install-ci.yml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -60,6 +60,7 @@ jobs:
6060
$'^\\.github/workflows/install-ci\\.yml$\tThis workflow file'
6161
$'^VERSION$\tVersion file'
6262
$'(^|/)pyproject\\.toml$\tPython project metadata'
63+
$'^uv\\.lock$\tuv lockfile'
6364
$'(^|/)environment\\.ya?ml$\tConda environment file'
6465
)
6566

.github/workflows/test-multi-gpu.yaml

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,8 @@ on:
1919
paths:
2020
- "source/isaaclab/isaaclab/app/app_launcher.py"
2121
- "source/isaaclab_tasks/isaaclab_tasks/utils/sim_launcher.py"
22-
- "scripts/reinforcement_learning/**/train.py"
22+
- "scripts/reinforcement_learning/train.py"
23+
- "source/isaaclab_rl/isaaclab_rl/entrypoints/**"
2324
- ".github/workflows/test-multi-gpu.yaml"
2425
workflow_dispatch:
2526

@@ -120,7 +121,8 @@ jobs:
120121
121122
# Run 2-GPU distributed training for 3 iterations
122123
./isaaclab.sh -p -m torch.distributed.run --nproc_per_node=2 \
123-
scripts/reinforcement_learning/${TRAINER}/train.py \
124+
scripts/reinforcement_learning/train.py \
125+
--rl_library ${TRAINER} \
124126
--task=${{ matrix.task }} \
125127
--headless \
126128
--distributed \

docker/cluster/.env.cluster

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,4 +19,4 @@ CLUSTER_SIF_PATH=/some/path/on/cluster/
1919
# Remove the temporary isaaclab code copy after the job is done
2020
REMOVE_CODE_COPY_AFTER_JOB=false
2121
# Python executable within Isaac Lab directory to run with the submitted job
22-
CLUSTER_PYTHON_EXECUTABLE=scripts/reinforcement_learning/rsl_rl/train.py
22+
CLUSTER_PYTHON_EXECUTABLE=scripts/reinforcement_learning/train.py
143 KB
Loading
137 KB
Loading

0 commit comments

Comments
 (0)