Skip to content

Commit cd204ad

Browse files
authored
Adds torch hook to export libgomp.so.1 from installed torch (#3512)
# Description This PR makes the LD_PRELOAD always points to the right python libgomp.so.1 when conda activate is invoked. The ARM machines doesn't really work with conda unless LD_PRELOAD is point to `torch/lib/libgomp.so.1` This has been tested to work on linux and arm to work on both machines ## Type of change <!-- As you go through the list, delete the ones that are not applicable. --> - Bug fix (non-breaking change which fixes an issue) ## Screenshots Please attach before and after screenshots of the change if applicable. <!-- Example: | Before | After | | ------ | ----- | | _gif/png before_ | _gif/png after_ | To upload images to a PR -- simply drag and drop an image while in edit mode and it should upload the image directly. You can then paste that source into the above before/after sections. --> ## Checklist - [ ] I have read and understood the [contribution guidelines](https://isaac-sim.github.io/IsaacLab/main/source/refs/contributing.html) - [ ] I have run the [`pre-commit` checks](https://pre-commit.com/) with `./isaaclab.sh --format` - [ ] I have made corresponding changes to the documentation - [ ] My changes generate no new warnings - [ ] I have added tests that prove my fix is effective or that my feature works - [ ] I have updated the changelog and the corresponding version in the extension's `config/extension.toml` file - [ ] I have added my name to the `CONTRIBUTORS.md` or my name already exists there <!-- As you go through the checklist above, you can mark something as done by putting an x character in it For example, - [x] I have done this task - [ ] I have not done this task -->
1 parent 3a0db9d commit cd204ad

File tree

1 file changed

+40
-0
lines changed

1 file changed

+40
-0
lines changed

isaaclab.sh

Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -247,6 +247,45 @@ install_isaaclab_extension() {
247247
fi
248248
}
249249

250+
# Resolve Torch-bundled libgomp and prepend to LD_PRELOAD, once per shell session
251+
write_torch_gomp_hooks() {
252+
mkdir -p "${CONDA_PREFIX}/etc/conda/activate.d" "${CONDA_PREFIX}/etc/conda/deactivate.d"
253+
254+
# activation: resolve Torch's libgomp via this env's Python and prepend to LD_PRELOAD
255+
cat > "${CONDA_PREFIX}/etc/conda/activate.d/torch_gomp.sh" <<'EOS'
256+
# Resolve Torch-bundled libgomp and prepend to LD_PRELOAD (quiet + idempotent)
257+
: "${_IL_PREV_LD_PRELOAD:=${LD_PRELOAD-}}"
258+
259+
__gomp="$("$CONDA_PREFIX/bin/python" - <<'PY' 2>/dev/null || true
260+
import pathlib
261+
try:
262+
import torch
263+
p = pathlib.Path(torch.__file__).parent / 'lib' / 'libgomp.so.1'
264+
print(p if p.exists() else "", end="")
265+
except Exception:
266+
pass
267+
PY
268+
)"
269+
270+
if [ -n "$__gomp" ] && [ -r "$__gomp" ]; then
271+
case ":${LD_PRELOAD:-}:" in
272+
*":$__gomp:"*) : ;; # already present
273+
*) export LD_PRELOAD="$__gomp${LD_PRELOAD:+:$LD_PRELOAD}";;
274+
esac
275+
fi
276+
unset __gomp
277+
EOS
278+
279+
# deactivation: restore original LD_PRELOAD
280+
cat > "${CONDA_PREFIX}/etc/conda/deactivate.d/torch_gomp_unset.sh" <<'EOS'
281+
# restore LD_PRELOAD to pre-activation value
282+
if [ -v _IL_PREV_LD_PRELOAD ]; then
283+
export LD_PRELOAD="$_IL_PREV_LD_PRELOAD"
284+
unset _IL_PREV_LD_PRELOAD
285+
fi
286+
EOS
287+
}
288+
250289
# setup anaconda environment for Isaac Lab
251290
setup_conda_env() {
252291
# get environment name from input
@@ -311,6 +350,7 @@ setup_conda_env() {
311350
'export RESOURCE_NAME="IsaacSim"' \
312351
'' > ${CONDA_PREFIX}/etc/conda/activate.d/setenv.sh
313352

353+
write_torch_gomp_hooks
314354
# check if we have _isaac_sim directory -> if so that means binaries were installed.
315355
# we need to setup conda variables to load the binaries
316356
local isaacsim_setup_conda_env_script=${ISAACLAB_PATH}/_isaac_sim/setup_conda_env.sh

0 commit comments

Comments
 (0)