[mephi-hpc] Ошибка компоновки, gfortran-4.9

anikeev at ut.mephi.ru anikeev at ut.mephi.ru
Tue Feb 15 18:37:10 MSK 2022


Екатерина Кузина писал 2022-02-13 13:10:
> Добрый день!

Здравствуйте!

Прошу прощения за задержку с ответом.

Ваше ПО слишком сильно устарело, с ним проще работать с помощью 
chroot-окружений. Вы можете быстро создать chroot-окружение для 
произвольного дистрибутива Linux семейства Debian и произвольной 
архитектуры на своем лаптопе с дистрибутивом Linux семейства Debian при 
помощи утилиты debootstrap с правами администратора, например:

master.cherenkov anikeev # debootstrap --arch=i386 --no-check-gpg wheezy 
./wheezy_i386/ http://archive.debian.org/debian/

Получить доступ внутрь chroot-окружения с правами администратора можно 
при помощи утилиты chroot:

master.cherenkov anikeev # chroot ./wheezy_i386/
root at master:/# apt-get update
root at master:/# apt-get install gcc g++ gfortran libquadmath0 
build-essential cmake git
root at master:/# exit

Далее, Вы можете скопировать chroot-окружение просто как директорию с 
файлами на хранилище кластера:

master.cherenkov anikeev # cp -r ./wheezy_i386/ /mnt/pool/5/ekuzina/
master.cherenkov anikeev # chown -R ekuzina:ekuzina 
/mnt/pool/5/ekuzina/wheezy_i386/

На кластере Вы можете с правами пользователя получить доступ внутрь 
окружения при помощи утилиты proot:

ekuzina at master.cherenkov ~ $ proot -R /mnt/pool/5/ekuzina/wheezy_i386/ 
/bin/bash
ekuzina at master:~$ gfortran -v
...
Target: i486-linux-gnu
...
gcc version 4.7.2 (Debian 4.7.2-5)

Работать с менеджером ресурсов Slurm нужно их хост-системы, не из 
chroot-окружения. Пример SBATCH скрипта с использованием proot:

#!/bin/bash
#SBATCH --nodes=1
#SBATCH --ntasks=1
#SBATCH --cpus-per-task=1
#SBATCH --time=1:00:00

proot -R /mnt/pool/5/ekuzina/wheezy_i386/ /relative/path/inside/chroot

Если у Вас нет лаптопа с дистрибутивом Linux семейства Debian, или Вы 
желаете получить chroot-окружение с Linux-дистрибутивом не из семейства 
Debian, Вам нужно будет создать его вручную, без использования утилиты 
debootstrap. Самый простой путь - на лаптопе при помощи виртуальной 
машины установить требуемый дистрибутив Linux. Далее, остановить 
виртуальную машину, смонтировать файловую систему виртуального диска и 
скопировать полное её содержимое в директорию chroot-окружения.

Chroot окружения не позволяют запускать бинарные файлы, несовместимые по 
набору инструкций. На i386 процессоре Вы можете запустить окружение 
i386. На x86_64 процессоре Вы можете запустить окружение x86_64 или 
i386. Окружение aarch64 запустить на x86_64 при помощи chroot нельзя, 
нужна полноценная виртуальная машина.

Chroot окружения ограничены совместимостью системных вызовов ядра ОС 
хоста и гостевой ОС. Чем ближе версии ОС по времени и генеалогически, 
тем меньше вероятность ошибок. Если для Вашего ПО не хватает 
совместимости системных вызовов с текущей ОС кластеров МИФИ, Вам нужна 
полноценная виртуальная машина.

Сервис виртуализации VDS и сервис высокопроизводительных вычислений HPC 
архитектурно несовместимы. Если Вам нужна виртуальная машина, Вам нужно 
обратиться в соответствующую службу управления информатизации:

https://it.mephi.ru/vds-hosting

Я подготовил Вам окружение на базе Debian 8 Wheezy (2013) с архитектурой 
i386 в директории /mnt/pool/5/ekuzina/wheezy_i386. Если Вам не хватает 
имеющихся пакетов, напишите, каких именно.

Напоминаю Вам, что ПО без SIMD-оптимизации следует запускать на 
кластерах Unicluster и Basov.

Обращайтесь при наличии вопросов.

> Несколькими месяцами ранее на
> кластере cherenkov использовала gfortran-4.9
> для компиляции 32битных программ (с
> опцией -m32). Сейчас столкнулась со
> следующим:
> 
> /usr/bin/ld: skipping incompatible
> /usr/lib/gcc/x86_64-linux-gnu/4.9/libgfortran.so when searching for
> -lgfortran
> /usr/bin/ld: skipping incompatible
> /usr/lib/gcc/x86_64-linux-gnu/4.9/libgfortran.a when searching for
> -lgfortran
> /usr/bin/ld: cannot find -lgfortran
> /usr/bin/ld: skipping incompatible
> /usr/lib/gcc/x86_64-linux-gnu/4.9/libgfortran.so when searching for
> -lgfortran
> /usr/bin/ld: skipping incompatible
> /usr/lib/gcc/x86_64-linux-gnu/4.9/libgcc_s.so when searching for
> -lgcc_s
> /usr/bin/ld: cannot find -lgcc_s
> /usr/bin/ld: skipping incompatible
> /usr/lib/gcc/x86_64-linux-gnu/4.9/libgcc_s.so when searching for
> -lgcc_s
> /usr/bin/ld: skipping incompatible
> /usr/lib/gcc/x86_64-linux-gnu/4.9/libgcc.a when searching for -lgcc
> /usr/bin/ld: cannot find -lgcc
> /usr/bin/ld: skipping incompatible
> /usr/lib/gcc/x86_64-linux-gnu/4.9/libquadmath.so when searching for
> -lquadmath
> /usr/bin/ld: skipping incompatible
> /usr/lib/gcc/x86_64-linux-gnu/4.9/libquadmath.a when searching for
> -lquadmath
> /usr/bin/ld: cannot find -lquadmath
> /usr/bin/ld: skipping incompatible
> /usr/lib/gcc/x86_64-linux-gnu/4.9/libquadmath.so when searching for
> -lquadmath
> /usr/bin/ld: skipping incompatible
> /usr/lib/gcc/x86_64-linux-gnu/4.9/libgcc_s.so when searching for
> -lgcc_s
> /usr/bin/ld: cannot find -lgcc_s
> /usr/bin/ld: skipping incompatible
> /usr/lib/gcc/x86_64-linux-gnu/4.9/libgcc_s.so when searching for
> -lgcc_s
> /usr/bin/ld: skipping incompatible
> /usr/lib/gcc/x86_64-linux-gnu/4.9/libgcc.a when searching for -lgcc
> /usr/bin/ld: cannot find -lgcc
> collect2: error: ld returned 1 exit status
>  Это можно исправить, пожалуйста?
> Принципиально интересует возможность
> компиляции 32битных исполняемых
> файлов на gfortran-4.*. Конкретный кластер
> не имеет значения.
> 
> Спасибо!
> 
> --
> С уважением,
> Кузина Екатерина
> _______________________________________________
> hpc mailing list
> hpc at lists.mephi.ru
> https://lists.mephi.ru/listinfo/hpc

--
С уважением,
инженер отдела UNIX-технологий НИЯУ МИФИ,
к.ф.-м.н.,
Аникеев Артем.
e-mail: anikeev at ut.mephi.ru
тел.: 8 (495) 788-56-99, доб. 8998



More information about the hpc mailing list