Я сталкиваюсь со странной проблемой при запуске исполняемого файла C ++ (инструмент Gromacs editconf), который был скомпилирован внутри контейнера Singularity. Контейнер был построен на моей локальной машине и перенесен в небольшой вычислительный кластер, где я наблюдаю следующее:
Когда я непосредственно выполняю команду Gromacs ("gmx editconf" с парой аргументов), она отлично работает:
singularity exec image.simg gmx editconf -bt octahedron -f complex.pdb -o complex.pdb -box 8
Но как только я пытаюсь выполнить его через скрипт Bash внутри контейнера
singularity exec image.simg /bin/bash /opt/prep_stuff.sh $ARG1 $ARG2
, который, в свою очередь, запускает инструмент Gromacs вот так
gmx editconf -bt octahedron -f complex.pdb -o complex.pdb -box 8
вылетает с ошибкой
/opt/prep_stuff.sh: line 109: 27326 Illegal instruction (core dumped) gmx editconf -bt octahedron -f complex.pdb -o complex.pdb -box 8
в то время как все остальные шаги в этом скрипте Bash выполнены правильно. Кроме того, строка 109 (начало цикла for) появляется задолго до фактического вызова gmx editconf
.
Кто-нибудь имеет представление о том, почему два подхода ведут себя по-разному, хотя и выполняются на одной и той же машине? Мне нужно, чтобы он работал в соответствии с подходом Bash-скрипта.
Большое спасибо!