| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
|
|
| set -euo pipefail |
|
|
| PROJECT_DIR="${PROJECT_DIR:-$SLURM_SUBMIT_DIR}" |
| SCRATCH_ROOT="/scratch/$USER/dovla" |
| SIF="$SCRATCH_ROOT/containers/pytorch_2.7.1_cuda12.8.sif" |
| PYTHON="$SCRATCH_ROOT/envs/maniskill/bin/python" |
| NATIVE_LIBS="$SCRATCH_ROOT/native_libs/lib" |
| CPU_RENDER_LIBS="$SCRATCH_ROOT/cpu_render_libs" |
| CA_BUNDLE="$SCRATCH_ROOT/ca-bundle.crt" |
| VULKAN_ICD="$CPU_RENDER_LIBS/share/vulkan/icd.d/lvp_icd.x86_64.json" |
| DEMO="$SCRATCH_ROOT/maniskill_data/demos/PickCube-v1/rl/trajectory.none.pd_ee_delta_pose.physx_cuda.h5" |
| OUT_DIR="${OUT_DIR:-$PROJECT_DIR/outputs/hpc/maniskill_debug_cil}" |
| RUNTIME_DIR="/tmp/$USER/dovla-runtime-$SLURM_JOB_ID" |
| CACHE_DIR="/tmp/$USER/dovla-mesa-$SLURM_JOB_ID" |
|
|
| module load StdEnv/2023 apptainer/1.4.5 |
| cd "$PROJECT_DIR" |
| mkdir -p outputs/hpc/logs "$OUT_DIR" "$RUNTIME_DIR" "$CACHE_DIR" |
| chmod 700 "$RUNTIME_DIR" |
|
|
| export OMP_NUM_THREADS=1 |
| export OPENBLAS_NUM_THREADS=1 |
| export MKL_NUM_THREADS=1 |
| export LP_NUM_THREADS=1 |
|
|
| apptainer exec --nv \ |
| --env "LD_LIBRARY_PATH=$CPU_RENDER_LIBS/lib:$NATIVE_LIBS:/.singularity.d/libs,VK_ICD_FILENAMES=$VULKAN_ICD,VK_DRIVER_FILES=$VULKAN_ICD,XDG_RUNTIME_DIR=$RUNTIME_DIR,MESA_SHADER_CACHE_DIR=$CACHE_DIR,LIBGL_ALWAYS_SOFTWARE=1,LP_NUM_THREADS=1,SSL_CERT_FILE=$CA_BUNDLE,REQUESTS_CA_BUNDLE=$CA_BUNDLE,OMP_NUM_THREADS=1,OPENBLAS_NUM_THREADS=1,MKL_NUM_THREADS=1" \ |
| "$SIF" "$PYTHON" - <<'PY' |
| import gymnasium as gym |
| import mani_skill |
| import os |
| import torch |
|
|
| print("torch", torch.__version__, "cuda", torch.cuda.is_available(), torch.cuda.get_device_name(0)) |
| print("vulkan_icd", os.environ.get("VK_ICD_FILENAMES"), "cuda_visible", os.environ.get("CUDA_VISIBLE_DEVICES")) |
| env = gym.make( |
| "PickCube-v1", |
| num_envs=1, |
| obs_mode="state", |
| control_mode="pd_ee_delta_pose", |
| render_mode=None, |
| sim_backend="physx_cuda:0", |
| render_backend="cpu", |
| ) |
| env.reset(seed=7) |
| state = { |
| section: {name: value.clone() for name, value in values.items()} |
| for section, values in env.unwrapped.get_state_dict().items() |
| } |
| action = torch.zeros((1, 7), dtype=torch.float32, device=env.unwrapped.device) |
| env.unwrapped.set_state_dict(state) |
| env.unwrapped.agent.controller.reset() |
| restored = env.unwrapped.get_state_dict() |
| max_error = max( |
| float(torch.max(torch.abs(state[section][name] - restored[section][name])).cpu()) |
| for section in state |
| for name in state[section] |
| ) |
| print("state_restore_max_error", max_error) |
| assert max_error <= 1e-6 |
|
|
| env.unwrapped.step(action) |
| next_state_1 = { |
| section: {name: value.clone() for name, value in values.items()} |
| for section, values in env.unwrapped.get_state_dict().items() |
| } |
| env.unwrapped.set_state_dict(state) |
| env.unwrapped.agent.controller.reset() |
| env.unwrapped.step(action) |
| next_state_2 = env.unwrapped.get_state_dict() |
| branch_error = max( |
| float(torch.max(torch.abs(next_state_1[section][name] - next_state_2[section][name])).cpu()) |
| for section in next_state_1 |
| for name in next_state_1[section] |
| ) |
| print("deterministic_branch_max_error", branch_error) |
| assert branch_error <= 1e-5 |
| env.close() |
| PY |
|
|
| apptainer exec --nv \ |
| --env "LD_LIBRARY_PATH=$CPU_RENDER_LIBS/lib:$NATIVE_LIBS:/.singularity.d/libs,VK_ICD_FILENAMES=$VULKAN_ICD,VK_DRIVER_FILES=$VULKAN_ICD,XDG_RUNTIME_DIR=$RUNTIME_DIR,MESA_SHADER_CACHE_DIR=$CACHE_DIR,LIBGL_ALWAYS_SOFTWARE=1,LP_NUM_THREADS=1,SSL_CERT_FILE=$CA_BUNDLE,REQUESTS_CA_BUNDLE=$CA_BUNDLE,OMP_NUM_THREADS=1,OPENBLAS_NUM_THREADS=1,MKL_NUM_THREADS=1" \ |
| "$SIF" "$PYTHON" scripts/generate_maniskill_lattice.py \ |
| --demo "$DEMO" \ |
| --out "$OUT_DIR" \ |
| --num-groups 8 \ |
| --k 4 \ |
| --horizon 4 \ |
| --seed 0 \ |
| --shard-size 32 \ |
| --sim-backend physx_cuda:0 \ |
| --render-backend cpu \ |
| --state-storage archive |
|
|
| apptainer exec --nv \ |
| --env "LD_LIBRARY_PATH=$CPU_RENDER_LIBS/lib:$NATIVE_LIBS:/.singularity.d/libs,VK_ICD_FILENAMES=$VULKAN_ICD,VK_DRIVER_FILES=$VULKAN_ICD,XDG_RUNTIME_DIR=$RUNTIME_DIR,MESA_SHADER_CACHE_DIR=$CACHE_DIR,LIBGL_ALWAYS_SOFTWARE=1,LP_NUM_THREADS=1,SSL_CERT_FILE=$CA_BUNDLE,REQUESTS_CA_BUNDLE=$CA_BUNDLE,OMP_NUM_THREADS=1,OPENBLAS_NUM_THREADS=1,MKL_NUM_THREADS=1" \ |
| "$SIF" "$PYTHON" scripts/inspect_shard.py "$OUT_DIR/manifest.json" |
|
|