@@ -39,11 +39,98 @@ jobs:
3939 run : uv venv --python 3.11 .venv
4040
4141 - name : Install MLX smoke dependencies
42- run : uv pip install --python .venv/bin/python mlx pytest pytest-mock toml
42+ run : |
43+ uv pip install --python .venv/bin/python \
44+ -e source/isaaclab[macos-mlx,dev] \
45+ -e source/isaaclab_rl[dev]
46+
47+ - name : Prepare benchmark artifact directory
48+ run : mkdir -p logs/benchmarks/mlx
49+
50+ - name : Run public install smoke
51+ run : |
52+ PYTHONPATH=.:source/isaaclab:source/isaaclab_rl .venv/bin/python - <<'PY'
53+ import json
54+ from pathlib import Path
55+
56+ from isaaclab.backends import resolve_runtime_selection, set_runtime_selection
57+
58+ set_runtime_selection(resolve_runtime_selection(compute_backend="mlx", sim_backend="mac-sim", device="cpu"))
59+
60+ import isaaclab
61+ import isaaclab.backends.mac_sim
62+ import isaaclab.controllers
63+ import isaaclab.envs.mdp.actions.actions_cfg
64+ import isaaclab.envs.mdp.actions.rmpflow_actions_cfg
65+ import isaaclab.sim
66+ import isaaclab.sim.converters
67+ import isaaclab.sim.schemas
68+ import isaaclab.sim.spawners.from_files
69+ import isaaclab_rl.sb3
70+ import isaaclab_rl.skrl
71+ from isaaclab.backends.mac_sim import MacCartpoleEnv
72+
73+ env = MacCartpoleEnv()
74+ observations, _ = env.reset()
75+ payload = {
76+ "modules": [
77+ "isaaclab",
78+ "isaaclab.backends.mac_sim",
79+ "isaaclab.controllers",
80+ "isaaclab.envs.mdp.actions.actions_cfg",
81+ "isaaclab.envs.mdp.actions.rmpflow_actions_cfg",
82+ "isaaclab.sim",
83+ "isaaclab.sim.converters",
84+ "isaaclab.sim.schemas",
85+ "isaaclab.sim.spawners.from_files",
86+ "isaaclab_rl.sb3",
87+ "isaaclab_rl.skrl",
88+ ],
89+ "policy_shape": list(observations["policy"].shape),
90+ "package": isaaclab.__name__,
91+ }
92+ out_path = Path("logs/benchmarks/mlx/install_import_smoke.json")
93+ out_path.write_text(json.dumps(payload, indent=2, sort_keys=True) + "\n", encoding="utf-8")
94+ print(payload["policy_shape"])
95+ PY
4396
4497 - name : Run MLX backend smoke tests
4598 run : |
46- PYTHONPATH=.:source/isaaclab .venv/bin/pytest \
99+ PYTHONPATH=.:source/isaaclab:source/isaaclab_rl .venv/bin/pytest \
47100 scripts/tools/test/test_bootstrap_isaac_sources.py \
48101 source/isaaclab/test/backends/test_runtime.py \
49- source/isaaclab/test/backends/test_mac_cartpole.py -q
102+ source/isaaclab_rl/test/test_import_safety.py \
103+ source/isaaclab/test/backends/test_portability_utils.py \
104+ source/isaaclab/test/backends/test_mac_cartpole.py \
105+ source/isaaclab/test/backends/test_mac_cartpole_showcase.py \
106+ source/isaaclab/test/backends/test_mac_cart_double_pendulum.py \
107+ source/isaaclab/test/backends/test_mac_quadcopter.py -q
108+
109+ - name : Run MLX cart-double-pendulum smoke script
110+ run : |
111+ PYTHONPATH=.:source/isaaclab .venv/bin/python \
112+ scripts/reinforcement_learning/mlx/play_cart_double_pendulum.py \
113+ --num-envs 8 --episodes 1 --max-steps 256 --random-actions
114+
115+ - name : Run MLX quadcopter smoke script
116+ run : |
117+ PYTHONPATH=.:source/isaaclab .venv/bin/python \
118+ scripts/reinforcement_learning/mlx/play_quadcopter.py \
119+ --num-envs 8 --episodes 1 --episode-length-s 0.5 --max-steps 256 --thrust-action 0.2 --no-random-actions
120+
121+ - name : Run MLX benchmark smoke
122+ run : |
123+ PYTHONPATH=.:source/isaaclab .venv/bin/python \
124+ scripts/benchmarks/mlx/benchmark_mac_tasks.py \
125+ --tasks cartpole cart-double-pendulum quadcopter \
126+ --num-envs 64 \
127+ --steps 128 \
128+ --json-out logs/benchmarks/mlx/smoke.json
129+
130+ - name : Upload MLX smoke artifacts
131+ if : always()
132+ uses : actions/upload-artifact@v4
133+ with :
134+ name : mlx-macos-smoke-${{ github.run_id }}
135+ path : logs/benchmarks/mlx
136+ if-no-files-found : warn
0 commit comments