Init
This commit is contained in:
commit
c394677d07
59 files changed
+5149
No files matched your search
@@ -0,0 +1,51 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
"""Автотесты лабораторной 8 (MPI).
|
||||
|
||||
Если mpi4py не установлен — тесты пропускаются (SKIPPED), но сама работа
|
||||
сдаётся с запуском через mpiexec -n 2/4 (проверяет преподаватель).
|
||||
|
||||
Тесты выполняются в режиме ОДНОГО ранга (без mpiexec): в этом режиме
|
||||
scatter/gather работают тривиально, но корректность схемы и checksum
|
||||
проверяются. Многоранговую корректность гарантирует эталон и проверка
|
||||
преподавателем через mpiexec.
|
||||
"""
|
||||
import os
|
||||
import sys
|
||||
from pathlib import Path
|
||||
|
||||
import pytest
|
||||
|
||||
ROOT = Path(__file__).resolve().parents[1]
|
||||
sys.path.insert(0, str(ROOT))
|
||||
|
||||
mpi4py = pytest.importorskip("mpi4py", reason="mpi4py не установлен")
|
||||
|
||||
from conftest import close, load_solution # noqa: E402
|
||||
from common.tasks import run_sequential, smoke_params # noqa: E402
|
||||
|
||||
LAB = "lab08_mpi"
|
||||
|
||||
|
||||
def test_variant_number_set():
|
||||
mod = load_solution(LAB)
|
||||
assert 1 <= getattr(mod, "VARIANT_NUMBER", 0) <= 20, (
|
||||
"Укажите свой VARIANT_NUMBER (1..20) в solution.py")
|
||||
|
||||
|
||||
def test_mpi_run_single_rank():
|
||||
"""Один ранг: checksum должен совпадать с последовательным запуском."""
|
||||
mod = load_solution(LAB)
|
||||
from common.tasks import get_variant
|
||||
name = get_variant(mod.VARIANT_NUMBER)["task_name"]
|
||||
sp = smoke_params(name)
|
||||
|
||||
expected, _ = run_sequential(name, sp, parts=1)
|
||||
got = mod.mpi_run(name, sp)
|
||||
assert got is not None, "mpi_run должна вернуть checksum (на любом ранге)"
|
||||
assert close(got, expected), f"checksum {got} != {expected}"
|
||||
|
||||
|
||||
def test_mpi_pi():
|
||||
mod = load_solution(LAB)
|
||||
pi = mod.mpi_pi(100_000)
|
||||
assert 3.0 < pi < 3.3, f"pi = {pi} — вне допустимого диапазона для 100k бросков"
|
||||
Reference in new issue
Block a user