task1
This commit is contained in:
@@ -67,21 +67,73 @@ CUDA_ARCH=sm_70 ./scripts/build.sh
|
|||||||
|
|
||||||
### 4. Запустить стандартный Intel LINPACK
|
### 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
|
```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
|
```bash
|
||||||
sacct -j <JOBID_INTEL> --format=JobID,JobName,Partition,State,Start,End,Elapsed,NNodes,AllocTRES%40,NodeList,ExitCode
|
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
|
```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
|
||||||
```
|
```
|
||||||
|
|
||||||
## Что нужно собрать для отчёта
|
## Что нужно собрать для отчёта
|
||||||
|
|||||||
@@ -17,6 +17,7 @@ nvcc \
|
|||||||
-O3 \
|
-O3 \
|
||||||
-std=c++14 \
|
-std=c++14 \
|
||||||
-lineinfo \
|
-lineinfo \
|
||||||
|
-Wno-deprecated-gpu-targets \
|
||||||
-arch="${CUDA_ARCH}" \
|
-arch="${CUDA_ARCH}" \
|
||||||
-o bin/linpack_cuda \
|
-o bin/linpack_cuda \
|
||||||
src/main.cu
|
src/main.cu
|
||||||
|
|||||||
@@ -5,28 +5,54 @@
|
|||||||
#SBATCH --ntasks=1
|
#SBATCH --ntasks=1
|
||||||
#SBATCH --cpus-per-task=56
|
#SBATCH --cpus-per-task=56
|
||||||
#SBATCH --time=00:20:00
|
#SBATCH --time=00:20:00
|
||||||
#SBATCH --output=results/%x-%j.out
|
#SBATCH --output=stdio/%x-%j.out
|
||||||
#SBATCH --error=results/%x-%j.err
|
#SBATCH --error=stdio/%x-%j.err
|
||||||
|
|
||||||
set -euo pipefail
|
set -euo pipefail
|
||||||
|
|
||||||
cd "${SLURM_SUBMIT_DIR}"
|
|
||||||
ROOT_DIR="${SLURM_SUBMIT_DIR}"
|
|
||||||
|
|
||||||
module purge
|
module purge
|
||||||
|
|
||||||
mkdir -p results
|
LINPACK_DIR="${LINPACK_DIR:-$HOME/LINPACK}"
|
||||||
|
|
||||||
LINPACK_DIR="${LINPACK_DIR:-/linux/share/mkl/benchmarks/linpack}"
|
|
||||||
LINPACK_INPUT="${LINPACK_INPUT:-lininput_xeon64}"
|
LINPACK_INPUT="${LINPACK_INPUT:-lininput_xeon64}"
|
||||||
|
|
||||||
if [ ! -x "${LINPACK_DIR}/xlinpack_xeon64" ]; then
|
if [ ! -d "${LINPACK_DIR}" ]; then
|
||||||
echo "Intel LINPACK binary not found: ${LINPACK_DIR}/xlinpack_xeon64"
|
echo "LINPACK directory not found: ${LINPACK_DIR}"
|
||||||
echo "If the path differs on the cluster, submit with:"
|
echo "Prepare Intel LINPACK in your home directory first."
|
||||||
echo "sbatch --export=ALL,LINPACK_DIR=/path/to/linpack scripts/run_intel_linpack.slurm"
|
echo "Example:"
|
||||||
|
echo " mkdir -p \$HOME/LINPACK"
|
||||||
|
echo " tar -xzf \$HOME/linpack.tgz -C \$HOME/LINPACK"
|
||||||
exit 1
|
exit 1
|
||||||
fi
|
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 ====="
|
echo "===== account info ====="
|
||||||
whoami
|
whoami
|
||||||
hostname
|
hostname
|
||||||
@@ -51,8 +77,8 @@ fi
|
|||||||
|
|
||||||
echo
|
echo
|
||||||
echo "===== intel linpack ====="
|
echo "===== intel linpack ====="
|
||||||
|
echo "LINPACK_DIR=${LINPACK_DIR}"
|
||||||
export OMP_NUM_THREADS="${SLURM_CPUS_PER_TASK:-56}"
|
export OMP_NUM_THREADS="${SLURM_CPUS_PER_TASK:-56}"
|
||||||
export MKL_NUM_THREADS="${SLURM_CPUS_PER_TASK:-56}"
|
export MKL_NUM_THREADS="${SLURM_CPUS_PER_TASK:-56}"
|
||||||
|
|
||||||
cd "${LINPACK_DIR}"
|
srun ./xlinpack_xeon64 "${LINPACK_INPUT}"
|
||||||
./xlinpack_xeon64 "${LINPACK_INPUT}"
|
|
||||||
|
|||||||
Reference in New Issue
Block a user