This commit is contained in:
2026-03-16 18:20:06 +03:00
parent 05f05a8a96
commit 0286361343
3 changed files with 98 additions and 19 deletions

View File

@@ -67,21 +67,73 @@ CUDA_ARCH=sm_70 ./scripts/build.sh
### 4. Запустить стандартный Intel LINPACK
В примере эталонный LINPACK сначала подготавливается отдельно. Для вашей учётной записи не нужно писать в `/linux/share/...`; правильнее развернуть архив в домашнем каталоге и запускать оттуда.
Пошагово:
1. Скачай официальный архив Intel oneMKL Benchmarks Suite for Linux с сайта Intel:
- страница загрузки: `https://www.intel.com/content/www/us/en/download/780783/intel-oneapi-math-kernel-library-onemkl-benchmarks-suite-for-linux.html`
- на 2026-03-16 там доступен файл `l_onemklbench_p_2025.3.0_422.tgz`
Сохрани его локально и при желании переименуй в `linpack.tgz` для удобства.
2. На локальной машине скопируй архив на кластер:
```bash
sbatch scripts/run_intel_linpack.slurm
scp linpack.tgz polytech:~/linpack.tgz
```
Проверка статуса и итогов:
3. Подключись к кластеру:
```bash
ssh polytech
```
4. Распакуй архив в домашнюю папку:
```bash
mkdir -p ~/LINPACK
tar -xzf ~/linpack.tgz -C ~/LINPACK
```
5. Найди каталог, в котором реально лежит `xlinpack_xeon64`:
```bash
find ~/LINPACK -name xlinpack_xeon64 2>/dev/null
```
Если команда вернёт, например, путь
`/home/ipmmstudy1/tm3u21/LINPACK/benchmarks/linpack/xlinpack_xeon64`,
то нужный каталог для запуска:
`/home/ipmmstudy1/tm3u21/LINPACK/benchmarks/linpack`.
6. Подготовь этот каталог, как в примере:
```bash
cd <НУЖНЫЙ_КАТАЛОГ_С_XLINPACK>
mkdir -p stdio
chmod +x *
chmod -x *.*
```
7. Отправь batch-задачу с явным указанием `LINPACK_DIR`:
```bash
cd ~/supercomputers/task1
sbatch --export=ALL,LINPACK_DIR=<НУЖНЫЙ_КАТАЛОГ_С_XLINPACK> scripts/run_intel_linpack.slurm
```
8. Проверь статус:
```bash
sacct -j <JOBID_INTEL> --format=JobID,JobName,Partition,State,Start,End,Elapsed,NNodes,AllocTRES%40,NodeList,ExitCode
less results/task1-intel-linpack-<JOBID_INTEL>.out
```
Если каталог с Intel LINPACK на кластере другой, отправь задание так:
9. Посмотри вывод:
```bash
sbatch --export=ALL,LINPACK_DIR=/linux/share/mkl/benchmarks/linpack scripts/run_intel_linpack.slurm
less <НУЖНЫЙ_КАТАЛОГ_С_XLINPACK>/stdio/task1-intel-linpack-<JOBID_INTEL>.out
```
## Что нужно собрать для отчёта

View File

@@ -17,6 +17,7 @@ nvcc \
-O3 \
-std=c++14 \
-lineinfo \
-Wno-deprecated-gpu-targets \
-arch="${CUDA_ARCH}" \
-o bin/linpack_cuda \
src/main.cu

View File

@@ -5,28 +5,54 @@
#SBATCH --ntasks=1
#SBATCH --cpus-per-task=56
#SBATCH --time=00:20:00
#SBATCH --output=results/%x-%j.out
#SBATCH --error=results/%x-%j.err
#SBATCH --output=stdio/%x-%j.out
#SBATCH --error=stdio/%x-%j.err
set -euo pipefail
cd "${SLURM_SUBMIT_DIR}"
ROOT_DIR="${SLURM_SUBMIT_DIR}"
module purge
mkdir -p results
LINPACK_DIR="${LINPACK_DIR:-/linux/share/mkl/benchmarks/linpack}"
LINPACK_DIR="${LINPACK_DIR:-$HOME/LINPACK}"
LINPACK_INPUT="${LINPACK_INPUT:-lininput_xeon64}"
if [ ! -x "${LINPACK_DIR}/xlinpack_xeon64" ]; then
echo "Intel LINPACK binary not found: ${LINPACK_DIR}/xlinpack_xeon64"
echo "If the path differs on the cluster, submit with:"
echo "sbatch --export=ALL,LINPACK_DIR=/path/to/linpack scripts/run_intel_linpack.slurm"
if [ ! -d "${LINPACK_DIR}" ]; then
echo "LINPACK directory not found: ${LINPACK_DIR}"
echo "Prepare Intel LINPACK in your home directory first."
echo "Example:"
echo " mkdir -p \$HOME/LINPACK"
echo " tar -xzf \$HOME/linpack.tgz -C \$HOME/LINPACK"
exit 1
fi
resolve_linpack_dir() {
if [ -x "${LINPACK_DIR}/xlinpack_xeon64" ]; then
printf '%s\n' "${LINPACK_DIR}"
return 0
fi
local found
found="$(find "${LINPACK_DIR}" -name xlinpack_xeon64 2>/dev/null | head -n 1 || true)"
if [ -n "${found}" ]; then
dirname "${found}"
return 0
fi
return 1
}
if ! LINPACK_DIR="$(resolve_linpack_dir)"; then
echo "Intel LINPACK binary not found under: ${LINPACK_DIR}"
echo "Check archive contents with:"
echo " find ${LINPACK_DIR} -name xlinpack_xeon64 2>/dev/null"
exit 1
fi
cd "${LINPACK_DIR}"
chmod +x ./* || true
chmod -x ./*.* || true
mkdir -p stdio
echo "===== account info ====="
whoami
hostname
@@ -51,8 +77,8 @@ fi
echo
echo "===== intel linpack ====="
echo "LINPACK_DIR=${LINPACK_DIR}"
export OMP_NUM_THREADS="${SLURM_CPUS_PER_TASK:-56}"
export MKL_NUM_THREADS="${SLURM_CPUS_PER_TASK:-56}"
cd "${LINPACK_DIR}"
./xlinpack_xeon64 "${LINPACK_INPUT}"
srun ./xlinpack_xeon64 "${LINPACK_INPUT}"