Два SBC Banana Pi BPI-F3 (https://docs.banana-pi.org/en/BPI-F3/BananaPi_BPI-F3).
Доступ к узлам pine-spacemit1.ipa.csc.sibsutis.ru
, pine-spacemit2.ipa.csc.sibsutis.ru
возможен только с головной машины кластера pine. Для непривилегированных пользователей запуск задач осуществляется с узла pine через отдельную очередь SLURM spacemit-rv64gc
.
Конфигурация узла:
Программное обеспечение:
/opt/spacemit-toolchain-linux-glibc-x86_64-v1.0.5
)В домашнем каталоге на узле Pine (x86-64) выполняем редактирование и кросс-компиляцию программ под RISC-V RV64GCVB.
# 1. Компилируем программу
$ riscv64-unknown-linux-gnu-gcc -O2 -mcpu=spacemit-x60 -march=rv64gc_zba_zbb_zbc_zbs prog.c -o prog.gcc
# 2. Проверяем собранный файл под RISC-V
$ file ./prog.gcc
./prog.gcc: ELF 64-bit LSB executable, UCB RISC-V, RVC, double-float ABI, version 1 (SYSV), dynamically linked, interpreter /lib/ld-linux-riscv64-lp64d.so.1, for GNU/Linux 4.15.0, with debug_info, not stripped
-mcpu=spacemit-x60
-- use x60 scheduling and Fusion information-march=rv64gc_zba_zbb_zbc_zbs
-- enable RISC-V bitmanip extension instructionsВ домашнем каталоге на узле Pine (x86-64) выполняем редактирование и кросс-компиляцию программ под RISC-V RV64GCVB.
# 1. Компилируем программу
$ riscv64-unknown-linux-gnu-clang -O2 -mcpu=spacemit-x60 -march=rv64gc_zba_zbb_zbc_zbs_zicbop -mllvm -cache-line-size=64 -mllvm -prefetch-distance=128 -fuse-ld=lld prog.c -o prog.clang
# 2. Проверяем собранный файл под RISC-V
$ file ./prog.clang
./prog.clang: ELF 64-bit LSB pie executable, UCB RISC-V, RVC, double-float ABI, version 1 (SYSV), dynamically linked, interpreter /lib/ld-linux-riscv64-lp64d.so.1, for GNU/Linux 4.15.0, with debug_info, not stripped
-mcpu=spacemit-x60
-- use x60 scheduling and Fusion information-fuse-ld=lld
-- use the lld linker-march=rv64gc_zba_zbb_zbc_zbs_zicbop -mllvm -cache-line-size=64 -mllvm -prefetch-distance=128
--enable bitmanip extension instructions and prefetch extension instructions.Готовим job-файл (задание) с указанием необходимого числа вычислительных узлов (1 или 2) и скрипт запуска на выделенной подсистеме.
Запрашиваем один узел, 8 ядер из очереди spacemit-rv64gc
:
$ cat task.job
#!/bin/bash
#SBATCH --nodes=1 --ntasks-per-node=8
#SBATCH --partition=spacemit-rv64gc
./prog.gcc
Ставим задачу в очередь системы SLURM:
$ sbatch task.job