Skip to content
Draft
58 changes: 44 additions & 14 deletions .github/workflows/test-fabric-multi-gpu.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -14,19 +14,12 @@

name: FabricFrameView Multi-GPU Tests

# DISABLED: No self-hosted runner with the 'multi-gpu' label is currently
# registered. All runs queue indefinitely. Re-enable once infra provisions
# a multi-GPU runner (see also .github/workflows/test-multi-gpu.yaml which
# has the same issue).
#
# on:
# pull_request:
# paths:
# - "source/isaaclab_physx/isaaclab_physx/sim/views/fabric_frame_view.py"
# - "source/isaaclab_physx/test/sim/test_views_xform_prim_fabric.py"
# - ".github/workflows/test-fabric-multi-gpu.yaml"
# workflow_dispatch:
on:
pull_request:
paths:
- "source/isaaclab_physx/isaaclab_physx/sim/views/fabric_frame_view.py"
- "source/isaaclab_physx/test/sim/test_views_xform_prim_fabric.py"
- ".github/workflows/test-fabric-multi-gpu.yaml"
workflow_dispatch:

concurrency:
Expand All @@ -37,13 +30,43 @@ jobs:
test-fabric-multi-gpu:
name: FabricFrameView multi-GPU unit tests
runs-on: [self-hosted, linux, x64, gpu, multi-gpu]
timeout-minutes: 30
timeout-minutes: 60
steps:
- name: Checkout repository
uses: actions/checkout@v4

- name: Set up Python
uses: actions/setup-python@v5
with:
python-version: "3.12"

- name: Install cmake via pip (avoid sudo apt path)
# install.py skips its sudo apt-get block when ``cmake`` is already on
# PATH (source/isaaclab/isaaclab/cli/commands/install.py:35). The
# pip wheel provides a cmake shim under the setup-python venv's bin/,
# which is on PATH, so installing it here bypasses the apt branch.
run: pip install cmake

- name: Install Isaac Lab
run: ./isaaclab.sh --install
# ``--install none`` = core submodules only (no mimic, no teleop, no
# auto-extra features). The FabricFrameView cuda:1 tests only need
# isaaclab core + isaaclab_physx + Isaac Sim. Avoids building
# robomimic's egl_probe wheel, which requires libEGL/X11 headers
# that the multi-GPU runner image lacks.
run: ./isaaclab.sh --install none

- name: Install Isaac Sim
# Isaac Sim is an optional extra in source/isaaclab/setup.py and is
# not pulled by ``--install none``. Without it, AppLauncher's
# ``import isaacsim`` is silently caught by
# ``contextlib.suppress(ModuleNotFoundError)``, ``EXP_PATH`` stays
# unset, and test collection crashes with ``KeyError: 'EXP_PATH'``.
#
# Pinned to 6.0.0.0 because that is the only release line with a
# Python 3.12 wheel. The 5.x line on PyPI requires Python 3.11
# (and source/isaaclab/setup.py's ``isaacsim==5.1.0`` pin is stale
# relative to the 3.12 baseline declared in pyproject.toml).
run: pip install 'isaacsim[all,extscache]==6.0.0.0'

- name: Verify multi-GPU availability
# Fail loud if the runner regressed to a single GPU. Without this, the
Expand All @@ -64,6 +87,13 @@ jobs:
- name: Run FabricFrameView multi-GPU unit tests
env:
ISAACLAB_TEST_MULTI_GPU: "1"
# Bypass Kit's interactive EULA prompt on first launch. Without
# these, isaacsim.bootstrap_kernel reads stdin during test
# collection and pytest aborts with
# ``pytest: reading from stdin while output is captured``.
OMNI_KIT_ACCEPT_EULA: "yes"
ACCEPT_EULA: "Y"
ISAAC_SIM_HEADLESS: "1"
run: |
./isaaclab.sh -p -m pytest \
source/isaaclab_physx/test/sim/test_views_xform_prim_fabric.py -v
Loading