Не удается найти символ for_realloc_lhs в сборке библиотеки Fortran с помощью компилятора Intel ifort - PullRequest
0 голосов
/ 02 октября 2018

Мы создали библиотеку на Фортране.Но когда я пытаюсь использовать его, я всегда получаю это сообщение об ошибке:

libstandardU.so: undefined symbol: for_realloc_lhs

Мы используем abaqus для загрузки функций из нашей библиотеки:

/opt/abaqus/SimulationServices/V6R2018x/linux_a64/code/bin/standard: symbol lookup error: /home/user/libstandardU.so: undefined symbol: for_realloc_lhs

Для компиляции мы используем IntelStudio 2018. Ldd показывает, что находит нужные библиотеки в правильном каталоге intel.Может быть, есть флаг, который нам нужно использовать для запуска abaqus или ifort, чтобы включить for_realloc_lhs?Мы в основном программисты на C ++ и немного запутались.Мы бы очень хотели использовать Intel ifort, но любопытно: переключимся ли вы на gfortran, чтобы исправить ошибку?

Полный вывод:

Begin Analysis Input File Processor
Tue 02 Oct 2018 08:21:22 AM CEST
Run pre
Tue 02 Oct 2018 08:21:29 AM CEST
End Analysis Input File Processor
Begin Abaqus/Standard Analysis
Tue 02 Oct 2018 08:21:29 AM CEST
Run standard
/cluster/tools/abaqus/SimulationServices/V6R2018x/linux_a64/code/bin/standard: symbol lookup error: /home/carwolff/libstandardU.so: undefined symbol: for_realloc_lhs
Tue 02 Oct 2018 08:21:55 AM CEST
Abaqus Error: Abaqus/Standard Analysis exited with an error - Please see the 
message file for possible error messages if the file exists.
Begin Convert MFS to SFS
Tue 02 Oct 2018 08:21:55 AM CEST
Run SMASimUtility
Tue 02 Oct 2018 08:21:55 AM CEST
End Convert MFS to SFS
Abaqus/Analysis exited with errors

Мы запускаем abaqus с помощью этого скрипта bash:

module load software/abaqus/abaqus_2018
module load intel-studio-2018
input_file=DIC.inp

working_dir=/work/user

### Create ABAQUS environment file for current job, you can set/add your own options (Python syntax)
env_file=custom_v6.env


#########################################################################

cat << EOF > ${env_file}
mp_file_system = (DETECT,DETECT)
EOF

usub_lib_dir=/home/carwolff/
node_list=$(scontrol show hostname ${SLURM_NODELIST} | sort -u)

mp_host_list="["
for host in ${node_list}; do
    mp_host_list="${mp_host_list}['$host', ${SLURM_CPUS_ON_NODE}],"
done

mp_host_list=$(echo ${mp_host_list} | sed -e "s/,$/]/")

echo "mp_host_list=${mp_host_list}"  >> ${env_file}


### Set input file and job (file prefix) name here
job_name=${SLURM_JOB_NAME}

### ABAQUS parallel execution
#abaqus job=${job_name} input=${input_file} user=mcd_acustom.f cpus=${SLURM_NTASKS} standard_parallel=all interactive #mp_mode=mpi
#abaqus make -library mcd_acustom.f
abaqus job=${job_name} input=${input_file} cpus=2 standard_parallel=all interactive 

Редактировать:

Это работает, спасибо: если вам не требуется автоматическое перераспределение левой стороны Fortran 2003, вы можете попробовать скомпилировать с -nostandard-realloc-lhs,Это было по умолчанию в старых версиях Intel Fortran.Будьте осторожны, нужно ли вам это или нет.- Владимир Ф 2 октября в 12: 18

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...