From 9dd4ca38d3a0dbf99340dea75070ecd371066546 Mon Sep 17 00:00:00 2001 From: Alexander Nesterov Date: Mon, 15 Jun 2026 19:48:22 +0200 Subject: [PATCH 1/3] Add OSH process technology --- .../task_fix_submission_en.md | 4 +- .../task_fix_submission_ru.md | 4 +- .../task_submission_en.md | 4 +- .../task_submission_ru.md | 4 +- .github/workflows/codeql.yml | 3 +- .github/workflows/mac.yml | 2 +- .github/workflows/static-analysis-pr.yml | 12 + .github/workflows/ubuntu.yml | 28 +- .gitmodules | 5 + 3rdparty/openmpi | 1 + CMakeLists.txt | 8 +- README.md | 1 + cmake/functions.cmake | 7 + cmake/mpi.cmake | 197 +++++- cmake/osh.cmake | 38 ++ docs/common_information/points.rst | 10 +- docs/common_information/processes_tasks.rst | 9 + .../LC_MESSAGES/common_information/points.po | 16 +- .../common_information/processes_tasks.po | 455 +++++++------- docs/locale/en/LC_MESSAGES/user_guide/api.po | 2 +- .../locale/en/LC_MESSAGES/user_guide/build.po | 17 +- docs/locale/en/LC_MESSAGES/user_guide/ci.po | 74 +-- .../en/LC_MESSAGES/user_guide/environment.po | 80 ++- .../user_guide/environment_variables.po | 2 +- .../en/LC_MESSAGES/user_guide/submit_work.po | 86 +-- .../LC_MESSAGES/common_information/points.po | 30 +- .../common_information/processes_tasks.po | 577 ++++++++++-------- docs/locale/ru/LC_MESSAGES/user_guide/api.po | 18 +- .../locale/ru/LC_MESSAGES/user_guide/build.po | 20 +- docs/locale/ru/LC_MESSAGES/user_guide/ci.po | 95 +-- .../ru/LC_MESSAGES/user_guide/environment.po | 97 ++- .../user_guide/environment_variables.po | 32 +- .../ru/LC_MESSAGES/user_guide/submit_work.po | 96 +-- docs/user_guide/build.rst | 17 + docs/user_guide/ci.rst | 16 +- docs/user_guide/environment.rst | 38 +- docs/user_guide/submit_work.rst | 13 +- modules/CMakeLists.txt | 12 + modules/runners/src/runners.cpp | 10 + modules/task/include/task.hpp | 5 +- modules/task/tests/task_tests.cpp | 5 +- modules/util/include/func_test_util.hpp | 21 +- modules/util/include/osh_runtime.hpp | 18 + modules/util/include/perf_test_util.hpp | 21 +- modules/util/include/task_descriptor_util.hpp | 4 + modules/util/src/osh_runtime.cpp | 80 +++ modules/util/src/osh_runtime_disabled.cpp | 30 + modules/util/src/util.cpp | 4 +- scripts/check_task_backend_apis.py | 33 +- scripts/run_tests.py | 83 ++- tasks/CMakeLists.txt | 9 +- tasks/common/runners/performance.cpp | 10 + tasks/example/processes/report.md | 2 +- .../processes/t1/osh/include/ops_osh.hpp | 19 + tasks/example/processes/t1/osh/report.md | 3 + .../example/processes/t1/osh/src/ops_osh.cpp | 69 +++ tasks/example/processes/t1/report.md | 1 + .../processes/t1/tests/functional/osh.cpp | 86 +++ .../processes/t1/tests/performance/osh.cpp | 41 ++ tasks/example/settings.json | 1 + 60 files changed, 1886 insertions(+), 799 deletions(-) create mode 160000 3rdparty/openmpi create mode 100644 cmake/osh.cmake create mode 100644 modules/util/include/osh_runtime.hpp create mode 100644 modules/util/src/osh_runtime.cpp create mode 100644 modules/util/src/osh_runtime_disabled.cpp create mode 100644 tasks/example/processes/t1/osh/include/ops_osh.hpp create mode 100644 tasks/example/processes/t1/osh/report.md create mode 100644 tasks/example/processes/t1/osh/src/ops_osh.cpp create mode 100644 tasks/example/processes/t1/tests/functional/osh.cpp create mode 100644 tasks/example/processes/t1/tests/performance/osh.cpp diff --git a/.github/PULL_REQUEST_TEMPLATE/task_fix_submission_en.md b/.github/PULL_REQUEST_TEMPLATE/task_fix_submission_en.md index 4b6a66480..5762f3695 100644 --- a/.github/PULL_REQUEST_TEMPLATE/task_fix_submission_en.md +++ b/.github/PULL_REQUEST_TEMPLATE/task_fix_submission_en.md @@ -1,7 +1,7 @@ ## Description @@ -15,7 +15,7 @@ Please provide: - **Task**: _Enter the full task name here_ - **Variant**: _Enter the variant number here_ -- **Technology**: _Enter technology (e.g., SEQ, OMP, TBB, STL, MPI)_ +- **Technology**: _Enter technology (e.g., SEQ, OMP, TBB, STL, MPI, OSH)_ - **Student directory**: _Enter the directory name (e.g., `nesterov_a_vector_sum`)_ - **Original PR / commit / issue link**: _Paste link(s) here_ - **Original task definition**: _Paste the full task statement here_ diff --git a/.github/PULL_REQUEST_TEMPLATE/task_fix_submission_ru.md b/.github/PULL_REQUEST_TEMPLATE/task_fix_submission_ru.md index 444159141..dc768a66a 100644 --- a/.github/PULL_REQUEST_TEMPLATE/task_fix_submission_ru.md +++ b/.github/PULL_REQUEST_TEMPLATE/task_fix_submission_ru.md @@ -1,7 +1,7 @@ @@ -16,7 +16,7 @@ - **Задача**: _Введите здесь полное название задачи_ - **Вариант**: _Введите здесь номер варианта_ -- **Технология**: _Введите технологию (например, SEQ, OMP, TBB, STL, MPI)_ +- **Технология**: _Введите технологию (например, SEQ, OMP, TBB, STL, MPI, OSH)_ - **Директория студента**: _Введите имя директории (например, `nesterov_a_vector_sum`)_ - **Ссылка на исходный PR / коммит / issue**: _Вставьте ссылку(и)_ - **Полное описание исходной задачи**: _Вставьте полный текст условия_ diff --git a/.github/PULL_REQUEST_TEMPLATE/task_submission_en.md b/.github/PULL_REQUEST_TEMPLATE/task_submission_en.md index 1db6cdad7..9e41d4697 100644 --- a/.github/PULL_REQUEST_TEMPLATE/task_submission_en.md +++ b/.github/PULL_REQUEST_TEMPLATE/task_submission_en.md @@ -1,7 +1,7 @@ ## Description @@ -13,7 +13,7 @@ Please provide a detailed description of your implementation, including: - **Task**: _Enter the full task name here_ - **Variant**: _Enter the variant number here_ -- **Technology**: _Enter technology (e.g., SEQ, OMP, TBB, STL, MPI)_ +- **Technology**: _Enter technology (e.g., SEQ, OMP, TBB, STL, MPI, OSH)_ - **Description** of your implementation and report. _Provide a concise summary of your implementation and report here._ diff --git a/.github/PULL_REQUEST_TEMPLATE/task_submission_ru.md b/.github/PULL_REQUEST_TEMPLATE/task_submission_ru.md index c4487b9c2..7fed9dda5 100644 --- a/.github/PULL_REQUEST_TEMPLATE/task_submission_ru.md +++ b/.github/PULL_REQUEST_TEMPLATE/task_submission_ru.md @@ -1,7 +1,7 @@ ## Описание @@ -13,7 +13,7 @@ - **Задача**: _Введите здесь полное название задачи_ - **Вариант**: _Введите здесь номер варианта_ -- **Технология**: _Введите технологию (например, SEQ, OMP, TBB, STL, MPI)_ +- **Технология**: _Введите технологию (например, SEQ, OMP, TBB, STL, MPI, OSH)_ - **Описание** вашей реализации и отчёта. _Кратко опишите вашу реализацию и содержание отчёта здесь._ diff --git a/.github/workflows/codeql.yml b/.github/workflows/codeql.yml index 6f15a033b..761788440 100644 --- a/.github/workflows/codeql.yml +++ b/.github/workflows/codeql.yml @@ -30,7 +30,8 @@ jobs: - name: Setup environment run: | sudo apt-get update - sudo apt-get install -y gcc-15 g++-15 ninja-build mpich libomp-dev valgrind + sudo apt-get install -y gcc-15 g++-15 ninja-build mpich libomp-dev valgrind \ + autoconf automake flex libtool libucx-dev make perl pkg-config zlib1g-dev python3 -m pip install -r requirements.txt - name: ccache uses: hendrikmuhs/ccache-action@v1.2 diff --git a/.github/workflows/mac.yml b/.github/workflows/mac.yml index 8b330f92b..8b7c95d7a 100644 --- a/.github/workflows/mac.yml +++ b/.github/workflows/mac.yml @@ -63,7 +63,7 @@ jobs: with: path: install name: macos-clang-install - - name: Run func tests (MPI) + - name: Run func tests (MPI/OSH) run: scripts/run_tests.py --running-type="processes" --counts 1 2 3 4 env: PPC_NUM_THREADS: 1 diff --git a/.github/workflows/static-analysis-pr.yml b/.github/workflows/static-analysis-pr.yml index fa40d6623..85385638f 100644 --- a/.github/workflows/static-analysis-pr.yml +++ b/.github/workflows/static-analysis-pr.yml @@ -66,6 +66,12 @@ jobs: create-symlink: true max-size: 1G + - name: Install Open MPI source build dependencies + run: > + apt-get update && + apt-get install -y --no-install-recommends + autoconf automake flex libtool libucx-dev make perl pkg-config zlib1g-dev + - name: CMake configure run: > cmake -S . -B build -G Ninja @@ -117,6 +123,12 @@ jobs: create-symlink: true max-size: 1G + - name: Install Open MPI source build dependencies + run: > + apt-get update && + apt-get install -y --no-install-recommends + autoconf automake flex libtool libucx-dev make perl pkg-config zlib1g-dev + - name: CMake configure run: > cmake -S . -B build -G Ninja diff --git a/.github/workflows/ubuntu.yml b/.github/workflows/ubuntu.yml index 34a25dee1..2d2200b2d 100644 --- a/.github/workflows/ubuntu.yml +++ b/.github/workflows/ubuntu.yml @@ -35,6 +35,11 @@ jobs: key: ${{ runner.os }}-gcc create-symlink: true max-size: 1G + - name: Install Open MPI source build dependencies + run: > + apt-get update && + apt-get install -y --no-install-recommends + autoconf automake flex libtool libucx-dev make perl pkg-config zlib1g-dev - name: CMake configure run: > cmake -S . -B build -G Ninja @@ -86,7 +91,7 @@ jobs: with: path: install name: ubuntu-gcc-install-${{ matrix.os }} - - name: Run func tests (MPI) + - name: Run func tests (MPI/OSH) run: scripts/run_tests.py --running-type="processes" --counts 1 2 3 4 --additional-mpi-args="--oversubscribe" env: PPC_NUM_THREADS: 1 @@ -139,6 +144,11 @@ jobs: key: ${{ runner.os }}-clang create-symlink: true max-size: 1G + - name: Install Open MPI source build dependencies + run: > + apt-get update && + apt-get install -y --no-install-recommends + autoconf automake flex libtool libucx-dev make perl pkg-config zlib1g-dev - name: CMake configure run: > cmake -S . -B build -G Ninja @@ -182,7 +192,7 @@ jobs: with: path: install name: ubuntu-clang-install-${{ matrix.os }} - - name: Run func tests (MPI) + - name: Run func tests (MPI/OSH) run: scripts/run_tests.py --running-type="processes" --counts 1 2 3 4 --additional-mpi-args="--oversubscribe" env: PPC_NUM_THREADS: 1 @@ -237,6 +247,11 @@ jobs: key: ${{ runner.os }}-clang create-symlink: true max-size: 1G + - name: Install Open MPI source build dependencies + run: > + apt-get update && + apt-get install -y --no-install-recommends + autoconf automake flex libtool libucx-dev make perl pkg-config zlib1g-dev - name: CMake configure run: > cmake -S . -B build -G Ninja @@ -282,7 +297,7 @@ jobs: with: path: install name: ubuntu-clang-sanitizer-install-${{ matrix.os }} - - name: Run tests (MPI) + - name: Run tests (MPI/OSH) run: scripts/run_tests.py --running-type="processes" --counts 2 --additional-mpi-args="--oversubscribe" env: PPC_NUM_THREADS: 2 @@ -347,6 +362,11 @@ jobs: key: ${{ runner.os }}-gcc create-symlink: true max-size: 1G + - name: Install Open MPI source build dependencies + run: > + apt-get update && + apt-get install -y --no-install-recommends + autoconf automake flex libtool libucx-dev make perl pkg-config zlib1g-dev - name: CMake configure run: > cmake -S . -B build -G Ninja @@ -360,7 +380,7 @@ jobs: - name: Install project run: | cmake --build build --target install -- --quiet - - name: Run tests (MPI) + - name: Run tests (MPI/OSH) run: scripts/run_tests.py --running-type="processes" --additional-mpi-args="--oversubscribe" env: PPC_NUM_PROC: 2 diff --git a/.gitmodules b/.gitmodules index 601a9e307..1e354245c 100644 --- a/.gitmodules +++ b/.gitmodules @@ -16,3 +16,8 @@ [submodule "3rdparty/benchmark"] path = 3rdparty/benchmark url = https://github.com/google/benchmark +[submodule "3rdparty/openmpi"] + path = 3rdparty/openmpi + url = https://github.com/open-mpi/ompi + branch = v5.0.7 + shallow = true diff --git a/3rdparty/openmpi b/3rdparty/openmpi new file mode 160000 index 000000000..29341e55e --- /dev/null +++ b/3rdparty/openmpi @@ -0,0 +1 @@ +Subproject commit 29341e55efaabf7a6968444b4bb6f1f1fb40d664 diff --git a/CMakeLists.txt b/CMakeLists.txt index 83e02781b..4642c5107 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -38,7 +38,13 @@ if(PPC_BUILD_COMPONENTS) # ################ Parallel programming technologies ################# message(STATUS "PPC step: Setup parallel programming technologies") - foreach(dep mpi openmp onetbb) + set(PPC_PARALLEL_TECHNOLOGIES mpi openmp onetbb) + set(ppc_osh_supported OFF) + if(CMAKE_SYSTEM_NAME STREQUAL "Linux") + set(ppc_osh_supported ON) + list(APPEND PPC_PARALLEL_TECHNOLOGIES osh) + endif() + foreach(dep ${PPC_PARALLEL_TECHNOLOGIES}) include(cmake/${dep}.cmake) endforeach() diff --git a/README.md b/README.md index 3ada42e8b..e454fc433 100644 --- a/README.md +++ b/README.md @@ -23,6 +23,7 @@ Resources: The following parallel programming technologies are considered in practice: - [Message Passing Interface (MPI)](https://www.mpi-forum.org/) +- [OSH](https://www.openshmem.org/) — PGAS / one-sided communication model for distributed-memory systems. - [OpenMP (Open Multi-Processing)](https://www.openmp.org/) - [oneAPI Threading Building Blocks (oneTBB)](https://github.com/oneapi-src/oneTBB) - [Multithreading in C++ (`std::thread`)](https://en.cppreference.com/w/cpp/thread/thread) diff --git a/cmake/functions.cmake b/cmake/functions.cmake index 4a89f3672..5e3e9feac 100644 --- a/cmake/functions.cmake +++ b/cmake/functions.cmake @@ -16,6 +16,9 @@ function(add_tests test_flag exec_target subdir) # Gather all source files under tests/ file(GLOB_RECURSE src_files "${TEST_DIR}/${subdir}/*.cpp" "${TEST_DIR}/${subdir}/*.cxx" "${TEST_DIR}/${subdir}/*.cc") + if(NOT ppc_osh_supported) + list(FILTER src_files EXCLUDE REGEX "(/|\\\\)osh\\.(cpp|cxx|cc)$") + endif() target_sources(${exec_target} PRIVATE ${src_files}) list(APPEND TEST_EXECUTABLES ${exec_target}) set(TEST_EXECUTABLES @@ -34,6 +37,10 @@ function(setup_implementation) cmake_parse_arguments(SETUP "" # no plain options "NAME;PROJ_NAME;BASE_DIR" "TESTS" ${ARGN}) + if(SETUP_NAME STREQUAL "osh" AND NOT ppc_osh_supported) + return() + endif() + # skip if impl dir doesn't exist set(IMP_DIR "${SETUP_BASE_DIR}/${SETUP_NAME}") if(NOT EXISTS "${IMP_DIR}") diff --git a/cmake/mpi.cmake b/cmake/mpi.cmake index 498b5450d..6d532a9ec 100644 --- a/cmake/mpi.cmake +++ b/cmake/mpi.cmake @@ -1,8 +1,199 @@ include_guard() -find_package(MPI REQUIRED COMPONENTS CXX) -if(NOT MPI_FOUND) - message(FATAL_ERROR "MPI NOT FOUND") +if(CMAKE_SYSTEM_NAME STREQUAL "Linux") + function(ppc_configure_openmpi) + if(TARGET MPI::MPI_CXX) + return() + endif() + + set(openmpi_source_dir "${CMAKE_SOURCE_DIR}/3rdparty/openmpi") + if(NOT EXISTS "${openmpi_source_dir}/autogen.pl") + message( + FATAL_ERROR + "Open MPI source backend is missing. Initialize submodules with: git submodule update --init --recursive" + ) + endif() + + find_program(openmpi_bash bash REQUIRED) + find_program(openmpi_make NAMES gmake make REQUIRED) + find_program(openmpi_perl perl REQUIRED) + find_program(openmpi_flex flex REQUIRED) + find_program(openmpi_autoconf autoconf REQUIRED) + find_program(openmpi_automake automake REQUIRED) + find_program(openmpi_libtoolize NAMES glibtoolize libtoolize REQUIRED) + find_program(openmpi_ccache ccache) + + set(openmpi_prefix "${CMAKE_BINARY_DIR}/ppc_openmpi") + set(openmpi_install_dir "${openmpi_prefix}/install") + set(openmpi_build_source_dir "${openmpi_prefix}/source") + set(openmpi_library + "${openmpi_install_dir}/lib/${CMAKE_SHARED_LIBRARY_PREFIX}mpi${CMAKE_SHARED_LIBRARY_SUFFIX}" + ) + set(oshmem_library + "${openmpi_install_dir}/lib/${CMAKE_SHARED_LIBRARY_PREFIX}oshmem${CMAKE_SHARED_LIBRARY_SUFFIX}" + ) + set(openmpi_byproducts "${openmpi_library}" "${oshmem_library}") + + set(openmpi_c_compiler "${CMAKE_C_COMPILER}") + set(openmpi_cxx_compiler "${CMAKE_CXX_COMPILER}") + set(openmpi_c_flags "${CMAKE_C_FLAGS} -Wno-int-conversion") + string(STRIP "${openmpi_c_flags}" openmpi_c_flags) + set(openmpi_ccache_env) + if(openmpi_ccache) + set(openmpi_c_compiler "${openmpi_ccache} ${CMAKE_C_COMPILER}") + set(openmpi_cxx_compiler "${openmpi_ccache} ${CMAKE_CXX_COMPILER}") + list(APPEND openmpi_ccache_env "CCACHE_BASEDIR=${CMAKE_SOURCE_DIR}" + "CCACHE_NOHASHDIR=1") + endif() + + set(openmpi_transport_flags + --without-alps + --without-lsf + --without-ofi + --without-pbs + --without-portals4 + --without-psm2 + --without-sge + --without-slurm + --without-tm + --with-ucx) + + set(openmpi_disabled_components + accelerator-cuda + accelerator-rocm + btl-ofi + btl-portals4 + btl-smcuda + btl-template + btl-uct + btl-ugni + btl-usnic + coll-adapt + coll-cuda + coll-demo + coll-ftagree + coll-han + coll-hcoll + coll-inter + coll-monitoring + coll-portals4 + coll-sm + coll-sync + coll-ucc + common-ofi + fbtl-ime + fbtl-pvfs2 + fcoll-dynamic + fcoll-dynamic_gen2 + fcoll-vulcan + fs-gpfs + fs-ime + fs-lustre + fs-pvfs2 + hook-comm_method + hook-demo + memchecker-valgrind + mpool-hugepage + mpool-memkind + mtl-ofi + mtl-portals4 + mtl-psm2 + osc-monitoring + osc-portals4 + osc-ucx + pml-cm + pml-monitoring + pml-ucx + pml-v + rcache-gpusm + rcache-grdma + rcache-rgpusm + rcache-udreg + sharedfp-individual + sharedfp-lockedfile + sharedfp-sm + smsc-cma + smsc-knem + smsc-xpmem + topo-example + topo-treematch + vprotocol-example + vprotocol-pessimist) + list(JOIN openmpi_disabled_components "," openmpi_disabled_components_arg) + + set(openmpi_configure_options + "--prefix='${openmpi_install_dir}'" + --enable-oshmem + --disable-io-romio + --disable-mpi-fortran + --disable-mpi-java + --disable-oshmem-fortran + --disable-oshmem-profile + --disable-picky + --disable-static + --enable-mpi-ext= + --enable-shared + --with-hwloc=internal + --with-libevent=internal + --with-pmix=internal + --with-prrte=internal + --without-tests-examples + "--enable-mca-no-build=${openmpi_disabled_components_arg}" + ${openmpi_transport_flags}) + list(JOIN openmpi_configure_options " " openmpi_configure_options_arg) + + set_property(GLOBAL PROPERTY ppc_openmpi_install_dir + "${openmpi_install_dir}") + set_property(GLOBAL PROPERTY ppc_openmpi_oshmem_library "${oshmem_library}") + + file(MAKE_DIRECTORY "${openmpi_install_dir}/include" + "${openmpi_install_dir}/lib") + + include(ProcessorCount) + include(ExternalProject) + ProcessorCount(openmpi_parallel_jobs) + if(openmpi_parallel_jobs EQUAL 0) + set(openmpi_parallel_jobs 2) + endif() + ExternalProject_Add( + ppc_openmpi + PREFIX "${openmpi_prefix}" + SOURCE_DIR "${openmpi_build_source_dir}" + DOWNLOAD_COMMAND "${CMAKE_COMMAND}" -E rm -rf + "${openmpi_build_source_dir}" + COMMAND "${CMAKE_COMMAND}" -E copy_directory "${openmpi_source_dir}" + "${openmpi_build_source_dir}" + CONFIGURE_COMMAND + "${CMAKE_COMMAND}" -E env "CC=${openmpi_c_compiler}" + "CXX=${openmpi_cxx_compiler}" "CFLAGS=${openmpi_c_flags}" + ${openmpi_ccache_env} "${openmpi_bash}" -lc + "cd '${openmpi_build_source_dir}' && '${openmpi_perl}' ./autogen.pl --force && ./configure ${openmpi_configure_options_arg}" + BUILD_COMMAND + "${CMAKE_COMMAND}" -E env ${openmpi_ccache_env} "${openmpi_make}" -C + "${openmpi_build_source_dir}" "-j${openmpi_parallel_jobs}" + INSTALL_COMMAND "${openmpi_make}" -C "${openmpi_build_source_dir}" install + BUILD_BYPRODUCTS ${openmpi_byproducts} ${PPC_EXTERNAL_PROJECT_LOG_ARGS}) + + set(openmpi_link_options "-Wl,-rpath,${openmpi_install_dir}/lib" + "-Wl,-rpath,\\$ORIGIN/../lib") + + add_library(MPI::MPI_CXX SHARED IMPORTED GLOBAL) + add_dependencies(MPI::MPI_CXX ppc_openmpi) + set_target_properties( + MPI::MPI_CXX + PROPERTIES IMPORTED_LOCATION "${openmpi_library}" + INTERFACE_INCLUDE_DIRECTORIES "${openmpi_install_dir}/include" + INTERFACE_LINK_OPTIONS "${openmpi_link_options}") + + install(DIRECTORY "${openmpi_install_dir}/" DESTINATION ".") + endfunction() + + ppc_configure_openmpi() +else() + find_package(MPI REQUIRED COMPONENTS C CXX) + if(NOT MPI_FOUND) + message(FATAL_ERROR "MPI NOT FOUND") + endif() endif() function(ppc_link_mpi exec_func_lib) diff --git a/cmake/osh.cmake b/cmake/osh.cmake new file mode 100644 index 000000000..965c11a38 --- /dev/null +++ b/cmake/osh.cmake @@ -0,0 +1,38 @@ +include_guard() + +set(osh_target OSH::OSH) + +function(ppc_configure_osh) + if(TARGET ${osh_target}) + return() + endif() + + if(NOT ppc_osh_supported) + return() + endif() + + ppc_configure_openmpi() + get_property(openmpi_install_dir GLOBAL PROPERTY ppc_openmpi_install_dir) + get_property(oshmem_library GLOBAL PROPERTY ppc_openmpi_oshmem_library) + + add_library(${osh_target} SHARED IMPORTED GLOBAL) + add_dependencies(${osh_target} ppc_openmpi) + set_target_properties( + ${osh_target} + PROPERTIES IMPORTED_LOCATION "${oshmem_library}" + INTERFACE_INCLUDE_DIRECTORIES "${openmpi_install_dir}/include") + target_link_libraries(${osh_target} INTERFACE MPI::MPI_CXX) +endfunction() + +function(ppc_link_osh target) + if(NOT ppc_osh_supported) + return() + endif() + + ppc_configure_osh() + if(NOT TARGET ${osh_target}) + message(FATAL_ERROR "OSH backend target was not configured.") + endif() + + target_link_libraries(${target} PUBLIC ${osh_target}) +endfunction() diff --git a/docs/common_information/points.rst b/docs/common_information/points.rst index 3c208a283..c77869fba 100644 --- a/docs/common_information/points.rst +++ b/docs/common_information/points.rst @@ -7,21 +7,21 @@ Overview - Total per semester (Practice): 70 points - Report points are distributed per task and sum to 10 -Processes semester (MPI) ------------------------- +Processes semester (MPI / OSH) +------------------------------------ - Task 1 — Total: 12 - - Implementation: MPI 8 + Seq 2 + - Implementation: MPI or OSH 8 + Seq 2 - Performance: 0 - Report: 2 - Task 2 — Total: 23 - - Implementation: MPI 12 + Seq 3 + - Implementation: MPI or OSH 12 + Seq 3 - Performance: 5 - Report: 3 - Task 3 — Total: 35 - - Implementation: MPI 16 + Seq 4 + - Implementation: MPI or OSH 16 + Seq 4 - Performance: 10 - Report: 5 diff --git a/docs/common_information/processes_tasks.rst b/docs/common_information/processes_tasks.rst index f3e20965a..7cec6ab01 100644 --- a/docs/common_information/processes_tasks.rst +++ b/docs/common_information/processes_tasks.rst @@ -1,6 +1,15 @@ Processes parallelism tasks =========================== +Distributed-memory technologies +------------------------------- + +The processes semester targets distributed-memory programming. MPI remains the +baseline message-passing technology, and OSH is available on Linux as a PGAS / +one-sided communication alternative for process tasks. Keep OSH +implementations under ``osh`` task backend directories; do not move them to +the threads semester. + First task ---------- diff --git a/docs/locale/en/LC_MESSAGES/common_information/points.po b/docs/locale/en/LC_MESSAGES/common_information/points.po index 6342c7b09..e4fd8670a 100644 --- a/docs/locale/en/LC_MESSAGES/common_information/points.po +++ b/docs/locale/en/LC_MESSAGES/common_information/points.po @@ -20,7 +20,7 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.17.0\n" +"Generated-By: Babel 2.18.0\n" #: ../../../../docs/common_information/points.rst:2 msgid "Points" @@ -39,25 +39,25 @@ msgid "Report points are distributed per task and sum to 10" msgstr "" #: ../../../../docs/common_information/points.rst:11 -msgid "Processes semester (MPI)" +msgid "Processes semester (MPI / OSH)" msgstr "" #: ../../../../docs/common_information/points.rst:13 msgid "" -"Task 1 — Total: 12 - Implementation: MPI 8 + Seq 2 - Performance: 0 - " -"Report: 2" +"Task 1 — Total: 12 - Implementation: MPI or OSH 8 + Seq 2 - Performance: " +"0 - Report: 2" msgstr "" #: ../../../../docs/common_information/points.rst:18 msgid "" -"Task 2 — Total: 23 - Implementation: MPI 12 + Seq 3 - Performance: 5 - " -"Report: 3" +"Task 2 — Total: 23 - Implementation: MPI or OSH 12 + Seq 3 - Performance:" +" 5 - Report: 3" msgstr "" #: ../../../../docs/common_information/points.rst:23 msgid "" -"Task 3 — Total: 35 - Implementation: MPI 16 + Seq 4 - Performance: 10 - " -"Report: 5" +"Task 3 — Total: 35 - Implementation: MPI or OSH 16 + Seq 4 - Performance:" +" 10 - Report: 5" msgstr "" #: ../../../../docs/common_information/points.rst:28 diff --git a/docs/locale/en/LC_MESSAGES/common_information/processes_tasks.po b/docs/locale/en/LC_MESSAGES/common_information/processes_tasks.po index 545b25acb..be9b46f41 100644 --- a/docs/locale/en/LC_MESSAGES/common_information/processes_tasks.po +++ b/docs/locale/en/LC_MESSAGES/common_information/processes_tasks.po @@ -2,7 +2,8 @@ # Copyright (C) 2025, Learning Process # This file is distributed under the same license as the Parallel # Programming Course package. -# Learning Process Team , 2025. +# Learning Process Team , 2025. # #, fuzzy msgid "" @@ -13,592 +14,606 @@ msgstr "" "PO-Revision-Date: 2025-07-27 18:21+0200\n" "Last-Translator: Learning Process Team \n" "Language: en\n" -"Language-Team: Learning Process Team (gooddoog@student.su, nesterov.alexander@outlook.com)\n" +"Language-Team: Learning Process Team (gooddoog@student.su, " +"nesterov.alexander@outlook.com)\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.17.0\n" +"Generated-By: Babel 2.18.0\n" -#: ../../common_information/processes_tasks.rst:2 +#: ../../../../docs/common_information/processes_tasks.rst:2 msgid "Processes parallelism tasks" msgstr "" -#: ../../common_information/processes_tasks.rst:5 +#: ../../../../docs/common_information/processes_tasks.rst:5 +msgid "Distributed-memory technologies" +msgstr "" + +#: ../../../../docs/common_information/processes_tasks.rst:7 +msgid "" +"The processes semester targets distributed-memory programming. MPI " +"remains the baseline message-passing technology, and OSH is available on " +"Linux as a PGAS / one-sided communication alternative for process tasks. " +"Keep OSH implementations under ``osh`` task backend directories; do not " +"move them to the threads semester." +msgstr "" + +#: ../../../../docs/common_information/processes_tasks.rst:14 msgid "First task" msgstr "" -#: ../../common_information/processes_tasks.rst:8 -#: ../../common_information/processes_tasks.rst:69 -#: ../../common_information/processes_tasks.rst:122 +#: ../../../../docs/common_information/processes_tasks.rst:17 +#: ../../../../docs/common_information/processes_tasks.rst:78 +#: ../../../../docs/common_information/processes_tasks.rst:131 msgid "Variant Number" msgstr "" -#: ../../common_information/processes_tasks.rst:8 -#: ../../common_information/processes_tasks.rst:69 -#: ../../common_information/processes_tasks.rst:122 +#: ../../../../docs/common_information/processes_tasks.rst:17 +#: ../../../../docs/common_information/processes_tasks.rst:78 +#: ../../../../docs/common_information/processes_tasks.rst:131 msgid "Task" msgstr "" -#: ../../common_information/processes_tasks.rst:10 -#: ../../common_information/processes_tasks.rst:71 -#: ../../common_information/processes_tasks.rst:124 +#: ../../../../docs/common_information/processes_tasks.rst:19 +#: ../../../../docs/common_information/processes_tasks.rst:80 +#: ../../../../docs/common_information/processes_tasks.rst:133 msgid "1" msgstr "" -#: ../../common_information/processes_tasks.rst:10 +#: ../../../../docs/common_information/processes_tasks.rst:19 msgid "Sum of vector elements" msgstr "" -#: ../../common_information/processes_tasks.rst:12 -#: ../../common_information/processes_tasks.rst:73 -#: ../../common_information/processes_tasks.rst:126 +#: ../../../../docs/common_information/processes_tasks.rst:21 +#: ../../../../docs/common_information/processes_tasks.rst:82 +#: ../../../../docs/common_information/processes_tasks.rst:135 msgid "2" msgstr "" -#: ../../common_information/processes_tasks.rst:12 +#: ../../../../docs/common_information/processes_tasks.rst:21 msgid "Calculating the average value of vector elements" msgstr "" -#: ../../common_information/processes_tasks.rst:14 -#: ../../common_information/processes_tasks.rst:75 -#: ../../common_information/processes_tasks.rst:128 +#: ../../../../docs/common_information/processes_tasks.rst:23 +#: ../../../../docs/common_information/processes_tasks.rst:84 +#: ../../../../docs/common_information/processes_tasks.rst:137 msgid "3" msgstr "" -#: ../../common_information/processes_tasks.rst:14 +#: ../../../../docs/common_information/processes_tasks.rst:23 msgid "Maximum value of vector elements" msgstr "" -#: ../../common_information/processes_tasks.rst:16 -#: ../../common_information/processes_tasks.rst:77 -#: ../../common_information/processes_tasks.rst:130 +#: ../../../../docs/common_information/processes_tasks.rst:25 +#: ../../../../docs/common_information/processes_tasks.rst:86 +#: ../../../../docs/common_information/processes_tasks.rst:139 msgid "4" msgstr "" -#: ../../common_information/processes_tasks.rst:16 +#: ../../../../docs/common_information/processes_tasks.rst:25 msgid "Minimum value of vector elements" msgstr "" -#: ../../common_information/processes_tasks.rst:18 -#: ../../common_information/processes_tasks.rst:79 -#: ../../common_information/processes_tasks.rst:132 +#: ../../../../docs/common_information/processes_tasks.rst:27 +#: ../../../../docs/common_information/processes_tasks.rst:88 +#: ../../../../docs/common_information/processes_tasks.rst:141 msgid "5" msgstr "" -#: ../../common_information/processes_tasks.rst:18 +#: ../../../../docs/common_information/processes_tasks.rst:27 msgid "" "Finding the number of sign alternations between adjacent elements of the " "vector" msgstr "" -#: ../../common_information/processes_tasks.rst:20 -#: ../../common_information/processes_tasks.rst:81 -#: ../../common_information/processes_tasks.rst:134 -#: ../../common_information/processes_tasks.rst:258 +#: ../../../../docs/common_information/processes_tasks.rst:29 +#: ../../../../docs/common_information/processes_tasks.rst:90 +#: ../../../../docs/common_information/processes_tasks.rst:143 +#: ../../../../docs/common_information/processes_tasks.rst:267 msgid "6" msgstr "" -#: ../../common_information/processes_tasks.rst:20 +#: ../../../../docs/common_information/processes_tasks.rst:29 msgid "" "Finding the number of order violations between adjacent elements of the " "vector" msgstr "" -#: ../../common_information/processes_tasks.rst:22 -#: ../../common_information/processes_tasks.rst:83 -#: ../../common_information/processes_tasks.rst:136 +#: ../../../../docs/common_information/processes_tasks.rst:31 +#: ../../../../docs/common_information/processes_tasks.rst:92 +#: ../../../../docs/common_information/processes_tasks.rst:145 msgid "7" msgstr "" -#: ../../common_information/processes_tasks.rst:22 +#: ../../../../docs/common_information/processes_tasks.rst:31 msgid "Finding the most similar adjacent elements of the vector" msgstr "" -#: ../../common_information/processes_tasks.rst:24 -#: ../../common_information/processes_tasks.rst:85 -#: ../../common_information/processes_tasks.rst:138 +#: ../../../../docs/common_information/processes_tasks.rst:33 +#: ../../../../docs/common_information/processes_tasks.rst:94 +#: ../../../../docs/common_information/processes_tasks.rst:147 msgid "8" msgstr "" -#: ../../common_information/processes_tasks.rst:24 +#: ../../../../docs/common_information/processes_tasks.rst:33 msgid "Finding the most different adjacent elements of the vector" msgstr "" -#: ../../common_information/processes_tasks.rst:26 -#: ../../common_information/processes_tasks.rst:87 -#: ../../common_information/processes_tasks.rst:140 +#: ../../../../docs/common_information/processes_tasks.rst:35 +#: ../../../../docs/common_information/processes_tasks.rst:96 +#: ../../../../docs/common_information/processes_tasks.rst:149 msgid "9" msgstr "" -#: ../../common_information/processes_tasks.rst:26 +#: ../../../../docs/common_information/processes_tasks.rst:35 msgid "Scalar product of vectors" msgstr "" -#: ../../common_information/processes_tasks.rst:28 -#: ../../common_information/processes_tasks.rst:89 -#: ../../common_information/processes_tasks.rst:142 +#: ../../../../docs/common_information/processes_tasks.rst:37 +#: ../../../../docs/common_information/processes_tasks.rst:98 +#: ../../../../docs/common_information/processes_tasks.rst:151 msgid "10" msgstr "" -#: ../../common_information/processes_tasks.rst:28 +#: ../../../../docs/common_information/processes_tasks.rst:37 msgid "Sum of matrix elements" msgstr "" -#: ../../common_information/processes_tasks.rst:30 -#: ../../common_information/processes_tasks.rst:91 -#: ../../common_information/processes_tasks.rst:144 +#: ../../../../docs/common_information/processes_tasks.rst:39 +#: ../../../../docs/common_information/processes_tasks.rst:100 +#: ../../../../docs/common_information/processes_tasks.rst:153 msgid "11" msgstr "" -#: ../../common_information/processes_tasks.rst:30 +#: ../../../../docs/common_information/processes_tasks.rst:39 msgid "Sum of values by rows in the matrix" msgstr "" -#: ../../common_information/processes_tasks.rst:32 -#: ../../common_information/processes_tasks.rst:93 -#: ../../common_information/processes_tasks.rst:147 +#: ../../../../docs/common_information/processes_tasks.rst:41 +#: ../../../../docs/common_information/processes_tasks.rst:102 +#: ../../../../docs/common_information/processes_tasks.rst:156 msgid "12" msgstr "" -#: ../../common_information/processes_tasks.rst:32 +#: ../../../../docs/common_information/processes_tasks.rst:41 msgid "Sum of values by columns in the matrix" msgstr "" -#: ../../common_information/processes_tasks.rst:34 -#: ../../common_information/processes_tasks.rst:95 -#: ../../common_information/processes_tasks.rst:150 +#: ../../../../docs/common_information/processes_tasks.rst:43 +#: ../../../../docs/common_information/processes_tasks.rst:104 +#: ../../../../docs/common_information/processes_tasks.rst:159 msgid "13" msgstr "" -#: ../../common_information/processes_tasks.rst:34 +#: ../../../../docs/common_information/processes_tasks.rst:43 msgid "Maximum value of matrix elements" msgstr "" -#: ../../common_information/processes_tasks.rst:36 -#: ../../common_information/processes_tasks.rst:97 -#: ../../common_information/processes_tasks.rst:153 +#: ../../../../docs/common_information/processes_tasks.rst:45 +#: ../../../../docs/common_information/processes_tasks.rst:106 +#: ../../../../docs/common_information/processes_tasks.rst:162 msgid "14" msgstr "" -#: ../../common_information/processes_tasks.rst:36 +#: ../../../../docs/common_information/processes_tasks.rst:45 msgid "Minimum value of matrix elements" msgstr "" -#: ../../common_information/processes_tasks.rst:38 -#: ../../common_information/processes_tasks.rst:99 -#: ../../common_information/processes_tasks.rst:155 +#: ../../../../docs/common_information/processes_tasks.rst:47 +#: ../../../../docs/common_information/processes_tasks.rst:108 +#: ../../../../docs/common_information/processes_tasks.rst:164 msgid "15" msgstr "" -#: ../../common_information/processes_tasks.rst:38 +#: ../../../../docs/common_information/processes_tasks.rst:47 msgid "Finding maximum values by rows in the matrix" msgstr "" -#: ../../common_information/processes_tasks.rst:40 -#: ../../common_information/processes_tasks.rst:101 -#: ../../common_information/processes_tasks.rst:157 +#: ../../../../docs/common_information/processes_tasks.rst:49 +#: ../../../../docs/common_information/processes_tasks.rst:110 +#: ../../../../docs/common_information/processes_tasks.rst:166 msgid "16" msgstr "" -#: ../../common_information/processes_tasks.rst:40 +#: ../../../../docs/common_information/processes_tasks.rst:49 msgid "Finding maximum values by columns in the matrix" msgstr "" -#: ../../common_information/processes_tasks.rst:42 -#: ../../common_information/processes_tasks.rst:103 -#: ../../common_information/processes_tasks.rst:159 +#: ../../../../docs/common_information/processes_tasks.rst:51 +#: ../../../../docs/common_information/processes_tasks.rst:112 +#: ../../../../docs/common_information/processes_tasks.rst:168 msgid "17" msgstr "" -#: ../../common_information/processes_tasks.rst:42 +#: ../../../../docs/common_information/processes_tasks.rst:51 msgid "Finding minimum values by rows in the matrix" msgstr "" -#: ../../common_information/processes_tasks.rst:44 -#: ../../common_information/processes_tasks.rst:105 -#: ../../common_information/processes_tasks.rst:161 +#: ../../../../docs/common_information/processes_tasks.rst:53 +#: ../../../../docs/common_information/processes_tasks.rst:114 +#: ../../../../docs/common_information/processes_tasks.rst:170 msgid "18" msgstr "" -#: ../../common_information/processes_tasks.rst:44 +#: ../../../../docs/common_information/processes_tasks.rst:53 msgid "Finding minimum values by columns in the matrix" msgstr "" -#: ../../common_information/processes_tasks.rst:46 -#: ../../common_information/processes_tasks.rst:107 -#: ../../common_information/processes_tasks.rst:163 +#: ../../../../docs/common_information/processes_tasks.rst:55 +#: ../../../../docs/common_information/processes_tasks.rst:116 +#: ../../../../docs/common_information/processes_tasks.rst:172 msgid "19" msgstr "" -#: ../../common_information/processes_tasks.rst:46 +#: ../../../../docs/common_information/processes_tasks.rst:55 msgid "Integration – rectangle method" msgstr "" -#: ../../common_information/processes_tasks.rst:48 -#: ../../common_information/processes_tasks.rst:109 -#: ../../common_information/processes_tasks.rst:165 +#: ../../../../docs/common_information/processes_tasks.rst:57 +#: ../../../../docs/common_information/processes_tasks.rst:118 +#: ../../../../docs/common_information/processes_tasks.rst:174 msgid "20" msgstr "" -#: ../../common_information/processes_tasks.rst:48 +#: ../../../../docs/common_information/processes_tasks.rst:57 msgid "Integration – trapezoidal method" msgstr "" -#: ../../common_information/processes_tasks.rst:50 -#: ../../common_information/processes_tasks.rst:111 -#: ../../common_information/processes_tasks.rst:167 -#: ../../common_information/processes_tasks.rst:268 +#: ../../../../docs/common_information/processes_tasks.rst:59 +#: ../../../../docs/common_information/processes_tasks.rst:120 +#: ../../../../docs/common_information/processes_tasks.rst:176 +#: ../../../../docs/common_information/processes_tasks.rst:277 msgid "21" msgstr "" -#: ../../common_information/processes_tasks.rst:50 +#: ../../../../docs/common_information/processes_tasks.rst:59 msgid "Integration – Monte Carlo method" msgstr "" -#: ../../common_information/processes_tasks.rst:52 -#: ../../common_information/processes_tasks.rst:113 -#: ../../common_information/processes_tasks.rst:169 +#: ../../../../docs/common_information/processes_tasks.rst:61 +#: ../../../../docs/common_information/processes_tasks.rst:122 +#: ../../../../docs/common_information/processes_tasks.rst:178 msgid "22" msgstr "" -#: ../../common_information/processes_tasks.rst:52 +#: ../../../../docs/common_information/processes_tasks.rst:61 msgid "Counting the number of alphabetical characters in a string" msgstr "" -#: ../../common_information/processes_tasks.rst:54 -#: ../../common_information/processes_tasks.rst:115 -#: ../../common_information/processes_tasks.rst:171 +#: ../../../../docs/common_information/processes_tasks.rst:63 +#: ../../../../docs/common_information/processes_tasks.rst:124 +#: ../../../../docs/common_information/processes_tasks.rst:180 msgid "23" msgstr "" -#: ../../common_information/processes_tasks.rst:54 +#: ../../../../docs/common_information/processes_tasks.rst:63 msgid "Counting the frequency of a character in a string" msgstr "" -#: ../../common_information/processes_tasks.rst:56 -#: ../../common_information/processes_tasks.rst:173 +#: ../../../../docs/common_information/processes_tasks.rst:65 +#: ../../../../docs/common_information/processes_tasks.rst:182 msgid "24" msgstr "" -#: ../../common_information/processes_tasks.rst:56 +#: ../../../../docs/common_information/processes_tasks.rst:65 msgid "Counting the number of words in a string" msgstr "" -#: ../../common_information/processes_tasks.rst:58 -#: ../../common_information/processes_tasks.rst:175 +#: ../../../../docs/common_information/processes_tasks.rst:67 +#: ../../../../docs/common_information/processes_tasks.rst:184 msgid "25" msgstr "" -#: ../../common_information/processes_tasks.rst:58 +#: ../../../../docs/common_information/processes_tasks.rst:67 msgid "Counting the number of sentences in a string" msgstr "" -#: ../../common_information/processes_tasks.rst:60 -#: ../../common_information/processes_tasks.rst:177 +#: ../../../../docs/common_information/processes_tasks.rst:69 +#: ../../../../docs/common_information/processes_tasks.rst:186 msgid "26" msgstr "" -#: ../../common_information/processes_tasks.rst:60 +#: ../../../../docs/common_information/processes_tasks.rst:69 msgid "Checking lexicographical order of two strings" msgstr "" -#: ../../common_information/processes_tasks.rst:62 -#: ../../common_information/processes_tasks.rst:179 +#: ../../../../docs/common_information/processes_tasks.rst:71 +#: ../../../../docs/common_information/processes_tasks.rst:188 msgid "27" msgstr "" -#: ../../common_information/processes_tasks.rst:62 +#: ../../../../docs/common_information/processes_tasks.rst:71 msgid "Counting the number of differing characters between two strings" msgstr "" -#: ../../common_information/processes_tasks.rst:66 +#: ../../../../docs/common_information/processes_tasks.rst:75 msgid "Second task" msgstr "" -#: ../../common_information/processes_tasks.rst:71 +#: ../../../../docs/common_information/processes_tasks.rst:80 msgid "Broadcast (one to all transfer)" msgstr "" -#: ../../common_information/processes_tasks.rst:73 +#: ../../../../docs/common_information/processes_tasks.rst:82 msgid "Reduce (all to one transfer)" msgstr "" -#: ../../common_information/processes_tasks.rst:75 +#: ../../../../docs/common_information/processes_tasks.rst:84 msgid "Allreduce (all to one and broadcast)" msgstr "" -#: ../../common_information/processes_tasks.rst:77 +#: ../../../../docs/common_information/processes_tasks.rst:86 msgid "Scatter (one to all transfer)" msgstr "" -#: ../../common_information/processes_tasks.rst:79 +#: ../../../../docs/common_information/processes_tasks.rst:88 msgid "Gather (all to one transfer)" msgstr "" -#: ../../common_information/processes_tasks.rst:81 +#: ../../../../docs/common_information/processes_tasks.rst:90 msgid "Line" msgstr "" -#: ../../common_information/processes_tasks.rst:83 +#: ../../../../docs/common_information/processes_tasks.rst:92 msgid "Ring" msgstr "" -#: ../../common_information/processes_tasks.rst:85 +#: ../../../../docs/common_information/processes_tasks.rst:94 msgid "Star" msgstr "" -#: ../../common_information/processes_tasks.rst:87 +#: ../../../../docs/common_information/processes_tasks.rst:96 msgid "Torus Grid" msgstr "" -#: ../../common_information/processes_tasks.rst:89 +#: ../../../../docs/common_information/processes_tasks.rst:98 msgid "Hypercube" msgstr "" -#: ../../common_information/processes_tasks.rst:91 +#: ../../../../docs/common_information/processes_tasks.rst:100 msgid "Horizontal strip scheme - matrix-vector multiplication" msgstr "" -#: ../../common_information/processes_tasks.rst:93 +#: ../../../../docs/common_information/processes_tasks.rst:102 msgid "Vertical strip scheme - matrix-vector multiplication" msgstr "" -#: ../../common_information/processes_tasks.rst:95 +#: ../../../../docs/common_information/processes_tasks.rst:104 msgid "" "Horizontal strip scheme – partitioning only matrix A - matrix-matrix " "multiplication" msgstr "" -#: ../../common_information/processes_tasks.rst:97 +#: ../../../../docs/common_information/processes_tasks.rst:106 msgid "" "Horizontal strip scheme A, vertical strip scheme B - matrix-matrix " "multiplication" msgstr "" -#: ../../common_information/processes_tasks.rst:99 +#: ../../../../docs/common_information/processes_tasks.rst:108 msgid "Gaussian method – horizontal strip scheme" msgstr "" -#: ../../common_information/processes_tasks.rst:101 +#: ../../../../docs/common_information/processes_tasks.rst:110 msgid "Gaussian method – vertical strip scheme" msgstr "" -#: ../../common_information/processes_tasks.rst:103 +#: ../../../../docs/common_information/processes_tasks.rst:112 msgid "Gauss-Jordan method" msgstr "" -#: ../../common_information/processes_tasks.rst:105 +#: ../../../../docs/common_information/processes_tasks.rst:114 msgid "Iterative methods (Jacobi)" msgstr "" -#: ../../common_information/processes_tasks.rst:107 +#: ../../../../docs/common_information/processes_tasks.rst:116 msgid "Iterative methods (Gauss-Seidel)" msgstr "" -#: ../../common_information/processes_tasks.rst:109 +#: ../../../../docs/common_information/processes_tasks.rst:118 msgid "Iterative methods (Simple)" msgstr "" -#: ../../common_information/processes_tasks.rst:111 +#: ../../../../docs/common_information/processes_tasks.rst:120 msgid "Bubble sort (odd-even transposition algorithm)" msgstr "" -#: ../../common_information/processes_tasks.rst:113 +#: ../../../../docs/common_information/processes_tasks.rst:122 msgid "Image smoothing" msgstr "" -#: ../../common_information/processes_tasks.rst:115 +#: ../../../../docs/common_information/processes_tasks.rst:124 msgid "Contrast enhancement" msgstr "" -#: ../../common_information/processes_tasks.rst:119 +#: ../../../../docs/common_information/processes_tasks.rst:128 msgid "Third task" msgstr "" -#: ../../common_information/processes_tasks.rst:124 +#: ../../../../docs/common_information/processes_tasks.rst:133 msgid "" "Dense matrix multiplication. Elements of data type double. Block scheme, " "Cannon's algorithm." msgstr "" -#: ../../common_information/processes_tasks.rst:126 +#: ../../../../docs/common_information/processes_tasks.rst:135 msgid "" "Dense matrix multiplication. Elements of data type double. Block scheme, " "Fox's algorithm." msgstr "" -#: ../../common_information/processes_tasks.rst:128 +#: ../../../../docs/common_information/processes_tasks.rst:137 msgid "" "Dense matrix multiplication. Elements of data type double. Strassen's " "algorithm." msgstr "" -#: ../../common_information/processes_tasks.rst:130 +#: ../../../../docs/common_information/processes_tasks.rst:139 msgid "" "Sparse matrix multiplication. Elements of data type double. Matrix " "storage format – row format (CRS)." msgstr "" -#: ../../common_information/processes_tasks.rst:132 +#: ../../../../docs/common_information/processes_tasks.rst:141 msgid "" "Sparse matrix multiplication. Elements of data type double. Matrix " "storage format – column format (CCS)." msgstr "" -#: ../../common_information/processes_tasks.rst:134 +#: ../../../../docs/common_information/processes_tasks.rst:143 msgid "Solving systems of linear equations using the conjugate gradient method." msgstr "" -#: ../../common_information/processes_tasks.rst:136 +#: ../../../../docs/common_information/processes_tasks.rst:145 msgid "" "Computing multidimensional integrals using a multistep scheme (rectangle " "method)." msgstr "" -#: ../../common_information/processes_tasks.rst:138 +#: ../../../../docs/common_information/processes_tasks.rst:147 msgid "" "Computing multidimensional integrals using a multistep scheme " "(trapezoidal method)." msgstr "" -#: ../../common_information/processes_tasks.rst:140 +#: ../../../../docs/common_information/processes_tasks.rst:149 msgid "" "Computing multidimensional integrals using a multistep scheme (Simpson's " "method)." msgstr "" -#: ../../common_information/processes_tasks.rst:142 +#: ../../../../docs/common_information/processes_tasks.rst:151 msgid "Computing multidimensional integrals using the Monte Carlo method." msgstr "" -#: ../../common_information/processes_tasks.rst:144 +#: ../../../../docs/common_information/processes_tasks.rst:153 msgid "" "Global search algorithm (Strongin's) for one-dimensional optimization " "problems. Parallelization by characteristics." msgstr "" -#: ../../common_information/processes_tasks.rst:147 +#: ../../../../docs/common_information/processes_tasks.rst:156 msgid "" "Multistep scheme for solving two-dimensional global optimization " "problems. Parallelization by dividing the search area." msgstr "" -#: ../../common_information/processes_tasks.rst:150 +#: ../../../../docs/common_information/processes_tasks.rst:159 msgid "" "Multistep scheme for solving two-dimensional global optimization " "problems. Parallelization by characteristics." msgstr "" -#: ../../common_information/processes_tasks.rst:153 +#: ../../../../docs/common_information/processes_tasks.rst:162 msgid "Quick sort with simple merging." msgstr "" -#: ../../common_information/processes_tasks.rst:155 +#: ../../../../docs/common_information/processes_tasks.rst:164 msgid "Quick sort with odd-even merging (Batcher's method)." msgstr "" -#: ../../common_information/processes_tasks.rst:157 +#: ../../../../docs/common_information/processes_tasks.rst:166 msgid "Shell sort with simple merging." msgstr "" -#: ../../common_information/processes_tasks.rst:159 +#: ../../../../docs/common_information/processes_tasks.rst:168 msgid "Shell sort with odd-even merging (Batcher's method)." msgstr "" -#: ../../common_information/processes_tasks.rst:161 +#: ../../../../docs/common_information/processes_tasks.rst:170 msgid "Radix sort for integers with simple merging." msgstr "" -#: ../../common_information/processes_tasks.rst:163 +#: ../../../../docs/common_information/processes_tasks.rst:172 msgid "Radix sort for integers with odd-even merging (Batcher's method)." msgstr "" -#: ../../common_information/processes_tasks.rst:165 +#: ../../../../docs/common_information/processes_tasks.rst:174 msgid "Radix sort for floating-point numbers (type double) with simple merging." msgstr "" -#: ../../common_information/processes_tasks.rst:167 +#: ../../../../docs/common_information/processes_tasks.rst:176 msgid "" "Radix sort for floating-point numbers (type double) with odd-even merging" " (Batcher's method)." msgstr "" -#: ../../common_information/processes_tasks.rst:169 +#: ../../../../docs/common_information/processes_tasks.rst:178 msgid "" "Shortest path search from one vertex (Dijkstra's algorithm). With CRS " "graphs." msgstr "" -#: ../../common_information/processes_tasks.rst:171 +#: ../../../../docs/common_information/processes_tasks.rst:180 msgid "" "Shortest path search from one vertex (Bellman-Ford algorithm). With CRS " "graphs." msgstr "" -#: ../../common_information/processes_tasks.rst:173 +#: ../../../../docs/common_information/processes_tasks.rst:182 msgid "Convex hull construction – Graham's scan." msgstr "" -#: ../../common_information/processes_tasks.rst:175 +#: ../../../../docs/common_information/processes_tasks.rst:184 msgid "Convex hull construction – Jarvis's march." msgstr "" -#: ../../common_information/processes_tasks.rst:177 +#: ../../../../docs/common_information/processes_tasks.rst:186 msgid "Linear image filtering (horizontal partition). Gaussian kernel 3x3." msgstr "" -#: ../../common_information/processes_tasks.rst:179 +#: ../../../../docs/common_information/processes_tasks.rst:188 msgid "Linear image filtering (vertical partition). Gaussian kernel 3x3." msgstr "" -#: ../../common_information/processes_tasks.rst:181 +#: ../../../../docs/common_information/processes_tasks.rst:190 msgid "28" msgstr "" -#: ../../common_information/processes_tasks.rst:181 +#: ../../../../docs/common_information/processes_tasks.rst:190 msgid "Linear image filtering (block partition). Gaussian kernel 3x3." msgstr "" -#: ../../common_information/processes_tasks.rst:183 +#: ../../../../docs/common_information/processes_tasks.rst:192 msgid "29" msgstr "" -#: ../../common_information/processes_tasks.rst:183 +#: ../../../../docs/common_information/processes_tasks.rst:192 msgid "Edge detection in an image using the Sobel operator." msgstr "" -#: ../../common_information/processes_tasks.rst:185 +#: ../../../../docs/common_information/processes_tasks.rst:194 msgid "30" msgstr "" -#: ../../common_information/processes_tasks.rst:185 +#: ../../../../docs/common_information/processes_tasks.rst:194 msgid "Contrast enhancement of grayscale image using linear histogram stretching." msgstr "" -#: ../../common_information/processes_tasks.rst:187 +#: ../../../../docs/common_information/processes_tasks.rst:196 msgid "31" msgstr "" -#: ../../common_information/processes_tasks.rst:187 +#: ../../../../docs/common_information/processes_tasks.rst:196 msgid "" "Labeling components on a binary image (black areas correspond to objects," " white to background)." msgstr "" -#: ../../common_information/processes_tasks.rst:189 +#: ../../../../docs/common_information/processes_tasks.rst:198 msgid "32" msgstr "" -#: ../../common_information/processes_tasks.rst:189 +#: ../../../../docs/common_information/processes_tasks.rst:198 msgid "Convex hull construction for components of a binary image." msgstr "" -#: ../../common_information/processes_tasks.rst:193 +#: ../../../../docs/common_information/processes_tasks.rst:202 msgid "Comments for tasks 2 and 3:" msgstr "" -#: ../../common_information/processes_tasks.rst:195 +#: ../../../../docs/common_information/processes_tasks.rst:204 msgid "" "MESSAGE PASSING METHODS “You need to implement the specified methods " "using only the Send and Recv functions. The implemented function should " @@ -609,36 +624,36 @@ msgid "" "should be carried out using the ‘tree’ of processes.”" msgstr "" -#: ../../common_information/processes_tasks.rst:203 -#: ../../common_information/processes_tasks.rst:217 -#: ../../common_information/processes_tasks.rst:230 -#: ../../common_information/processes_tasks.rst:243 -#: ../../common_information/processes_tasks.rst:253 -#: ../../common_information/processes_tasks.rst:263 -#: ../../common_information/processes_tasks.rst:273 +#: ../../../../docs/common_information/processes_tasks.rst:212 +#: ../../../../docs/common_information/processes_tasks.rst:226 +#: ../../../../docs/common_information/processes_tasks.rst:239 +#: ../../../../docs/common_information/processes_tasks.rst:252 +#: ../../../../docs/common_information/processes_tasks.rst:262 +#: ../../../../docs/common_information/processes_tasks.rst:272 +#: ../../../../docs/common_information/processes_tasks.rst:282 msgid "Comments relevant for:" msgstr "" -#: ../../common_information/processes_tasks.rst:206 +#: ../../../../docs/common_information/processes_tasks.rst:215 msgid "Variants for task 2" msgstr "" -#: ../../common_information/processes_tasks.rst:206 +#: ../../../../docs/common_information/processes_tasks.rst:215 msgid "Variants for task 3" msgstr "" -#: ../../common_information/processes_tasks.rst:208 -#: ../../common_information/processes_tasks.rst:235 +#: ../../../../docs/common_information/processes_tasks.rst:217 +#: ../../../../docs/common_information/processes_tasks.rst:244 msgid "1 - 5" msgstr "" -#: ../../common_information/processes_tasks.rst:208 -#: ../../common_information/processes_tasks.rst:222 -#: ../../common_information/processes_tasks.rst:278 +#: ../../../../docs/common_information/processes_tasks.rst:217 +#: ../../../../docs/common_information/processes_tasks.rst:231 +#: ../../../../docs/common_information/processes_tasks.rst:287 msgid "x" msgstr "" -#: ../../common_information/processes_tasks.rst:211 +#: ../../../../docs/common_information/processes_tasks.rst:220 msgid "" "DATA COMMUNICATION NETWORK TOPOLOGIES “You need to implement the virtual " "topology specified in the task using MPI capabilities for working with " @@ -647,74 +662,74 @@ msgid "" "MPI_Cart_Create and MPI_Graph_Create)”" msgstr "" -#: ../../common_information/processes_tasks.rst:220 -#: ../../common_information/processes_tasks.rst:233 -#: ../../common_information/processes_tasks.rst:246 -#: ../../common_information/processes_tasks.rst:256 -#: ../../common_information/processes_tasks.rst:266 -#: ../../common_information/processes_tasks.rst:276 +#: ../../../../docs/common_information/processes_tasks.rst:229 +#: ../../../../docs/common_information/processes_tasks.rst:242 +#: ../../../../docs/common_information/processes_tasks.rst:255 +#: ../../../../docs/common_information/processes_tasks.rst:265 +#: ../../../../docs/common_information/processes_tasks.rst:275 +#: ../../../../docs/common_information/processes_tasks.rst:285 msgid "Varinats for task 2" msgstr "" -#: ../../common_information/processes_tasks.rst:220 -#: ../../common_information/processes_tasks.rst:233 -#: ../../common_information/processes_tasks.rst:246 -#: ../../common_information/processes_tasks.rst:256 -#: ../../common_information/processes_tasks.rst:266 -#: ../../common_information/processes_tasks.rst:276 +#: ../../../../docs/common_information/processes_tasks.rst:229 +#: ../../../../docs/common_information/processes_tasks.rst:242 +#: ../../../../docs/common_information/processes_tasks.rst:255 +#: ../../../../docs/common_information/processes_tasks.rst:265 +#: ../../../../docs/common_information/processes_tasks.rst:275 +#: ../../../../docs/common_information/processes_tasks.rst:285 msgid "Varinats for task 3" msgstr "" -#: ../../common_information/processes_tasks.rst:222 +#: ../../../../docs/common_information/processes_tasks.rst:231 msgid "6 - 10" msgstr "" -#: ../../common_information/processes_tasks.rst:225 +#: ../../../../docs/common_information/processes_tasks.rst:234 msgid "" "MATRIX COMPUTATIONS “In the horizontal scheme, the matrix is divided " "among processes by rows. In the vertical scheme, it is divided by " "columns, and in this case, the vector is also divided among processes.”" msgstr "" -#: ../../common_information/processes_tasks.rst:235 +#: ../../../../docs/common_information/processes_tasks.rst:244 msgid "11 - 14" msgstr "" -#: ../../common_information/processes_tasks.rst:238 +#: ../../../../docs/common_information/processes_tasks.rst:247 msgid "" "COMPUTER GRAPHICS AND IMAGE PROCESSING “It is assumed that the image is " "given in color or grayscale, with the input data being a one-dimensional " "array. Loading a real image is not required, but is allowed.”" msgstr "" -#: ../../common_information/processes_tasks.rst:248 +#: ../../../../docs/common_information/processes_tasks.rst:257 msgid "26 - 27" msgstr "" -#: ../../common_information/processes_tasks.rst:248 +#: ../../../../docs/common_information/processes_tasks.rst:257 msgid "24 - 32" msgstr "" -#: ../../common_information/processes_tasks.rst:251 +#: ../../../../docs/common_information/processes_tasks.rst:260 msgid "SOLUTION OF A SYSTEM OF LINEAR ALGEBRAIC EQUATIONS" msgstr "" -#: ../../common_information/processes_tasks.rst:258 +#: ../../../../docs/common_information/processes_tasks.rst:267 msgid "15 - 20" msgstr "" -#: ../../common_information/processes_tasks.rst:261 +#: ../../../../docs/common_information/processes_tasks.rst:270 msgid "SORT ALGORITHMS" msgstr "" -#: ../../common_information/processes_tasks.rst:268 +#: ../../../../docs/common_information/processes_tasks.rst:277 msgid "14 - 21" msgstr "" -#: ../../common_information/processes_tasks.rst:271 +#: ../../../../docs/common_information/processes_tasks.rst:280 msgid "GRAPH PROCESSING ALGORITHMS" msgstr "" -#: ../../common_information/processes_tasks.rst:278 +#: ../../../../docs/common_information/processes_tasks.rst:287 msgid "22 - 23" msgstr "" diff --git a/docs/locale/en/LC_MESSAGES/user_guide/api.po b/docs/locale/en/LC_MESSAGES/user_guide/api.po index 0298f382a..3448164ad 100644 --- a/docs/locale/en/LC_MESSAGES/user_guide/api.po +++ b/docs/locale/en/LC_MESSAGES/user_guide/api.po @@ -18,7 +18,7 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.17.0\n" +"Generated-By: Babel 2.18.0\n" #: ../../../../docs/user_guide/api.rst:2 msgid "API Reference" diff --git a/docs/locale/en/LC_MESSAGES/user_guide/build.po b/docs/locale/en/LC_MESSAGES/user_guide/build.po index a300741b3..694ec4ffa 100644 --- a/docs/locale/en/LC_MESSAGES/user_guide/build.po +++ b/docs/locale/en/LC_MESSAGES/user_guide/build.po @@ -20,7 +20,7 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.17.0\n" +"Generated-By: Babel 2.18.0\n" #: ../../../../docs/user_guide/build.rst:2 msgid "Build the Project with ``CMake``" @@ -92,13 +92,24 @@ msgid "*A corresponding flag can be omitted if it's not needed.*" msgstr "" #: ../../../../docs/user_guide/build.rst:42 +msgid "" +"OSH is part of the process-technology set on Linux. It is built by " +"default from the shallow ``3rdparty/openmpi`` source backend together with" +" MPI. A focused example build can be configured as:" +msgstr "" + +#: ../../../../docs/user_guide/build.rst:51 msgid "**Build the project**:" msgstr "" -#: ../../../../docs/user_guide/build.rst:48 +#: ../../../../docs/user_guide/build.rst:57 msgid "**Run tests**:" msgstr "" -#: ../../../../docs/user_guide/build.rst:50 +#: ../../../../docs/user_guide/build.rst:59 msgid "Prefer the helper runner described in ``User Guide → CI``." msgstr "" + +#: ../../../../docs/user_guide/build.rst:61 +msgid "OSH example on Linux:" +msgstr "" diff --git a/docs/locale/en/LC_MESSAGES/user_guide/ci.po b/docs/locale/en/LC_MESSAGES/user_guide/ci.po index 19b3bffe4..926922fc6 100644 --- a/docs/locale/en/LC_MESSAGES/user_guide/ci.po +++ b/docs/locale/en/LC_MESSAGES/user_guide/ci.po @@ -20,7 +20,7 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.17.0\n" +"Generated-By: Babel 2.18.0\n" #: ../../../../docs/user_guide/ci.rst:2 msgid "Continuous Integration (CI)" @@ -34,9 +34,9 @@ msgstr "" msgid "" "Your pull request must pass all required CI checks before review/merge. " "The pipeline validates formatting and static analysis, builds on all " -"platforms, runs functional tests (threads and MPI), measures performance," -" builds docs, and publishes artifacts (coverage report, docs, " -"scoreboard)." +"platforms, runs functional tests (threads, MPI, and OSH on Linux), " +"measures performance, builds docs, and publishes artifacts (coverage " +"report, docs, scoreboard)." msgstr "" #: ../../../../docs/user_guide/ci.rst:9 @@ -54,7 +54,8 @@ msgid "" "Platform builds and tests (Ubuntu, macOS, Windows) — Ubuntu (GCC/Clang), " "macOS (Clang), Windows (MSVC/Clang‑CL); functional tests via " "``scripts/run_tests.py`` for threads (``--counts 1 2 3 4``; extended ``5 " -"7 11 13``) and processes (MPI, ``--counts 1 2 3 4``)." +"7 11 13``) and processes (MPI/OSH on Linux, MPI on macOS/Windows, " +"``--counts 1 2 3 4``)." msgstr "" #: ../../../../docs/user_guide/ci.rst:15 @@ -124,7 +125,7 @@ msgid "``PPC_NUM_PROC``" msgstr "" #: ../../../../docs/user_guide/ci.rst:42 -msgid "Number of MPI processes to launch." +msgid "Number of MPI processes or OSH processing elements to launch." msgstr "" #: ../../../../docs/user_guide/ci.rst:44 @@ -148,16 +149,16 @@ msgstr "" #: ../../../../docs/user_guide/ci.rst:50 msgid "" "Execution modes: - ``--running-type=threads`` — shared-memory backends " -"(OpenMP/TBB/std::thread) - ``--running-type=processes`` — MPI tests - " -"``--running-type=performance`` — performance benchmarks (mirrors CI perf " -"job)" +"(OpenMP/TBB/std::thread) - ``--running-type=processes`` — MPI tests, plus" +" OSH tests on Linux - ``--running-type=performance`` — performance " +"benchmarks (mirrors CI perf job)" msgstr "" #: ../../../../docs/user_guide/ci.rst:55 msgid "Examples:" msgstr "" -#: ../../../../docs/user_guide/ci.rst:71 +#: ../../../../docs/user_guide/ci.rst:74 msgid "" "Options: - ``--counts`` runs tests for multiple thread/process counts " "sequentially. - ``--additional-mpi-args`` passes extra launcher flags " @@ -165,112 +166,117 @@ msgid "" "command." msgstr "" -#: ../../../../docs/user_guide/ci.rst:77 +#: ../../../../docs/user_guide/ci.rst:80 msgid "Coverage and sanitizers locally" msgstr "" -#: ../../../../docs/user_guide/ci.rst:78 +#: ../../../../docs/user_guide/ci.rst:81 msgid "" "Sanitizers (Linux): configure with ``-D ENABLE_ADDRESS_SANITIZER=ON`` " "(and optional UB/Leak), run tests with ``PPC_ASAN_RUN=1``." msgstr "" -#: ../../../../docs/user_guide/ci.rst:79 +#: ../../../../docs/user_guide/ci.rst:82 msgid "" "Coverage (Linux/GCC): configure with ``-D USE_COVERAGE=ON``, run tests, " "then generate HTML via ``gcovr`` (see CI ``gcc-build-codecov`` for " "command line)." msgstr "" -#: ../../../../docs/user_guide/ci.rst:82 +#: ../../../../docs/user_guide/ci.rst:85 msgid "Docs and scoreboard artifacts" msgstr "" -#: ../../../../docs/user_guide/ci.rst:83 +#: ../../../../docs/user_guide/ci.rst:86 msgid "" "Docs: run Doxygen first (``doxygen Doxyfile``), then Sphinx EN/RU via " "CMake targets ``docs_gettext``, ``docs_update``, ``docs_html``." msgstr "" -#: ../../../../docs/user_guide/ci.rst:84 +#: ../../../../docs/user_guide/ci.rst:87 msgid "" "Scoreboard: generate perf stats (``scripts/run_tests.py --running-" "type=performance``) and build scoreboard target or use ``python3 " "scoreboard/main.py`` locally." msgstr "" -#: ../../../../docs/user_guide/ci.rst:87 +#: ../../../../docs/user_guide/ci.rst:90 msgid "Troubleshooting" msgstr "" -#: ../../../../docs/user_guide/ci.rst:88 +#: ../../../../docs/user_guide/ci.rst:91 msgid "" "Pre-commit fails: run ``pre-commit run -a`` locally (install with ``pre-" "commit install``) and commit fixes." msgstr "" -#: ../../../../docs/user_guide/ci.rst:89 +#: ../../../../docs/user_guide/ci.rst:92 msgid "" "Static analysis fails: address clang-tidy comments; do not use " -"``NOLINT``/``IWYU pragma`` in task code; keep OpenMP/TBB/MPI/std::thread " -"APIs in their matching task backend directories." +"``NOLINT``/``IWYU pragma`` in task code; keep " +"OpenMP/TBB/MPI/OSH/std::thread APIs in their matching task backend " +"directories." msgstr "" -#: ../../../../docs/user_guide/ci.rst:90 +#: ../../../../docs/user_guide/ci.rst:93 msgid "" "Tests not found/not running: verify ``settings.json`` enables required " "technologies and tests exist; see :doc:`submit_work`." msgstr "" -#: ../../../../docs/user_guide/ci.rst:91 +#: ../../../../docs/user_guide/ci.rst:94 msgid "" "Time limits exceeded: reduce data sizes; prefer env vars " "(:doc:`environment_variables`) like " "``PPC_TASK_MAX_TIME``/``PPC_PERF_MAX_TIME``; avoid sleeps/randomness." msgstr "" -#: ../../../../docs/user_guide/ci.rst:92 +#: ../../../../docs/user_guide/ci.rst:95 msgid "" "MPI runs fail locally: set ``PPC_NUM_PROC`` and try ``--additional-mpi-" "args=\\\"--oversubscribe\\\"``." msgstr "" -#: ../../../../docs/user_guide/ci.rst:93 +#: ../../../../docs/user_guide/ci.rst:96 +msgid "OSH runs fail locally: verify an MPI launcher is on ``PATH``." +msgstr "" + +#: ../../../../docs/user_guide/ci.rst:97 msgid "" "Docs build fails: fix RST warnings; run ``doxygen Doxyfile`` before " "Sphinx targets." msgstr "" -#: ../../../../docs/user_guide/ci.rst:94 +#: ../../../../docs/user_guide/ci.rst:98 msgid "" "Performance job fails: ensure performance tests are enabled and keep " "durations within limits." msgstr "" -#: ../../../../docs/user_guide/ci.rst:97 +#: ../../../../docs/user_guide/ci.rst:101 msgid "Local clang-tidy and gcovr examples" msgstr "" -#: ../../../../docs/user_guide/ci.rst:99 +#: ../../../../docs/user_guide/ci.rst:103 msgid "clang-tidy (static analysis):" msgstr "" -#: ../../../../docs/user_guide/ci.rst:113 +#: ../../../../docs/user_guide/ci.rst:117 msgid "gcovr (coverage, GCC):" msgstr "" -#: ../../../../docs/user_guide/ci.rst:141 +#: ../../../../docs/user_guide/ci.rst:145 msgid "Tooling tips (versions and install)" msgstr "" -#: ../../../../docs/user_guide/ci.rst:143 +#: ../../../../docs/user_guide/ci.rst:147 msgid "" "clang-tidy version - CI uses clang-tidy 22. Prefer the same locally to " "avoid mismatches. - The helper may be named ``clang-tidy-22`` or ``run-" "clang-tidy-22`` on some systems." msgstr "" -#: ../../../../docs/user_guide/ci.rst:147 +#: ../../../../docs/user_guide/ci.rst:151 msgid "" "Linux - clang-tidy: install from your distro (e.g., ``apt install clang-" "tidy-22``) or use the course Docker image. - gcovr: ``python3 -m pip " @@ -278,7 +284,7 @@ msgid "" "building with GCC 14 (as in CI)." msgstr "" -#: ../../../../docs/user_guide/ci.rst:152 +#: ../../../../docs/user_guide/ci.rst:156 msgid "" "macOS - clang-tidy: ``brew install llvm``; binary at ``$(brew " "--prefix)/opt/llvm/bin/clang-tidy``. - Optionally add LLVM to PATH or " @@ -286,7 +292,7 @@ msgid "" "``brew install gcovr``." msgstr "" -#: ../../../../docs/user_guide/ci.rst:157 +#: ../../../../docs/user_guide/ci.rst:161 msgid "" "Windows - clang-tidy: install LLVM (Clang) or use ``choco install llvm``;" " ensure ``clang-tidy.exe`` is in PATH. - gcovr: ``py -m pip install " diff --git a/docs/locale/en/LC_MESSAGES/user_guide/environment.po b/docs/locale/en/LC_MESSAGES/user_guide/environment.po index a2b01b1c0..8802099e1 100644 --- a/docs/locale/en/LC_MESSAGES/user_guide/environment.po +++ b/docs/locale/en/LC_MESSAGES/user_guide/environment.po @@ -20,7 +20,7 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.17.0\n" +"Generated-By: Babel 2.18.0\n" #: ../../../../docs/user_guide/environment.rst:2 msgid "Set Up Your Environment" @@ -80,7 +80,7 @@ msgid "The container includes:" msgstr "" #: ../../../../docs/user_guide/environment.rst:21 -msgid "Ubuntu environment with gcc-15, CMake, MPI, OpenMP" +msgid "Ubuntu environment with gcc-15, CMake, MPI, OSH, OpenMP" msgstr "" #: ../../../../docs/user_guide/environment.rst:22 @@ -155,70 +155,114 @@ msgstr "" msgid "Linux (Ubuntu/Debian):" msgstr "" -#: ../../../../docs/user_guide/environment.rst:75 +#: ../../../../docs/user_guide/environment.rst:73 msgid "macOS (Homebrew):" msgstr "" -#: ../../../../docs/user_guide/environment.rst:83 +#: ../../../../docs/user_guide/environment.rst:81 msgid "Windows:" msgstr "" -#: ../../../../docs/user_guide/environment.rst:92 +#: ../../../../docs/user_guide/environment.rst:90 msgid "Parallel Programming Technologies" msgstr "" -#: ../../../../docs/user_guide/environment.rst:95 +#: ../../../../docs/user_guide/environment.rst:93 msgid "``MPI``" msgstr "" -#: ../../../../docs/user_guide/environment.rst:96 +#: ../../../../docs/user_guide/environment.rst:94 +#: ../../../../docs/user_guide/environment.rst:135 msgid "**Windows (MSVC)**:" msgstr "" -#: ../../../../docs/user_guide/environment.rst:98 +#: ../../../../docs/user_guide/environment.rst:96 msgid "" "`Installers link `_. You have to install " "``msmpisdk.msi`` and ``msmpisetup.exe``." msgstr "" -#: ../../../../docs/user_guide/environment.rst:100 -#: ../../../../docs/user_guide/environment.rst:116 +#: ../../../../docs/user_guide/environment.rst:98 +#: ../../../../docs/user_guide/environment.rst:121 +#: ../../../../docs/user_guide/environment.rst:147 msgid "**Linux (gcc and clang)**:" msgstr "" -#: ../../../../docs/user_guide/environment.rst:106 +#: ../../../../docs/user_guide/environment.rst:104 +#: ../../../../docs/user_guide/environment.rst:128 msgid "**MacOS (apple clang)**:" msgstr "" -#: ../../../../docs/user_guide/environment.rst:113 +#: ../../../../docs/user_guide/environment.rst:111 +msgid "``OSH``" +msgstr "" + +#: ../../../../docs/user_guide/environment.rst:94 +msgid "" +"On Linux, MPI is built from the shallow ``3rdparty/openmpi`` source " +"backend together with OSH. A separate system MPI installation is not " +"required for the Linux course build." +msgstr "" + +#: ../../../../docs/user_guide/environment.rst:112 +msgid "" +"OSH is used for process tasks as a PGAS / one-sided communication model " +"for distributed-memory systems." +msgstr "" + +#: ../../../../docs/user_guide/environment.rst:119 +msgid "" +"The project builds MPI and OSH from the shallow ``3rdparty/openmpi`` " +"source backend on Linux. The build installs ``mpirun``, ``libmpi``, " +"``liboshmem``, and ``shmem.h`` into the build tree. Open MPI OSH uses the" +" UCX SPML, so Linux needs the UCX development package. macOS and Windows " +"use their system MPI installations; OSH implementations are not built " +"there." +msgstr "" + +#: ../../../../docs/user_guide/environment.rst:132 +msgid "OSH is skipped on macOS." +msgstr "" + +#: ../../../../docs/user_guide/environment.rst:137 +msgid "Install MS-MPI as described in the MPI section. OSH is skipped on Windows." +msgstr "" + +#: ../../../../docs/user_guide/environment.rst:140 +msgid "" +"No separate system ``shmem.h``/``oshcc``/``oshrun`` package is required " +"for the Linux course build." +msgstr "" + +#: ../../../../docs/user_guide/environment.rst:144 msgid "``OpenMP``" msgstr "" -#: ../../../../docs/user_guide/environment.rst:114 +#: ../../../../docs/user_guide/environment.rst:145 msgid "" "``OpenMP`` is included in ``gcc`` and ``msvc``, but some components " "should be installed additionally:" msgstr "" -#: ../../../../docs/user_guide/environment.rst:122 +#: ../../../../docs/user_guide/environment.rst:153 msgid "**MacOS (llvm)**:" msgstr "" -#: ../../../../docs/user_guide/environment.rst:130 +#: ../../../../docs/user_guide/environment.rst:162 msgid "``TBB``" msgstr "" -#: ../../../../docs/user_guide/environment.rst:131 +#: ../../../../docs/user_guide/environment.rst:163 msgid "" "**Windows (MSVC)**, **Linux (gcc and clang)**, **MacOS (apple clang)**: " "Build as 3rdparty in the current project." msgstr "" -#: ../../../../docs/user_guide/environment.rst:135 +#: ../../../../docs/user_guide/environment.rst:167 msgid "``std::thread``" msgstr "" -#: ../../../../docs/user_guide/environment.rst:136 +#: ../../../../docs/user_guide/environment.rst:168 msgid "``std::thread`` is included in STL libraries." msgstr "" diff --git a/docs/locale/en/LC_MESSAGES/user_guide/environment_variables.po b/docs/locale/en/LC_MESSAGES/user_guide/environment_variables.po index d694e0dad..3266fb7c1 100644 --- a/docs/locale/en/LC_MESSAGES/user_guide/environment_variables.po +++ b/docs/locale/en/LC_MESSAGES/user_guide/environment_variables.po @@ -20,7 +20,7 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.17.0\n" +"Generated-By: Babel 2.18.0\n" #: ../../../../docs/user_guide/environment_variables.rst:2 msgid "Environment Variables" diff --git a/docs/locale/en/LC_MESSAGES/user_guide/submit_work.po b/docs/locale/en/LC_MESSAGES/user_guide/submit_work.po index 41f0f7d6a..6fa783a39 100644 --- a/docs/locale/en/LC_MESSAGES/user_guide/submit_work.po +++ b/docs/locale/en/LC_MESSAGES/user_guide/submit_work.po @@ -20,7 +20,7 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.17.0\n" +"Generated-By: Babel 2.18.0\n" #: ../../../../docs/user_guide/submit_work.rst:2 msgid "How to create, open, and submit your work" @@ -82,9 +82,9 @@ msgstr "" #: ../../../../docs/user_guide/submit_work.rst:31 msgid "" "Technology implementations (add only those required by the semester): - " -"Processes (MPI/SEQ): ``seq/include``, ``seq/src``, ``mpi/include``, " -"``mpi/src`` - Threads: ``seq``, ``omp``, ``tbb``, ``stl`` (same " -"include/src split)" +"Processes (MPI/OSH/SEQ): ``seq/include``, ``seq/src``, ``mpi/include``, " +"``mpi/src``, ``osh/include``, ``osh/src`` - Threads: ``seq``, ``omp``, " +"``tbb``, ``stl`` (same include/src split)" msgstr "" #: ../../../../docs/user_guide/submit_work.rst:35 @@ -110,63 +110,63 @@ msgstr "" msgid "Functional tests example:" msgstr "" -#: ../../../../docs/user_guide/submit_work.rst:90 +#: ../../../../docs/user_guide/submit_work.rst:91 msgid "Use ``PPC_ID_`` to resolve resources from ``data/`` when needed." msgstr "" -#: ../../../../docs/user_guide/submit_work.rst:92 +#: ../../../../docs/user_guide/submit_work.rst:93 msgid "Performance tests example:" msgstr "" -#: ../../../../docs/user_guide/submit_work.rst:100 +#: ../../../../docs/user_guide/submit_work.rst:101 msgid "Tips for tests" msgstr "" -#: ../../../../docs/user_guide/submit_work.rst:101 +#: ../../../../docs/user_guide/submit_work.rst:102 msgid "" "Keep tests deterministic and under time limits; prefer env vars (see " "``User Guide → Environment Variables``) over sleeps." msgstr "" -#: ../../../../docs/user_guide/submit_work.rst:102 +#: ../../../../docs/user_guide/submit_work.rst:103 msgid "Use ``PPC_ID_`` to access files from ``data/``." msgstr "" -#: ../../../../docs/user_guide/submit_work.rst:103 +#: ../../../../docs/user_guide/submit_work.rst:104 msgid "" "Cover edge cases in functional tests; add focused performance tests for " "enabled implementations." msgstr "" -#: ../../../../docs/user_guide/submit_work.rst:105 +#: ../../../../docs/user_guide/submit_work.rst:106 msgid "``data/`` — optional input files for tests (e.g., images)." msgstr "" -#: ../../../../docs/user_guide/submit_work.rst:106 +#: ../../../../docs/user_guide/submit_work.rst:107 msgid "``settings.json`` — enable required technologies for your semester, e.g.:" msgstr "" -#: ../../../../docs/user_guide/submit_work.rst:112 +#: ../../../../docs/user_guide/submit_work.rst:113 msgid "``info.json`` — student metadata used in automation (scoreboard, macros):" msgstr "" -#: ../../../../docs/user_guide/submit_work.rst:119 +#: ../../../../docs/user_guide/submit_work.rst:120 msgid "Build and local run" msgstr "" -#: ../../../../docs/user_guide/submit_work.rst:120 +#: ../../../../docs/user_guide/submit_work.rst:121 msgid "Configure and build:" msgstr "" -#: ../../../../docs/user_guide/submit_work.rst:127 +#: ../../../../docs/user_guide/submit_work.rst:128 msgid "Run tests via helper:" msgstr "" -#: ../../../../docs/user_guide/submit_work.rst:138 +#: ../../../../docs/user_guide/submit_work.rst:139 msgid "Executables (where to find tests)" msgstr "" -#: ../../../../docs/user_guide/submit_work.rst:139 +#: ../../../../docs/user_guide/submit_work.rst:140 msgid "" "``build/bin`` (or ``install/bin``): - ``core_func_tests`` — core library " "tests first - ``ppc_func_tests`` — functional tests for all " @@ -174,27 +174,27 @@ msgid "" "tasks/technologies" msgstr "" -#: ../../../../docs/user_guide/submit_work.rst:144 +#: ../../../../docs/user_guide/submit_work.rst:145 msgid "" "The runner applies gtest filters automatically to select technology " "suites." msgstr "" -#: ../../../../docs/user_guide/submit_work.rst:147 +#: ../../../../docs/user_guide/submit_work.rst:148 msgid "Pull Request" msgstr "" -#: ../../../../docs/user_guide/submit_work.rst:148 +#: ../../../../docs/user_guide/submit_work.rst:149 msgid "Title format (example):" msgstr "" -#: ../../../../docs/user_guide/submit_work.rst:150 +#: ../../../../docs/user_guide/submit_work.rst:151 msgid "" -"``<Фамилия Имя>. Технология . <Название задачи>. Вариант " -".``" +"``<Фамилия Имя>. Технология . <Название задачи>. Вариант" +" .``" msgstr "" -#: ../../../../docs/user_guide/submit_work.rst:152 +#: ../../../../docs/user_guide/submit_work.rst:153 msgid "" "Description should include: - Полное описание задачи; номер варианта; " "используемая технология - Краткое описание реализации и отчёта - Чек-лист" @@ -203,75 +203,75 @@ msgid "" "достоверность сведений)." msgstr "" -#: ../../../../docs/user_guide/submit_work.rst:160 +#: ../../../../docs/user_guide/submit_work.rst:159 msgid "PR checklist template (body)" msgstr "" -#: ../../../../docs/user_guide/submit_work.rst:208 +#: ../../../../docs/user_guide/submit_work.rst:182 msgid "Common pitfalls (read before pushing)" msgstr "" -#: ../../../../docs/user_guide/submit_work.rst:209 +#: ../../../../docs/user_guide/submit_work.rst:183 msgid "Wrong folder/branch name. Must be ``__`` everywhere." msgstr "" -#: ../../../../docs/user_guide/submit_work.rst:210 +#: ../../../../docs/user_guide/submit_work.rst:184 msgid "Missing or wrong ``GetStaticTypeOfTask`` value for a technology." msgstr "" -#: ../../../../docs/user_guide/submit_work.rst:211 +#: ../../../../docs/user_guide/submit_work.rst:185 msgid "Tests rely on randomness or sleeps instead of env time limits." msgstr "" -#: ../../../../docs/user_guide/submit_work.rst:212 +#: ../../../../docs/user_guide/submit_work.rst:186 msgid "``settings.json`` doesn’t enable a required technology — tests won’t run." msgstr "" -#: ../../../../docs/user_guide/submit_work.rst:213 +#: ../../../../docs/user_guide/submit_work.rst:187 msgid "Namespace doesn’t match the folder name and collides with others." msgstr "" -#: ../../../../docs/user_guide/submit_work.rst:214 +#: ../../../../docs/user_guide/submit_work.rst:188 msgid "Performance tests count or naming deviates from the required patterns." msgstr "" -#: ../../../../docs/user_guide/submit_work.rst:217 +#: ../../../../docs/user_guide/submit_work.rst:191 msgid "Useful examples to reference" msgstr "" -#: ../../../../docs/user_guide/submit_work.rst:218 +#: ../../../../docs/user_guide/submit_work.rst:192 msgid "" -"Processes: ``tasks/example/processes/t1``, ``tasks/example/processes/t2``, " -"``tasks/example/processes/t3``" +"Processes: ``tasks/example/processes/t1``, " +"``tasks/example/processes/t2``, ``tasks/example/processes/t3``" msgstr "" -#: ../../../../docs/user_guide/submit_work.rst:219 +#: ../../../../docs/user_guide/submit_work.rst:193 msgid "Threads: ``tasks/example/threads``" msgstr "" -#: ../../../../docs/user_guide/submit_work.rst:221 +#: ../../../../docs/user_guide/submit_work.rst:195 msgid "" "Work from your fork in a dedicated branch (not ``master``). Branch name " "must match your task folder." msgstr "" -#: ../../../../docs/user_guide/submit_work.rst:224 +#: ../../../../docs/user_guide/submit_work.rst:198 msgid "Notes" msgstr "" -#: ../../../../docs/user_guide/submit_work.rst:225 +#: ../../../../docs/user_guide/submit_work.rst:199 msgid "" "All classes should live in a unique namespace (e.g., " "``__``)." msgstr "" -#: ../../../../docs/user_guide/submit_work.rst:226 +#: ../../../../docs/user_guide/submit_work.rst:200 msgid "" "Keep tests deterministic and within time limits; prefer env vars over " "sleeps." msgstr "" -#: ../../../../docs/user_guide/submit_work.rst:227 +#: ../../../../docs/user_guide/submit_work.rst:201 msgid "" "Follow code style (clang-format/clang-tidy), and run pre-commit hooks " "locally." diff --git a/docs/locale/ru/LC_MESSAGES/common_information/points.po b/docs/locale/ru/LC_MESSAGES/common_information/points.po index 521ba1eec..d1a25777c 100644 --- a/docs/locale/ru/LC_MESSAGES/common_information/points.po +++ b/docs/locale/ru/LC_MESSAGES/common_information/points.po @@ -20,7 +20,7 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.17.0\n" +"Generated-By: Babel 2.18.0\n" #: ../../../../docs/common_information/points.rst:2 msgid "Points" @@ -39,32 +39,32 @@ msgid "Report points are distributed per task and sum to 10" msgstr "Баллы за отчёт распределяются по задачам и суммарно равны 10" #: ../../../../docs/common_information/points.rst:11 -msgid "Processes semester (MPI)" -msgstr "Семестр процессов (MPI)" +msgid "Processes semester (MPI / OSH)" +msgstr "Семестр процессов (MPI / OSH)" #: ../../../../docs/common_information/points.rst:13 msgid "" -"Task 1 — Total: 12 - Implementation: MPI 8 + Seq 2 - Performance: 0 - " -"Report: 2" +"Task 1 — Total: 12 - Implementation: MPI or OSH 8 + Seq 2 - Performance: " +"0 - Report: 2" msgstr "" -"Задача 1 — Итого: 12 — Реализация: MPI 8 + Seq 2 — Производительность: 0 " -"— Отчёт: 2" +"Задача 1 — Итого: 12 — Реализация: MPI или OSH 8 + Seq 2 — " +"Производительность: 0 — Отчёт: 2" #: ../../../../docs/common_information/points.rst:18 msgid "" -"Task 2 — Total: 23 - Implementation: MPI 12 + Seq 3 - Performance: 5 - " -"Report: 3" +"Task 2 — Total: 23 - Implementation: MPI or OSH 12 + Seq 3 - Performance:" +" 5 - Report: 3" msgstr "" -"Задача 2 — Итого: 23 — Реализация: MPI 12 + Seq 3 — Производительность: 5" -" — Отчёт: 3" +"Задача 2 — Итого: 23 — Реализация: MPI или OSH 12 + Seq 3 — " +"Производительность: 5 — Отчёт: 3" #: ../../../../docs/common_information/points.rst:23 msgid "" -"Task 3 — Total: 35 - Implementation: MPI 16 + Seq 4 - Performance: 10 - " -"Report: 5" +"Task 3 — Total: 35 - Implementation: MPI or OSH 16 + Seq 4 - Performance:" +" 10 - Report: 5" msgstr "" -"Задача 3 — Итого: 35 — Реализация: MPI 16 + Seq 4 — Производительность: " -"10 — Отчёт: 5" +"Задача 3 — Итого: 35 — Реализация: MPI или OSH 16 + Seq 4 — " +"Производительность: 10 — Отчёт: 5" #: ../../../../docs/common_information/points.rst:28 msgid "Semester total: 70" diff --git a/docs/locale/ru/LC_MESSAGES/common_information/processes_tasks.po b/docs/locale/ru/LC_MESSAGES/common_information/processes_tasks.po index 4da4dd92a..cc48da979 100644 --- a/docs/locale/ru/LC_MESSAGES/common_information/processes_tasks.po +++ b/docs/locale/ru/LC_MESSAGES/common_information/processes_tasks.po @@ -2,7 +2,8 @@ # Copyright (C) 2025, Learning Process # This file is distributed under the same license as the Parallel # Programming Course package. -# Learning Process Team , 2025. +# Learning Process Team , 2025. # msgid "" msgstr "" @@ -12,593 +13,650 @@ msgstr "" "PO-Revision-Date: 2025-07-27 18:21+0200\n" "Last-Translator: Learning Process Team \n" "Language: ru\n" -"Language-Team: Learning Process Team (gooddoog@student.su, nesterov.alexander@outlook.com)\n" +"Language-Team: Learning Process Team (gooddoog@student.su, " +"nesterov.alexander@outlook.com)\n" "Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && " "n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.17.0\n" +"Generated-By: Babel 2.18.0\n" -#: ../../common_information/processes_tasks.rst:2 +#: ../../../../docs/common_information/processes_tasks.rst:2 msgid "Processes parallelism tasks" msgstr "Задачи параллелизма на процессах" -#: ../../common_information/processes_tasks.rst:5 +#: ../../../../docs/common_information/processes_tasks.rst:5 +msgid "Distributed-memory technologies" +msgstr "Технологии распределённой памяти" + +#: ../../../../docs/common_information/processes_tasks.rst:7 +msgid "" +"The processes semester targets distributed-memory programming. MPI " +"remains the baseline message-passing technology, and OSH is available on " +"Linux as a PGAS / one-sided communication alternative for process tasks. " +"Keep OSH implementations under ``osh`` task backend directories; do not " +"move them to the threads semester." +msgstr "" +"Семестр процессов ориентирован на программирование для распределённой " +"памяти. MPI остаётся базовой технологией передачи сообщений, а OSH " +"доступен на Linux как PGAS / one-sided communication альтернатива для " +"задач на процессах. Размещайте OSH-реализации в backend-директориях задач" +" ``osh``; не переносите их в семестр потоков." + +#: ../../../../docs/common_information/processes_tasks.rst:14 msgid "First task" msgstr "Первая задача" -#: ../../common_information/processes_tasks.rst:8 -#: ../../common_information/processes_tasks.rst:69 -#: ../../common_information/processes_tasks.rst:122 +#: ../../../../docs/common_information/processes_tasks.rst:17 +#: ../../../../docs/common_information/processes_tasks.rst:78 +#: ../../../../docs/common_information/processes_tasks.rst:131 msgid "Variant Number" msgstr "Номер варианта" -#: ../../common_information/processes_tasks.rst:8 -#: ../../common_information/processes_tasks.rst:69 -#: ../../common_information/processes_tasks.rst:122 +#: ../../../../docs/common_information/processes_tasks.rst:17 +#: ../../../../docs/common_information/processes_tasks.rst:78 +#: ../../../../docs/common_information/processes_tasks.rst:131 msgid "Task" msgstr "Задача" -#: ../../common_information/processes_tasks.rst:10 -#: ../../common_information/processes_tasks.rst:71 -#: ../../common_information/processes_tasks.rst:124 +#: ../../../../docs/common_information/processes_tasks.rst:19 +#: ../../../../docs/common_information/processes_tasks.rst:80 +#: ../../../../docs/common_information/processes_tasks.rst:133 msgid "1" msgstr "1" -#: ../../common_information/processes_tasks.rst:10 +#: ../../../../docs/common_information/processes_tasks.rst:19 msgid "Sum of vector elements" msgstr "Сумма элементов вектора" -#: ../../common_information/processes_tasks.rst:12 -#: ../../common_information/processes_tasks.rst:73 -#: ../../common_information/processes_tasks.rst:126 +#: ../../../../docs/common_information/processes_tasks.rst:21 +#: ../../../../docs/common_information/processes_tasks.rst:82 +#: ../../../../docs/common_information/processes_tasks.rst:135 msgid "2" msgstr "2" -#: ../../common_information/processes_tasks.rst:12 +#: ../../../../docs/common_information/processes_tasks.rst:21 msgid "Calculating the average value of vector elements" msgstr "Вычисление среднего значения элементов вектора" -#: ../../common_information/processes_tasks.rst:14 -#: ../../common_information/processes_tasks.rst:75 -#: ../../common_information/processes_tasks.rst:128 +#: ../../../../docs/common_information/processes_tasks.rst:23 +#: ../../../../docs/common_information/processes_tasks.rst:84 +#: ../../../../docs/common_information/processes_tasks.rst:137 msgid "3" msgstr "3" -#: ../../common_information/processes_tasks.rst:14 +#: ../../../../docs/common_information/processes_tasks.rst:23 msgid "Maximum value of vector elements" msgstr "Максимальное значение элементов вектора" -#: ../../common_information/processes_tasks.rst:16 -#: ../../common_information/processes_tasks.rst:77 -#: ../../common_information/processes_tasks.rst:130 +#: ../../../../docs/common_information/processes_tasks.rst:25 +#: ../../../../docs/common_information/processes_tasks.rst:86 +#: ../../../../docs/common_information/processes_tasks.rst:139 msgid "4" msgstr "4" -#: ../../common_information/processes_tasks.rst:16 +#: ../../../../docs/common_information/processes_tasks.rst:25 msgid "Minimum value of vector elements" msgstr "Минимальное значение элементов вектора" -#: ../../common_information/processes_tasks.rst:18 -#: ../../common_information/processes_tasks.rst:79 -#: ../../common_information/processes_tasks.rst:132 +#: ../../../../docs/common_information/processes_tasks.rst:27 +#: ../../../../docs/common_information/processes_tasks.rst:88 +#: ../../../../docs/common_information/processes_tasks.rst:141 msgid "5" msgstr "5" -#: ../../common_information/processes_tasks.rst:18 +#: ../../../../docs/common_information/processes_tasks.rst:27 msgid "" "Finding the number of sign alternations between adjacent elements of the " "vector" msgstr "Нахождение числа чередований знаков значений соседних элементов вектора" -#: ../../common_information/processes_tasks.rst:20 -#: ../../common_information/processes_tasks.rst:81 -#: ../../common_information/processes_tasks.rst:134 -#: ../../common_information/processes_tasks.rst:258 +#: ../../../../docs/common_information/processes_tasks.rst:29 +#: ../../../../docs/common_information/processes_tasks.rst:90 +#: ../../../../docs/common_information/processes_tasks.rst:143 +#: ../../../../docs/common_information/processes_tasks.rst:267 msgid "6" msgstr "6" -#: ../../common_information/processes_tasks.rst:20 +#: ../../../../docs/common_information/processes_tasks.rst:29 msgid "" "Finding the number of order violations between adjacent elements of the " "vector" msgstr "Нахождение числа нарушений упорядоченности соседних элементов вектора" -#: ../../common_information/processes_tasks.rst:22 -#: ../../common_information/processes_tasks.rst:83 -#: ../../common_information/processes_tasks.rst:136 +#: ../../../../docs/common_information/processes_tasks.rst:31 +#: ../../../../docs/common_information/processes_tasks.rst:92 +#: ../../../../docs/common_information/processes_tasks.rst:145 msgid "7" msgstr "7" -#: ../../common_information/processes_tasks.rst:22 +#: ../../../../docs/common_information/processes_tasks.rst:31 msgid "Finding the most similar adjacent elements of the vector" msgstr "Нахождение наиболее близких соседних элементов вектора" -#: ../../common_information/processes_tasks.rst:24 -#: ../../common_information/processes_tasks.rst:85 -#: ../../common_information/processes_tasks.rst:138 +#: ../../../../docs/common_information/processes_tasks.rst:33 +#: ../../../../docs/common_information/processes_tasks.rst:94 +#: ../../../../docs/common_information/processes_tasks.rst:147 msgid "8" msgstr "8" -#: ../../common_information/processes_tasks.rst:24 +#: ../../../../docs/common_information/processes_tasks.rst:33 msgid "Finding the most different adjacent elements of the vector" msgstr "Нахождение наиболее отличающихся по значению соседних элементов вектора" -#: ../../common_information/processes_tasks.rst:26 -#: ../../common_information/processes_tasks.rst:87 -#: ../../common_information/processes_tasks.rst:140 +#: ../../../../docs/common_information/processes_tasks.rst:35 +#: ../../../../docs/common_information/processes_tasks.rst:96 +#: ../../../../docs/common_information/processes_tasks.rst:149 msgid "9" msgstr "9" -#: ../../common_information/processes_tasks.rst:26 +#: ../../../../docs/common_information/processes_tasks.rst:35 msgid "Scalar product of vectors" msgstr "Скалярное произведение векторов" -#: ../../common_information/processes_tasks.rst:28 -#: ../../common_information/processes_tasks.rst:89 -#: ../../common_information/processes_tasks.rst:142 +#: ../../../../docs/common_information/processes_tasks.rst:37 +#: ../../../../docs/common_information/processes_tasks.rst:98 +#: ../../../../docs/common_information/processes_tasks.rst:151 msgid "10" msgstr "10" -#: ../../common_information/processes_tasks.rst:28 +#: ../../../../docs/common_information/processes_tasks.rst:37 msgid "Sum of matrix elements" msgstr "Сумма элементов матрицы" -#: ../../common_information/processes_tasks.rst:30 -#: ../../common_information/processes_tasks.rst:91 -#: ../../common_information/processes_tasks.rst:144 +#: ../../../../docs/common_information/processes_tasks.rst:39 +#: ../../../../docs/common_information/processes_tasks.rst:100 +#: ../../../../docs/common_information/processes_tasks.rst:153 msgid "11" msgstr "11" -#: ../../common_information/processes_tasks.rst:30 +#: ../../../../docs/common_information/processes_tasks.rst:39 msgid "Sum of values by rows in the matrix" msgstr "Сумма значений по строкам матрицы" -#: ../../common_information/processes_tasks.rst:32 -#: ../../common_information/processes_tasks.rst:93 -#: ../../common_information/processes_tasks.rst:147 +#: ../../../../docs/common_information/processes_tasks.rst:41 +#: ../../../../docs/common_information/processes_tasks.rst:102 +#: ../../../../docs/common_information/processes_tasks.rst:156 msgid "12" msgstr "12" -#: ../../common_information/processes_tasks.rst:32 +#: ../../../../docs/common_information/processes_tasks.rst:41 msgid "Sum of values by columns in the matrix" msgstr "Сумма значений по столбцам матрицы" -#: ../../common_information/processes_tasks.rst:34 -#: ../../common_information/processes_tasks.rst:95 -#: ../../common_information/processes_tasks.rst:150 +#: ../../../../docs/common_information/processes_tasks.rst:43 +#: ../../../../docs/common_information/processes_tasks.rst:104 +#: ../../../../docs/common_information/processes_tasks.rst:159 msgid "13" msgstr "13" -#: ../../common_information/processes_tasks.rst:34 +#: ../../../../docs/common_information/processes_tasks.rst:43 msgid "Maximum value of matrix elements" msgstr "Максимальное значение элементов матрицы" -#: ../../common_information/processes_tasks.rst:36 -#: ../../common_information/processes_tasks.rst:97 -#: ../../common_information/processes_tasks.rst:153 +#: ../../../../docs/common_information/processes_tasks.rst:45 +#: ../../../../docs/common_information/processes_tasks.rst:106 +#: ../../../../docs/common_information/processes_tasks.rst:162 msgid "14" msgstr "14" -#: ../../common_information/processes_tasks.rst:36 +#: ../../../../docs/common_information/processes_tasks.rst:45 msgid "Minimum value of matrix elements" msgstr "Минимальное значение элементов матрицы" -#: ../../common_information/processes_tasks.rst:38 -#: ../../common_information/processes_tasks.rst:99 -#: ../../common_information/processes_tasks.rst:155 +#: ../../../../docs/common_information/processes_tasks.rst:47 +#: ../../../../docs/common_information/processes_tasks.rst:108 +#: ../../../../docs/common_information/processes_tasks.rst:164 msgid "15" msgstr "15" -#: ../../common_information/processes_tasks.rst:38 +#: ../../../../docs/common_information/processes_tasks.rst:47 msgid "Finding maximum values by rows in the matrix" msgstr "Нахождение максимальных значений по строкам матрицы" -#: ../../common_information/processes_tasks.rst:40 -#: ../../common_information/processes_tasks.rst:101 -#: ../../common_information/processes_tasks.rst:157 +#: ../../../../docs/common_information/processes_tasks.rst:49 +#: ../../../../docs/common_information/processes_tasks.rst:110 +#: ../../../../docs/common_information/processes_tasks.rst:166 msgid "16" msgstr "16" -#: ../../common_information/processes_tasks.rst:40 +#: ../../../../docs/common_information/processes_tasks.rst:49 msgid "Finding maximum values by columns in the matrix" msgstr "Нахождение максимальных значений по столбцам матрицы" -#: ../../common_information/processes_tasks.rst:42 -#: ../../common_information/processes_tasks.rst:103 -#: ../../common_information/processes_tasks.rst:159 +#: ../../../../docs/common_information/processes_tasks.rst:51 +#: ../../../../docs/common_information/processes_tasks.rst:112 +#: ../../../../docs/common_information/processes_tasks.rst:168 msgid "17" msgstr "17" -#: ../../common_information/processes_tasks.rst:42 +#: ../../../../docs/common_information/processes_tasks.rst:51 msgid "Finding minimum values by rows in the matrix" msgstr "Нахождение минимальных значений по строкам матрицы" -#: ../../common_information/processes_tasks.rst:44 -#: ../../common_information/processes_tasks.rst:105 -#: ../../common_information/processes_tasks.rst:161 +#: ../../../../docs/common_information/processes_tasks.rst:53 +#: ../../../../docs/common_information/processes_tasks.rst:114 +#: ../../../../docs/common_information/processes_tasks.rst:170 msgid "18" msgstr "18" -#: ../../common_information/processes_tasks.rst:44 +#: ../../../../docs/common_information/processes_tasks.rst:53 msgid "Finding minimum values by columns in the matrix" msgstr "Нахождение минимальных значений по столбцам матрицы" -#: ../../common_information/processes_tasks.rst:46 -#: ../../common_information/processes_tasks.rst:107 -#: ../../common_information/processes_tasks.rst:163 +#: ../../../../docs/common_information/processes_tasks.rst:55 +#: ../../../../docs/common_information/processes_tasks.rst:116 +#: ../../../../docs/common_information/processes_tasks.rst:172 msgid "19" msgstr "19" -#: ../../common_information/processes_tasks.rst:46 +#: ../../../../docs/common_information/processes_tasks.rst:55 msgid "Integration – rectangle method" msgstr "Интегрирование – метод прямоугольников" -#: ../../common_information/processes_tasks.rst:48 -#: ../../common_information/processes_tasks.rst:109 -#: ../../common_information/processes_tasks.rst:165 +#: ../../../../docs/common_information/processes_tasks.rst:57 +#: ../../../../docs/common_information/processes_tasks.rst:118 +#: ../../../../docs/common_information/processes_tasks.rst:174 msgid "20" msgstr "20" -#: ../../common_information/processes_tasks.rst:48 +#: ../../../../docs/common_information/processes_tasks.rst:57 msgid "Integration – trapezoidal method" msgstr "Интегрирование – метод трапеций" -#: ../../common_information/processes_tasks.rst:50 -#: ../../common_information/processes_tasks.rst:111 -#: ../../common_information/processes_tasks.rst:167 -#: ../../common_information/processes_tasks.rst:268 +#: ../../../../docs/common_information/processes_tasks.rst:59 +#: ../../../../docs/common_information/processes_tasks.rst:120 +#: ../../../../docs/common_information/processes_tasks.rst:176 +#: ../../../../docs/common_information/processes_tasks.rst:277 msgid "21" msgstr "21" -#: ../../common_information/processes_tasks.rst:50 +#: ../../../../docs/common_information/processes_tasks.rst:59 msgid "Integration – Monte Carlo method" msgstr "Интегрирование – метод Монте-Карло" -#: ../../common_information/processes_tasks.rst:52 -#: ../../common_information/processes_tasks.rst:113 -#: ../../common_information/processes_tasks.rst:169 +#: ../../../../docs/common_information/processes_tasks.rst:61 +#: ../../../../docs/common_information/processes_tasks.rst:122 +#: ../../../../docs/common_information/processes_tasks.rst:178 msgid "22" msgstr "22" -#: ../../common_information/processes_tasks.rst:52 +#: ../../../../docs/common_information/processes_tasks.rst:61 msgid "Counting the number of alphabetical characters in a string" msgstr "Подсчет числа буквенных символов в строке" -#: ../../common_information/processes_tasks.rst:54 -#: ../../common_information/processes_tasks.rst:115 -#: ../../common_information/processes_tasks.rst:171 +#: ../../../../docs/common_information/processes_tasks.rst:63 +#: ../../../../docs/common_information/processes_tasks.rst:124 +#: ../../../../docs/common_information/processes_tasks.rst:180 msgid "23" msgstr "23" -#: ../../common_information/processes_tasks.rst:54 +#: ../../../../docs/common_information/processes_tasks.rst:63 msgid "Counting the frequency of a character in a string" msgstr "Подсчет частоты символа в строке" -#: ../../common_information/processes_tasks.rst:56 -#: ../../common_information/processes_tasks.rst:173 +#: ../../../../docs/common_information/processes_tasks.rst:65 +#: ../../../../docs/common_information/processes_tasks.rst:182 msgid "24" msgstr "24" -#: ../../common_information/processes_tasks.rst:56 +#: ../../../../docs/common_information/processes_tasks.rst:65 msgid "Counting the number of words in a string" msgstr "Подсчет числа слов в строке" -#: ../../common_information/processes_tasks.rst:58 -#: ../../common_information/processes_tasks.rst:175 +#: ../../../../docs/common_information/processes_tasks.rst:67 +#: ../../../../docs/common_information/processes_tasks.rst:184 msgid "25" msgstr "25" -#: ../../common_information/processes_tasks.rst:58 +#: ../../../../docs/common_information/processes_tasks.rst:67 msgid "Counting the number of sentences in a string" msgstr "Подсчет числа предложений в строке" -#: ../../common_information/processes_tasks.rst:60 -#: ../../common_information/processes_tasks.rst:177 +#: ../../../../docs/common_information/processes_tasks.rst:69 +#: ../../../../docs/common_information/processes_tasks.rst:186 msgid "26" msgstr "26" -#: ../../common_information/processes_tasks.rst:60 +#: ../../../../docs/common_information/processes_tasks.rst:69 msgid "Checking lexicographical order of two strings" msgstr "Проверка лексикографической упорядоченности двух строк" -#: ../../common_information/processes_tasks.rst:62 -#: ../../common_information/processes_tasks.rst:179 +#: ../../../../docs/common_information/processes_tasks.rst:71 +#: ../../../../docs/common_information/processes_tasks.rst:188 msgid "27" msgstr "27" -#: ../../common_information/processes_tasks.rst:62 +#: ../../../../docs/common_information/processes_tasks.rst:71 msgid "Counting the number of differing characters between two strings" msgstr "Подсчет числа несовпадающих символов двух строк" -#: ../../common_information/processes_tasks.rst:66 +#: ../../../../docs/common_information/processes_tasks.rst:75 msgid "Second task" msgstr "Вторая задача" -#: ../../common_information/processes_tasks.rst:71 +#: ../../../../docs/common_information/processes_tasks.rst:80 msgid "Broadcast (one to all transfer)" msgstr "Передача от одного всем (broadcast)" -#: ../../common_information/processes_tasks.rst:73 +#: ../../../../docs/common_information/processes_tasks.rst:82 msgid "Reduce (all to one transfer)" msgstr "Передача от всех одному (reduce)" -#: ../../common_information/processes_tasks.rst:75 +#: ../../../../docs/common_information/processes_tasks.rst:84 msgid "Allreduce (all to one and broadcast)" msgstr "Передача от всех одному и рассылка (allreduce)" -#: ../../common_information/processes_tasks.rst:77 +#: ../../../../docs/common_information/processes_tasks.rst:86 msgid "Scatter (one to all transfer)" msgstr "Обобщенная передача от одного всем (scatter)" -#: ../../common_information/processes_tasks.rst:79 +#: ../../../../docs/common_information/processes_tasks.rst:88 msgid "Gather (all to one transfer)" msgstr "Обобщенная передача от всех одному (gather)" -#: ../../common_information/processes_tasks.rst:81 +#: ../../../../docs/common_information/processes_tasks.rst:90 msgid "Line" msgstr "Линейка" -#: ../../common_information/processes_tasks.rst:83 +#: ../../../../docs/common_information/processes_tasks.rst:92 msgid "Ring" msgstr "Кольцо" -#: ../../common_information/processes_tasks.rst:85 +#: ../../../../docs/common_information/processes_tasks.rst:94 msgid "Star" msgstr "Звезда" -#: ../../common_information/processes_tasks.rst:87 +#: ../../../../docs/common_information/processes_tasks.rst:96 msgid "Torus Grid" msgstr "Решетка-тор" -#: ../../common_information/processes_tasks.rst:89 +#: ../../../../docs/common_information/processes_tasks.rst:98 msgid "Hypercube" msgstr "Гиперкуб" -#: ../../common_information/processes_tasks.rst:91 +#: ../../../../docs/common_information/processes_tasks.rst:100 msgid "Horizontal strip scheme - matrix-vector multiplication" msgstr "Ленточная горизонтальная схема - умножение матрицы на вектор" -#: ../../common_information/processes_tasks.rst:93 +#: ../../../../docs/common_information/processes_tasks.rst:102 msgid "Vertical strip scheme - matrix-vector multiplication" msgstr "Ленточная вертикальная схема - умножение матрицы на вектор" -#: ../../common_information/processes_tasks.rst:95 +#: ../../../../docs/common_information/processes_tasks.rst:104 msgid "" "Horizontal strip scheme – partitioning only matrix A - matrix-matrix " "multiplication" -msgstr "Ленточная горизонтальная схема - разбиение только матрицы А - умножение матрицы на матрицу" +msgstr "" +"Ленточная горизонтальная схема - разбиение только матрицы А - умножение " +"матрицы на матрицу" -#: ../../common_information/processes_tasks.rst:97 +#: ../../../../docs/common_information/processes_tasks.rst:106 msgid "" "Horizontal strip scheme A, vertical strip scheme B - matrix-matrix " "multiplication" -msgstr "Ленточная горизонтальная схема А, вертикальное В - умножение матрицы на матрицу" +msgstr "" +"Ленточная горизонтальная схема А, вертикальное В - умножение матрицы на " +"матрицу" -#: ../../common_information/processes_tasks.rst:99 +#: ../../../../docs/common_information/processes_tasks.rst:108 msgid "Gaussian method – horizontal strip scheme" msgstr "Метод Гаусса – ленточная горизонтальная схема" -#: ../../common_information/processes_tasks.rst:101 +#: ../../../../docs/common_information/processes_tasks.rst:110 msgid "Gaussian method – vertical strip scheme" msgstr "Метод Гаусса – ленточная вертикальная схема" -#: ../../common_information/processes_tasks.rst:103 +#: ../../../../docs/common_information/processes_tasks.rst:112 msgid "Gauss-Jordan method" msgstr "Метод Гаусса-Жордана" -#: ../../common_information/processes_tasks.rst:105 +#: ../../../../docs/common_information/processes_tasks.rst:114 msgid "Iterative methods (Jacobi)" msgstr "Итеративные методы (Якоби)" -#: ../../common_information/processes_tasks.rst:107 +#: ../../../../docs/common_information/processes_tasks.rst:116 msgid "Iterative methods (Gauss-Seidel)" msgstr "Итеративные методы (Зейделя)" -#: ../../common_information/processes_tasks.rst:109 +#: ../../../../docs/common_information/processes_tasks.rst:118 msgid "Iterative methods (Simple)" msgstr "Метод простой итерации" -#: ../../common_information/processes_tasks.rst:111 +#: ../../../../docs/common_information/processes_tasks.rst:120 msgid "Bubble sort (odd-even transposition algorithm)" msgstr "Сортировка пузырьком (алгоритм чет-нечетной перестановки)" -#: ../../common_information/processes_tasks.rst:113 +#: ../../../../docs/common_information/processes_tasks.rst:122 msgid "Image smoothing" msgstr "Сглаживание изображения" -#: ../../common_information/processes_tasks.rst:115 +#: ../../../../docs/common_information/processes_tasks.rst:124 msgid "Contrast enhancement" msgstr "Повышение контраста" -#: ../../common_information/processes_tasks.rst:119 +#: ../../../../docs/common_information/processes_tasks.rst:128 msgid "Third task" msgstr "Третья задача" -#: ../../common_information/processes_tasks.rst:124 +#: ../../../../docs/common_information/processes_tasks.rst:133 msgid "" "Dense matrix multiplication. Elements of data type double. Block scheme, " "Cannon's algorithm." -msgstr "Умножение плотных матриц. Элементы типа double. Блочная схема, алгоритм Кэннона." +msgstr "" +"Умножение плотных матриц. Элементы типа double. Блочная схема, алгоритм " +"Кэннона." -#: ../../common_information/processes_tasks.rst:126 +#: ../../../../docs/common_information/processes_tasks.rst:135 msgid "" "Dense matrix multiplication. Elements of data type double. Block scheme, " "Fox's algorithm." -msgstr "Умножение плотных матриц. Элементы типа double. Блочная схема, алгоритм Фокса." +msgstr "" +"Умножение плотных матриц. Элементы типа double. Блочная схема, алгоритм " +"Фокса." -#: ../../common_information/processes_tasks.rst:128 +#: ../../../../docs/common_information/processes_tasks.rst:137 msgid "" "Dense matrix multiplication. Elements of data type double. Strassen's " "algorithm." msgstr "Умножение плотных матриц. Элементы типа double. Алгоритм Штрассена." -#: ../../common_information/processes_tasks.rst:130 +#: ../../../../docs/common_information/processes_tasks.rst:139 msgid "" "Sparse matrix multiplication. Elements of data type double. Matrix " "storage format – row format (CRS)." -msgstr "Умножение разреженных матриц. Элементы типа double. Формат хранения матрицы – строковый (CRS)." +msgstr "" +"Умножение разреженных матриц. Элементы типа double. Формат хранения " +"матрицы – строковый (CRS)." -#: ../../common_information/processes_tasks.rst:132 +#: ../../../../docs/common_information/processes_tasks.rst:141 msgid "" "Sparse matrix multiplication. Elements of data type double. Matrix " "storage format – column format (CCS)." -msgstr "Умножение разреженных матриц. Элементы типа double. Формат хранения матрицы – столбцовый (CCS)." +msgstr "" +"Умножение разреженных матриц. Элементы типа double. Формат хранения " +"матрицы – столбцовый (CCS)." -#: ../../common_information/processes_tasks.rst:134 +#: ../../../../docs/common_information/processes_tasks.rst:143 msgid "Solving systems of linear equations using the conjugate gradient method." msgstr "Решение систем линейных уравнений методом сопряженных градиентов." -#: ../../common_information/processes_tasks.rst:136 +#: ../../../../docs/common_information/processes_tasks.rst:145 msgid "" "Computing multidimensional integrals using a multistep scheme (rectangle " "method)." -msgstr "Вычисление многомерных интегралов с использованием многошаговой схемы (метод прямоугольников)." +msgstr "" +"Вычисление многомерных интегралов с использованием многошаговой схемы " +"(метод прямоугольников)." -#: ../../common_information/processes_tasks.rst:138 +#: ../../../../docs/common_information/processes_tasks.rst:147 msgid "" "Computing multidimensional integrals using a multistep scheme " "(trapezoidal method)." -msgstr "Вычисление многомерных интегралов с использованием многошаговой схемы (метод трапеций)." +msgstr "" +"Вычисление многомерных интегралов с использованием многошаговой схемы " +"(метод трапеций)." -#: ../../common_information/processes_tasks.rst:140 +#: ../../../../docs/common_information/processes_tasks.rst:149 msgid "" "Computing multidimensional integrals using a multistep scheme (Simpson's " "method)." -msgstr "Вычисление многомерных интегралов с использованием многошаговой схемы (метод Симпсона)." +msgstr "" +"Вычисление многомерных интегралов с использованием многошаговой схемы " +"(метод Симпсона)." -#: ../../common_information/processes_tasks.rst:142 +#: ../../../../docs/common_information/processes_tasks.rst:151 msgid "Computing multidimensional integrals using the Monte Carlo method." msgstr "Вычисление многомерных интегралов методом Монте-Карло." -#: ../../common_information/processes_tasks.rst:144 +#: ../../../../docs/common_information/processes_tasks.rst:153 msgid "" "Global search algorithm (Strongin's) for one-dimensional optimization " "problems. Parallelization by characteristics." -msgstr "Алгоритм глобального поиска (Стронгина) для одномерных задач оптимизации. Распараллеливание по характеристикам." +msgstr "" +"Алгоритм глобального поиска (Стронгина) для одномерных задач оптимизации." +" Распараллеливание по характеристикам." -#: ../../common_information/processes_tasks.rst:147 +#: ../../../../docs/common_information/processes_tasks.rst:156 msgid "" "Multistep scheme for solving two-dimensional global optimization " "problems. Parallelization by dividing the search area." -msgstr "Многошаговая схема решения двумерных задач глобальной оптимизации. Распараллеливание путем разделения области поиска." +msgstr "" +"Многошаговая схема решения двумерных задач глобальной оптимизации. " +"Распараллеливание путем разделения области поиска." -#: ../../common_information/processes_tasks.rst:150 +#: ../../../../docs/common_information/processes_tasks.rst:159 msgid "" "Multistep scheme for solving two-dimensional global optimization " "problems. Parallelization by characteristics." -msgstr "Многошаговая схема решения двумерных задач глобальной оптимизации. Распараллеливание по характеристикам." +msgstr "" +"Многошаговая схема решения двумерных задач глобальной оптимизации. " +"Распараллеливание по характеристикам." -#: ../../common_information/processes_tasks.rst:153 +#: ../../../../docs/common_information/processes_tasks.rst:162 msgid "Quick sort with simple merging." msgstr "Быстрая сортировка с простым слиянием." -#: ../../common_information/processes_tasks.rst:155 +#: ../../../../docs/common_information/processes_tasks.rst:164 msgid "Quick sort with odd-even merging (Batcher's method)." msgstr "Быстрая сортировка с четно-нечетным слиянием Бэтчера." -#: ../../common_information/processes_tasks.rst:157 +#: ../../../../docs/common_information/processes_tasks.rst:166 msgid "Shell sort with simple merging." msgstr "Сортировка Шелла с простым слиянием." -#: ../../common_information/processes_tasks.rst:159 +#: ../../../../docs/common_information/processes_tasks.rst:168 msgid "Shell sort with odd-even merging (Batcher's method)." msgstr "Сортировка Шелла с четно-нечетным слиянием Бэтчера." -#: ../../common_information/processes_tasks.rst:161 +#: ../../../../docs/common_information/processes_tasks.rst:170 msgid "Radix sort for integers with simple merging." msgstr "Поразрядная сортировка для целых чисел с простым слиянием." -#: ../../common_information/processes_tasks.rst:163 +#: ../../../../docs/common_information/processes_tasks.rst:172 msgid "Radix sort for integers with odd-even merging (Batcher's method)." msgstr "Поразрядная сортировка для целых чисел с четно-нечетным слиянием Бэтчера." -#: ../../common_information/processes_tasks.rst:165 +#: ../../../../docs/common_information/processes_tasks.rst:174 msgid "Radix sort for floating-point numbers (type double) with simple merging." -msgstr "Поразрядная сортировка для вещественных чисел (тип double) с простым слиянием." +msgstr "" +"Поразрядная сортировка для вещественных чисел (тип double) с простым " +"слиянием." -#: ../../common_information/processes_tasks.rst:167 +#: ../../../../docs/common_information/processes_tasks.rst:176 msgid "" "Radix sort for floating-point numbers (type double) with odd-even merging" " (Batcher's method)." -msgstr "Поразрядная сортировка для вещественных чисел (тип double) с четно-нечетным слиянием Бэтчера." +msgstr "" +"Поразрядная сортировка для вещественных чисел (тип double) с " +"четно-нечетным слиянием Бэтчера." -#: ../../common_information/processes_tasks.rst:169 +#: ../../../../docs/common_information/processes_tasks.rst:178 msgid "" "Shortest path search from one vertex (Dijkstra's algorithm). With CRS " "graphs." -msgstr "Поиск кратчайших путей из одной вершины (алгоритм Дейкстры). С CRS формой хранения графа." +msgstr "" +"Поиск кратчайших путей из одной вершины (алгоритм Дейкстры). С CRS формой" +" хранения графа." -#: ../../common_information/processes_tasks.rst:171 +#: ../../../../docs/common_information/processes_tasks.rst:180 msgid "" "Shortest path search from one vertex (Bellman-Ford algorithm). With CRS " "graphs." -msgstr "Поиск кратчайших путей из одной вершины (алгоритм Беллмана-Форда). С CRS формой хранения графа." +msgstr "" +"Поиск кратчайших путей из одной вершины (алгоритм Беллмана-Форда). С CRS " +"формой хранения графа." -#: ../../common_information/processes_tasks.rst:173 +#: ../../../../docs/common_information/processes_tasks.rst:182 msgid "Convex hull construction – Graham's scan." msgstr "Построение выпуклой оболочки – проход Грэхема." -#: ../../common_information/processes_tasks.rst:175 +#: ../../../../docs/common_information/processes_tasks.rst:184 msgid "Convex hull construction – Jarvis's march." msgstr "Построение выпуклой оболочки – проход Джарвиса." -#: ../../common_information/processes_tasks.rst:177 +#: ../../../../docs/common_information/processes_tasks.rst:186 msgid "Linear image filtering (horizontal partition). Gaussian kernel 3x3." -msgstr "Линейная фильтрация изображений (горизонтальное разбиение). Ядро Гаусса 3x3." +msgstr "" +"Линейная фильтрация изображений (горизонтальное разбиение). Ядро Гаусса " +"3x3." -#: ../../common_information/processes_tasks.rst:179 +#: ../../../../docs/common_information/processes_tasks.rst:188 msgid "Linear image filtering (vertical partition). Gaussian kernel 3x3." msgstr "Линейная фильтрация изображений (вертикальное разбиение). Ядро Гаусса 3x3." -#: ../../common_information/processes_tasks.rst:181 +#: ../../../../docs/common_information/processes_tasks.rst:190 msgid "28" msgstr "28" -#: ../../common_information/processes_tasks.rst:181 +#: ../../../../docs/common_information/processes_tasks.rst:190 msgid "Linear image filtering (block partition). Gaussian kernel 3x3." msgstr "Линейная фильтрация изображений (блочное разбиение). Ядро Гаусса 3x3." -#: ../../common_information/processes_tasks.rst:183 +#: ../../../../docs/common_information/processes_tasks.rst:192 msgid "29" msgstr "29" -#: ../../common_information/processes_tasks.rst:183 +#: ../../../../docs/common_information/processes_tasks.rst:192 msgid "Edge detection in an image using the Sobel operator." msgstr "Выделение ребер на изображении с использованием оператора Собеля." -#: ../../common_information/processes_tasks.rst:185 +#: ../../../../docs/common_information/processes_tasks.rst:194 msgid "30" msgstr "30" -#: ../../common_information/processes_tasks.rst:185 +#: ../../../../docs/common_information/processes_tasks.rst:194 msgid "Contrast enhancement of grayscale image using linear histogram stretching." -msgstr "Повышение контраста полутонового изображения посредством линейной растяжки гистограммы" +msgstr "" +"Повышение контраста полутонового изображения посредством линейной " +"растяжки гистограммы" -#: ../../common_information/processes_tasks.rst:187 +#: ../../../../docs/common_information/processes_tasks.rst:196 msgid "31" msgstr "31" -#: ../../common_information/processes_tasks.rst:187 +#: ../../../../docs/common_information/processes_tasks.rst:196 msgid "" "Labeling components on a binary image (black areas correspond to objects," " white to background)." -msgstr "Маркировка компонент на бинарном изображении (черные области соответствуют объектам, белые – фону)." +msgstr "" +"Маркировка компонент на бинарном изображении (черные области " +"соответствуют объектам, белые – фону)." -#: ../../common_information/processes_tasks.rst:189 +#: ../../../../docs/common_information/processes_tasks.rst:198 msgid "32" msgstr "32" -#: ../../common_information/processes_tasks.rst:189 +#: ../../../../docs/common_information/processes_tasks.rst:198 msgid "Convex hull construction for components of a binary image." msgstr "Построение выпуклой оболочки для компонент бинарного изображения." -#: ../../common_information/processes_tasks.rst:193 +#: ../../../../docs/common_information/processes_tasks.rst:202 msgid "Comments for tasks 2 and 3:" msgstr "Комментарии для 2-ой и 3-й задач:" -#: ../../common_information/processes_tasks.rst:195 +#: ../../../../docs/common_information/processes_tasks.rst:204 msgid "" "MESSAGE PASSING METHODS “You need to implement the specified methods " "using only the Send and Recv functions. The implemented function should " @@ -607,124 +665,133 @@ msgid "" "transmission (broadcast, gather) for at least the following types: " "MPI_INT, MPI_FLOAT, MPI_DOUBLE. In all operations, the transmission " "should be carried out using the ‘tree’ of processes.”" -msgstr "МЕТОДЫ ПЕРЕДАЧИ СООБЩЕНИЙ. Нужно реализовать указанные методы, используя только функции Send и Recv. " -"Реализованная функция должна иметь тот же прототип, что и соответствующая функция MPI. " -"Тестовая программа должна позволять выбрать номер процесса root и выполнять пересылку " -"(рассылку, сбор) массива как минимум следующих типов: MPI_INT, MPI_FLOAT, MPI_DOUBLE. " -"Во всех операциях передача должна выполняться с использованием \"дерева\" процессов." - -#: ../../common_information/processes_tasks.rst:203 -#: ../../common_information/processes_tasks.rst:217 -#: ../../common_information/processes_tasks.rst:230 -#: ../../common_information/processes_tasks.rst:243 -#: ../../common_information/processes_tasks.rst:253 -#: ../../common_information/processes_tasks.rst:263 -#: ../../common_information/processes_tasks.rst:273 +msgstr "" +"МЕТОДЫ ПЕРЕДАЧИ СООБЩЕНИЙ. Нужно реализовать указанные методы, используя " +"только функции Send и Recv. Реализованная функция должна иметь тот же " +"прототип, что и соответствующая функция MPI. Тестовая программа должна " +"позволять выбрать номер процесса root и выполнять пересылку (рассылку, " +"сбор) массива как минимум следующих типов: MPI_INT, MPI_FLOAT, " +"MPI_DOUBLE. Во всех операциях передача должна выполняться с " +"использованием \"дерева\" процессов." + +#: ../../../../docs/common_information/processes_tasks.rst:212 +#: ../../../../docs/common_information/processes_tasks.rst:226 +#: ../../../../docs/common_information/processes_tasks.rst:239 +#: ../../../../docs/common_information/processes_tasks.rst:252 +#: ../../../../docs/common_information/processes_tasks.rst:262 +#: ../../../../docs/common_information/processes_tasks.rst:272 +#: ../../../../docs/common_information/processes_tasks.rst:282 msgid "Comments relevant for:" msgstr "Комментарии относятся к:" -#: ../../common_information/processes_tasks.rst:206 +#: ../../../../docs/common_information/processes_tasks.rst:215 msgid "Variants for task 2" msgstr "Варианты для второй задачи" -#: ../../common_information/processes_tasks.rst:206 +#: ../../../../docs/common_information/processes_tasks.rst:215 msgid "Variants for task 3" msgstr "Варианты для третьей задачи" -#: ../../common_information/processes_tasks.rst:208 -#: ../../common_information/processes_tasks.rst:235 +#: ../../../../docs/common_information/processes_tasks.rst:217 +#: ../../../../docs/common_information/processes_tasks.rst:244 msgid "1 - 5" msgstr "1 - 5" -#: ../../common_information/processes_tasks.rst:208 -#: ../../common_information/processes_tasks.rst:222 -#: ../../common_information/processes_tasks.rst:278 +#: ../../../../docs/common_information/processes_tasks.rst:217 +#: ../../../../docs/common_information/processes_tasks.rst:231 +#: ../../../../docs/common_information/processes_tasks.rst:287 msgid "x" msgstr "x" -#: ../../common_information/processes_tasks.rst:211 +#: ../../../../docs/common_information/processes_tasks.rst:220 msgid "" "DATA COMMUNICATION NETWORK TOPOLOGIES “You need to implement the virtual " "topology specified in the task using MPI capabilities for working with " "communicators and topologies, and ensure the ability to transfer data " "from any selected process to any other process. (Do not use " "MPI_Cart_Create and MPI_Graph_Create)”" -msgstr "ТОПОЛОГИИ СЕТЕЙ ПЕРЕДАЧИ ДАННЫХ. Нужно реализовать указанную в задаче виртуальную топологию, используя возможности MPI " -"по работе с коммуникаторами и топологиями и обеспечить возможность передачи данных " -"от любого выбранного процесса любому другому процессу. " -"(Не используя MPI_Cart_Create и MPI_Graph_Create)" - -#: ../../common_information/processes_tasks.rst:220 -#: ../../common_information/processes_tasks.rst:233 -#: ../../common_information/processes_tasks.rst:246 -#: ../../common_information/processes_tasks.rst:256 -#: ../../common_information/processes_tasks.rst:266 -#: ../../common_information/processes_tasks.rst:276 +msgstr "" +"ТОПОЛОГИИ СЕТЕЙ ПЕРЕДАЧИ ДАННЫХ. Нужно реализовать указанную в задаче " +"виртуальную топологию, используя возможности MPI по работе с " +"коммуникаторами и топологиями и обеспечить возможность передачи данных от" +" любого выбранного процесса любому другому процессу. (Не используя " +"MPI_Cart_Create и MPI_Graph_Create)" + +#: ../../../../docs/common_information/processes_tasks.rst:229 +#: ../../../../docs/common_information/processes_tasks.rst:242 +#: ../../../../docs/common_information/processes_tasks.rst:255 +#: ../../../../docs/common_information/processes_tasks.rst:265 +#: ../../../../docs/common_information/processes_tasks.rst:275 +#: ../../../../docs/common_information/processes_tasks.rst:285 msgid "Varinats for task 2" msgstr "Варианты для второй задачи" -#: ../../common_information/processes_tasks.rst:220 -#: ../../common_information/processes_tasks.rst:233 -#: ../../common_information/processes_tasks.rst:246 -#: ../../common_information/processes_tasks.rst:256 -#: ../../common_information/processes_tasks.rst:266 -#: ../../common_information/processes_tasks.rst:276 +#: ../../../../docs/common_information/processes_tasks.rst:229 +#: ../../../../docs/common_information/processes_tasks.rst:242 +#: ../../../../docs/common_information/processes_tasks.rst:255 +#: ../../../../docs/common_information/processes_tasks.rst:265 +#: ../../../../docs/common_information/processes_tasks.rst:275 +#: ../../../../docs/common_information/processes_tasks.rst:285 msgid "Varinats for task 3" msgstr "Варианты для третьей задачи" -#: ../../common_information/processes_tasks.rst:222 +#: ../../../../docs/common_information/processes_tasks.rst:231 msgid "6 - 10" msgstr "6 - 10" -#: ../../common_information/processes_tasks.rst:225 +#: ../../../../docs/common_information/processes_tasks.rst:234 msgid "" "MATRIX COMPUTATIONS “In the horizontal scheme, the matrix is divided " "among processes by rows. In the vertical scheme, it is divided by " "columns, and in this case, the vector is also divided among processes.”" -msgstr "МАТРИЧНЫЕ ВЫЧИСЛЕНИЯ. В горизонтальной схеме матрица делится между процессами по строкам. " -"В вертикальной - по столбцам, вектор в этом случае также делится между процессами." +msgstr "" +"МАТРИЧНЫЕ ВЫЧИСЛЕНИЯ. В горизонтальной схеме матрица делится между " +"процессами по строкам. В вертикальной - по столбцам, вектор в этом случае" +" также делится между процессами." -#: ../../common_information/processes_tasks.rst:235 +#: ../../../../docs/common_information/processes_tasks.rst:244 msgid "11 - 14" msgstr "11 - 14" -#: ../../common_information/processes_tasks.rst:238 +#: ../../../../docs/common_information/processes_tasks.rst:247 msgid "" "COMPUTER GRAPHICS AND IMAGE PROCESSING “It is assumed that the image is " "given in color or grayscale, with the input data being a one-dimensional " "array. Loading a real image is not required, but is allowed.”" -msgstr "МАШИННАЯ ГРАФИКА И ОБРАБОТКА ИЗОБРАЖЕНИЙ. Считается, что изображение задано в цветном виде или оттенках серого, " -"входные данные - одномерный массив. " -"Загружать реальное изображение не требуется, но и не возбраняется." +msgstr "" +"МАШИННАЯ ГРАФИКА И ОБРАБОТКА ИЗОБРАЖЕНИЙ. Считается, что изображение " +"задано в цветном виде или оттенках серого, входные данные - одномерный " +"массив. Загружать реальное изображение не требуется, но и не " +"возбраняется." -#: ../../common_information/processes_tasks.rst:248 +#: ../../../../docs/common_information/processes_tasks.rst:257 msgid "26 - 27" msgstr "26 - 27" -#: ../../common_information/processes_tasks.rst:248 +#: ../../../../docs/common_information/processes_tasks.rst:257 msgid "24 - 32" msgstr "24 - 32" -#: ../../common_information/processes_tasks.rst:251 +#: ../../../../docs/common_information/processes_tasks.rst:260 msgid "SOLUTION OF A SYSTEM OF LINEAR ALGEBRAIC EQUATIONS" msgstr "РЕШЕНИЕ СИСТЕМЫ ЛИНЕЙНЫХ АЛГЕБРАИЧЕСКИХ УРАВНЕНИЙ" -#: ../../common_information/processes_tasks.rst:258 +#: ../../../../docs/common_information/processes_tasks.rst:267 msgid "15 - 20" msgstr "15 - 20" -#: ../../common_information/processes_tasks.rst:261 +#: ../../../../docs/common_information/processes_tasks.rst:270 msgid "SORT ALGORITHMS" msgstr "АЛГОРИТМЫ СОРТИРОВКИ" -#: ../../common_information/processes_tasks.rst:268 +#: ../../../../docs/common_information/processes_tasks.rst:277 msgid "14 - 21" msgstr "14 - 21" -#: ../../common_information/processes_tasks.rst:271 +#: ../../../../docs/common_information/processes_tasks.rst:280 msgid "GRAPH PROCESSING ALGORITHMS" msgstr "АЛГОРИТМЫ НА ГРАФАХ" -#: ../../common_information/processes_tasks.rst:278 +#: ../../../../docs/common_information/processes_tasks.rst:287 msgid "22 - 23" msgstr "22 - 23" diff --git a/docs/locale/ru/LC_MESSAGES/user_guide/api.po b/docs/locale/ru/LC_MESSAGES/user_guide/api.po index c9413eee7..c5877dc30 100644 --- a/docs/locale/ru/LC_MESSAGES/user_guide/api.po +++ b/docs/locale/ru/LC_MESSAGES/user_guide/api.po @@ -19,7 +19,7 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.17.0\n" +"Generated-By: Babel 2.18.0\n" #: ../../../../docs/user_guide/api.rst:2 msgid "API Reference" @@ -31,15 +31,15 @@ msgstr "Модуль выполнения" #: ../../../../docs/user_guide/api.rst msgid "Functions" -msgstr "Функции" +msgstr "" #: ../../../../docs/user_guide/api.rst msgid "Parameters" -msgstr "Параметры" +msgstr "" #: ../../../../docs/user_guide/api.rst msgid "Returns" -msgstr "Возвращаемые значения" +msgstr "" #: ../../../../docs/user_guide/api.rst:14 msgid "Task Module" @@ -47,23 +47,23 @@ msgstr "Модуль задач" #: ../../../../docs/user_guide/api.rst msgid "Typedefs" -msgstr "Псевдонимы типов" +msgstr "" #: ../../../../docs/user_guide/api.rst msgid "Template Parameters" -msgstr "Параметры шаблона" +msgstr "" #: ../../../../docs/user_guide/api.rst msgid "Enums" -msgstr "Перечисления" +msgstr "" #: ../../../../docs/user_guide/api.rst msgid "Throws" -msgstr "Исключения" +msgstr "" #: ../../../../docs/user_guide/api.rst msgid "Variables" -msgstr "Переменные" +msgstr "" #: ../../../../docs/user_guide/api.rst:20 msgid "Utility Module" diff --git a/docs/locale/ru/LC_MESSAGES/user_guide/build.po b/docs/locale/ru/LC_MESSAGES/user_guide/build.po index bc2a682cf..5a0653bed 100644 --- a/docs/locale/ru/LC_MESSAGES/user_guide/build.po +++ b/docs/locale/ru/LC_MESSAGES/user_guide/build.po @@ -20,7 +20,7 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.17.0\n" +"Generated-By: Babel 2.18.0\n" #: ../../../../docs/user_guide/build.rst:2 msgid "Build the Project with ``CMake``" @@ -102,15 +102,29 @@ msgstr "" "выполнения работы.*" #: ../../../../docs/user_guide/build.rst:42 +msgid "" +"OSH is part of the process-technology set on Linux. It is built by " +"default from the shallow ``3rdparty/openmpi`` source backend together with" +" MPI. A focused example build can be configured as:" +msgstr "" +"OSH входит в набор процессных технологий на Linux. По умолчанию он " +"собирается из shallow-источникового backend ``3rdparty/openmpi`` вместе с" +" MPI. Сфокусированную сборку example можно настроить так:" + +#: ../../../../docs/user_guide/build.rst:51 msgid "**Build the project**:" msgstr "**Построение проекта**:" -#: ../../../../docs/user_guide/build.rst:48 +#: ../../../../docs/user_guide/build.rst:57 msgid "**Run tests**:" msgstr "**Запуск тестов**:" -#: ../../../../docs/user_guide/build.rst:50 +#: ../../../../docs/user_guide/build.rst:59 msgid "Prefer the helper runner described in ``User Guide → CI``." msgstr "" "Рекомендуется использовать вспомогательный раннер, описанный в " "«Инструкция → CI»." + +#: ../../../../docs/user_guide/build.rst:61 +msgid "OSH example on Linux:" +msgstr "Пример OSH на Linux:" diff --git a/docs/locale/ru/LC_MESSAGES/user_guide/ci.po b/docs/locale/ru/LC_MESSAGES/user_guide/ci.po index fa92f17d4..d3eee090e 100644 --- a/docs/locale/ru/LC_MESSAGES/user_guide/ci.po +++ b/docs/locale/ru/LC_MESSAGES/user_guide/ci.po @@ -20,7 +20,7 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.17.0\n" +"Generated-By: Babel 2.18.0\n" #: ../../../../docs/user_guide/ci.rst:2 msgid "Continuous Integration (CI)" @@ -34,15 +34,16 @@ msgstr "Общие сведения" msgid "" "Your pull request must pass all required CI checks before review/merge. " "The pipeline validates formatting and static analysis, builds on all " -"platforms, runs functional tests (threads and MPI), measures performance," -" builds docs, and publishes artifacts (coverage report, docs, " -"scoreboard)." +"platforms, runs functional tests (threads, MPI, and OSH on Linux), " +"measures performance, builds docs, and publishes artifacts (coverage " +"report, docs, scoreboard)." msgstr "" "Ваш pull request должен пройти все обязательные проверки CI перед " "ревью/слиянием. Конвейер проверяет форматирование и статический анализ, " "собирает проект на всех платформах, запускает функциональные тесты " -"(потоки и MPI), измеряет производительность, собирает документацию и " -"публикует артефакты (отчёт по покрытию, документация, табло)." +"(потоки, MPI и OSH на Linux), измеряет производительность, собирает " +"документацию и публикует артефакты (отчёт по покрытию, документация, " +"табло)." #: ../../../../docs/user_guide/ci.rst:9 msgid "High‑level pipeline" @@ -61,12 +62,14 @@ msgid "" "Platform builds and tests (Ubuntu, macOS, Windows) — Ubuntu (GCC/Clang), " "macOS (Clang), Windows (MSVC/Clang‑CL); functional tests via " "``scripts/run_tests.py`` for threads (``--counts 1 2 3 4``; extended ``5 " -"7 11 13``) and processes (MPI, ``--counts 1 2 3 4``)." +"7 11 13``) and processes (MPI/OSH on Linux, MPI on macOS/Windows, " +"``--counts 1 2 3 4``)." msgstr "" "Сборки и тесты на платформах (Ubuntu, macOS, Windows) — Ubuntu " "(GCC/Clang), macOS (Clang), Windows (MSVC/Clang‑CL); функциональные тесты" " через ``scripts/run_tests.py`` для потоков (``--counts 1 2 3 4``; " -"расширенно ``5 7 11 13``) и процессов (MPI, ``--counts 1 2 3 4``)." +"расширенно ``5 7 11 13``) и процессов (MPI/OSH на Linux, MPI на " +"macOS/Windows, ``--counts 1 2 3 4``)." #: ../../../../docs/user_guide/ci.rst:15 msgid "" @@ -150,8 +153,8 @@ msgid "``PPC_NUM_PROC``" msgstr "``PPC_NUM_PROC``" #: ../../../../docs/user_guide/ci.rst:42 -msgid "Number of MPI processes to launch." -msgstr "Количество процессов MPI, которые нужно запустить." +msgid "Number of MPI processes or OSH processing elements to launch." +msgstr "Количество процессов MPI или processing elements OSH для запуска." #: ../../../../docs/user_guide/ci.rst:44 msgid "``PPC_ASAN_RUN``" @@ -178,20 +181,20 @@ msgstr "" #: ../../../../docs/user_guide/ci.rst:50 msgid "" "Execution modes: - ``--running-type=threads`` — shared-memory backends " -"(OpenMP/TBB/std::thread) - ``--running-type=processes`` — MPI tests - " -"``--running-type=performance`` — performance benchmarks (mirrors CI perf " -"job)" +"(OpenMP/TBB/std::thread) - ``--running-type=processes`` — MPI tests, plus" +" OSH tests on Linux - ``--running-type=performance`` — performance " +"benchmarks (mirrors CI perf job)" msgstr "" "Режимы запуска: — ``--running-type=threads`` — backends с общей памятью " -"(OpenMP/TBB/std::thread); — ``--running-type=processes`` — MPI‑тесты; — " -"``--running-type=performance`` — бенчмарки производительности (как в CI " -"perf)." +"(OpenMP/TBB/std::thread); — ``--running-type=processes`` — MPI‑тесты, а " +"также OSH‑тесты на Linux; — ``--running-type=performance`` — " +"бенчмарки производительности (как в CI perf)." #: ../../../../docs/user_guide/ci.rst:55 msgid "Examples:" msgstr "Примеры:" -#: ../../../../docs/user_guide/ci.rst:71 +#: ../../../../docs/user_guide/ci.rst:74 msgid "" "Options: - ``--counts`` runs tests for multiple thread/process counts " "sequentially. - ``--additional-mpi-args`` passes extra launcher flags " @@ -203,11 +206,11 @@ msgstr "" "дополнительные флаги MPI‑ланчеру (например, ``--oversubscribe``); — " "``--verbose`` печатает каждую выполняемую команду." -#: ../../../../docs/user_guide/ci.rst:77 +#: ../../../../docs/user_guide/ci.rst:80 msgid "Coverage and sanitizers locally" msgstr "Санитайзеры и покрытие локально" -#: ../../../../docs/user_guide/ci.rst:78 +#: ../../../../docs/user_guide/ci.rst:81 msgid "" "Sanitizers (Linux): configure with ``-D ENABLE_ADDRESS_SANITIZER=ON`` " "(and optional UB/Leak), run tests with ``PPC_ASAN_RUN=1``." @@ -215,7 +218,7 @@ msgstr "" "Санитайзеры (Linux): конфигурация с ``-D ENABLE_ADDRESS_SANITIZER=ON`` (и" " опционально UB/Leak), запуск тестов с ``PPC_ASAN_RUN=1``." -#: ../../../../docs/user_guide/ci.rst:79 +#: ../../../../docs/user_guide/ci.rst:82 msgid "" "Coverage (Linux/GCC): configure with ``-D USE_COVERAGE=ON``, run tests, " "then generate HTML via ``gcovr`` (see CI ``gcc-build-codecov`` for " @@ -225,11 +228,11 @@ msgstr "" "тестов, затем генерация HTML через ``gcovr`` (см. команду в CI job ``gcc-" "build-codecov``)." -#: ../../../../docs/user_guide/ci.rst:82 +#: ../../../../docs/user_guide/ci.rst:85 msgid "Docs and scoreboard artifacts" msgstr "Артефакты: документация и табло" -#: ../../../../docs/user_guide/ci.rst:83 +#: ../../../../docs/user_guide/ci.rst:86 msgid "" "Docs: run Doxygen first (``doxygen Doxyfile``), then Sphinx EN/RU via " "CMake targets ``docs_gettext``, ``docs_update``, ``docs_html``." @@ -238,7 +241,7 @@ msgstr "" "Sphinx (EN/RU) через цели CMake ``docs_gettext``, ``docs_update``, " "``docs_html``." -#: ../../../../docs/user_guide/ci.rst:84 +#: ../../../../docs/user_guide/ci.rst:87 msgid "" "Scoreboard: generate perf stats (``scripts/run_tests.py --running-" "type=performance``) and build scoreboard target or use ``python3 " @@ -248,11 +251,11 @@ msgstr "" "type=performance``) и соберите цель табло или воспользуйтесь локально " "``python3 scoreboard/main.py``." -#: ../../../../docs/user_guide/ci.rst:87 +#: ../../../../docs/user_guide/ci.rst:90 msgid "Troubleshooting" msgstr "Диагностика и решения" -#: ../../../../docs/user_guide/ci.rst:88 +#: ../../../../docs/user_guide/ci.rst:91 msgid "" "Pre-commit fails: run ``pre-commit run -a`` locally (install with ``pre-" "commit install``) and commit fixes." @@ -260,17 +263,19 @@ msgstr "" "Падает pre-commit: запустите локально ``pre-commit run -a`` " "(предварительно ``pre-commit install``) и закоммитьте исправления." -#: ../../../../docs/user_guide/ci.rst:89 +#: ../../../../docs/user_guide/ci.rst:92 +#, fuzzy msgid "" "Static analysis fails: address clang-tidy comments; do not use " -"``NOLINT``/``IWYU pragma`` in task code; keep OpenMP/TBB/MPI/std::thread " -"APIs in their matching task backend directories." +"``NOLINT``/``IWYU pragma`` in task code; keep " +"OpenMP/TBB/MPI/OSH/std::thread APIs in their matching task backend " +"directories." msgstr "" "Падает статический анализ: поправьте замечания clang-tidy; не используйте" " ``NOLINT``/``IWYU pragma`` в коде задач; держите API " "OpenMP/TBB/MPI/std::thread в соответствующих backend-директориях задач." -#: ../../../../docs/user_guide/ci.rst:90 +#: ../../../../docs/user_guide/ci.rst:93 msgid "" "Tests not found/not running: verify ``settings.json`` enables required " "technologies and tests exist; see :doc:`submit_work`." @@ -278,7 +283,7 @@ msgstr "" "Тесты не находятся/не запускаются: проверьте, что в ``settings.json`` " "включены нужные технологии и тесты существуют; см. :doc:`submit_work`." -#: ../../../../docs/user_guide/ci.rst:91 +#: ../../../../docs/user_guide/ci.rst:94 msgid "" "Time limits exceeded: reduce data sizes; prefer env vars " "(:doc:`environment_variables`) like " @@ -289,7 +294,7 @@ msgstr "" "``PPC_TASK_MAX_TIME``/``PPC_PERF_MAX_TIME``; избегайте " "задержек/случайностей." -#: ../../../../docs/user_guide/ci.rst:92 +#: ../../../../docs/user_guide/ci.rst:95 msgid "" "MPI runs fail locally: set ``PPC_NUM_PROC`` and try ``--additional-mpi-" "args=\\\"--oversubscribe\\\"``." @@ -297,7 +302,15 @@ msgstr "" "Проблемы с локальным запуском MPI: задайте ``PPC_NUM_PROC`` и попробуйте " "``--additional-mpi-args=\"--oversubscribe\"``." -#: ../../../../docs/user_guide/ci.rst:93 +#: ../../../../docs/user_guide/ci.rst:96 +msgid "" +"OSH runs fail locally: verify submodules are initialized and " +"``build/ppc_openmpi/install/bin/oshrun`` exists." +msgstr "" +"Локальный запуск OSH не проходит: проверьте, что submodules " +"инициализированы и существует ``build/ppc_openmpi/install/bin/oshrun``." + +#: ../../../../docs/user_guide/ci.rst:97 msgid "" "Docs build fails: fix RST warnings; run ``doxygen Doxyfile`` before " "Sphinx targets." @@ -305,7 +318,7 @@ msgstr "" "Проблемы со сборкой документации: исправьте предупреждения RST; перед " "целями Sphinx выполните ``doxygen Doxyfile``." -#: ../../../../docs/user_guide/ci.rst:94 +#: ../../../../docs/user_guide/ci.rst:98 msgid "" "Performance job fails: ensure performance tests are enabled and keep " "durations within limits." @@ -313,23 +326,23 @@ msgstr "" "Падает job производительности: убедитесь, что перфтесты включены и " "длительность в пределах лимитов." -#: ../../../../docs/user_guide/ci.rst:97 +#: ../../../../docs/user_guide/ci.rst:101 msgid "Local clang-tidy and gcovr examples" msgstr "Примеры локального clang-tidy и gcovr" -#: ../../../../docs/user_guide/ci.rst:99 +#: ../../../../docs/user_guide/ci.rst:103 msgid "clang-tidy (static analysis):" msgstr "clang-tidy (статический анализ):" -#: ../../../../docs/user_guide/ci.rst:113 +#: ../../../../docs/user_guide/ci.rst:117 msgid "gcovr (coverage, GCC):" msgstr "gcovr (покрытие, GCC):" -#: ../../../../docs/user_guide/ci.rst:141 +#: ../../../../docs/user_guide/ci.rst:145 msgid "Tooling tips (versions and install)" msgstr "Подсказки по инструментам (версии и установка)" -#: ../../../../docs/user_guide/ci.rst:143 +#: ../../../../docs/user_guide/ci.rst:147 msgid "" "clang-tidy version - CI uses clang-tidy 22. Prefer the same locally to " "avoid mismatches. - The helper may be named ``clang-tidy-22`` or ``run-" @@ -340,7 +353,7 @@ msgstr "" "системах помощник может называться ``clang-tidy-22`` или ``run-clang-" "tidy-22``." -#: ../../../../docs/user_guide/ci.rst:147 +#: ../../../../docs/user_guide/ci.rst:151 #, fuzzy msgid "" "Linux - clang-tidy: install from your distro (e.g., ``apt install clang-" @@ -353,7 +366,7 @@ msgstr "" " ``python3 -m pip install gcovr`` либо пакет дистрибутива. GCC: при " "сборке с GCC 14 используйте ``gcov-14`` (как в CI)." -#: ../../../../docs/user_guide/ci.rst:152 +#: ../../../../docs/user_guide/ci.rst:156 msgid "" "macOS - clang-tidy: ``brew install llvm``; binary at ``$(brew " "--prefix)/opt/llvm/bin/clang-tidy``. - Optionally add LLVM to PATH or " @@ -365,7 +378,7 @@ msgstr "" "PATH или вызывайте по полному пути. gcovr: ``python3 -m pip install " "gcovr`` или ``brew install gcovr``." -#: ../../../../docs/user_guide/ci.rst:157 +#: ../../../../docs/user_guide/ci.rst:161 msgid "" "Windows - clang-tidy: install LLVM (Clang) or use ``choco install llvm``;" " ensure ``clang-tidy.exe`` is in PATH. - gcovr: ``py -m pip install " diff --git a/docs/locale/ru/LC_MESSAGES/user_guide/environment.po b/docs/locale/ru/LC_MESSAGES/user_guide/environment.po index 607dd1854..627831569 100644 --- a/docs/locale/ru/LC_MESSAGES/user_guide/environment.po +++ b/docs/locale/ru/LC_MESSAGES/user_guide/environment.po @@ -20,7 +20,7 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.17.0\n" +"Generated-By: Babel 2.18.0\n" #: ../../../../docs/user_guide/environment.rst:2 msgid "Set Up Your Environment" @@ -89,7 +89,8 @@ msgid "The container includes:" msgstr "Контейнер включает:" #: ../../../../docs/user_guide/environment.rst:21 -msgid "Ubuntu environment with gcc-15, CMake, MPI, OpenMP" +#, fuzzy +msgid "Ubuntu environment with gcc-15, CMake, MPI, OSH, OpenMP" msgstr "Окружение Ubuntu с gcc-15, CMake, MPI, OpenMP" #: ../../../../docs/user_guide/environment.rst:22 @@ -168,33 +169,46 @@ msgstr "Дополнительные инструменты (clang-tidy, gcovr)" msgid "" "Install these to match the CI toolchain for static analysis and coverage " "reports." -msgstr "Установите их, чтобы соответствовать инструментам CI для статического анализа и отчётов по покрытию." +msgstr "" +"Установите их, чтобы соответствовать инструментам CI для статического " +"анализа и отчётов по покрытию." #: ../../../../docs/user_guide/environment.rst:64 msgid "Linux (Ubuntu/Debian):" msgstr "Linux (Ubuntu/Debian):" -#: ../../../../docs/user_guide/environment.rst:75 +#: ../../../../docs/user_guide/environment.rst:73 msgid "macOS (Homebrew):" msgstr "macOS (Homebrew):" -#: ../../../../docs/user_guide/environment.rst:83 +#: ../../../../docs/user_guide/environment.rst:81 msgid "Windows:" msgstr "Windows:" -#: ../../../../docs/user_guide/environment.rst:92 +#: ../../../../docs/user_guide/environment.rst:90 msgid "Parallel Programming Technologies" msgstr "Технологии параллельного программирования" -#: ../../../../docs/user_guide/environment.rst:95 +#: ../../../../docs/user_guide/environment.rst:93 msgid "``MPI``" msgstr "``MPI``" -#: ../../../../docs/user_guide/environment.rst:96 +#: ../../../../docs/user_guide/environment.rst:94 +msgid "" +"On Linux, MPI is built from the shallow ``3rdparty/openmpi`` source " +"backend together with OSH. A separate system MPI installation is not " +"required for the Linux course build." +msgstr "" +"На Linux MPI собирается из shallow-источникового backend " +"``3rdparty/openmpi`` вместе с OSH. Отдельная системная установка MPI для " +"сборки курса на Linux не требуется." + +#: ../../../../docs/user_guide/environment.rst:94 +#: ../../../../docs/user_guide/environment.rst:135 msgid "**Windows (MSVC)**:" msgstr "**Windows (MSVC)**:" -#: ../../../../docs/user_guide/environment.rst:98 +#: ../../../../docs/user_guide/environment.rst:96 msgid "" "`Installers link `_. You have to install " @@ -204,20 +218,65 @@ msgstr "" "us/download/details.aspx?id=105289>`_. Вы должны установить 2 файла - " "``msmpisdk.msi`` и ``msmpisetup.exe``." -#: ../../../../docs/user_guide/environment.rst:100 -#: ../../../../docs/user_guide/environment.rst:116 +#: ../../../../docs/user_guide/environment.rst:98 +#: ../../../../docs/user_guide/environment.rst:121 +#: ../../../../docs/user_guide/environment.rst:147 msgid "**Linux (gcc and clang)**:" msgstr "**Linux (gcc and clang)**:" -#: ../../../../docs/user_guide/environment.rst:106 +#: ../../../../docs/user_guide/environment.rst:104 +#: ../../../../docs/user_guide/environment.rst:128 msgid "**MacOS (apple clang)**:" msgstr "**MacOS (apple clang)**:" -#: ../../../../docs/user_guide/environment.rst:113 +#: ../../../../docs/user_guide/environment.rst:111 +msgid "``OSH``" +msgstr "``OSH``" + +#: ../../../../docs/user_guide/environment.rst:112 +msgid "" +"OSH is used for process tasks as a PGAS / one-sided communication model " +"for distributed-memory systems." +msgstr "" +"OSH используется в задачах на процессах как PGAS / one-sided " +"communication model для систем с распределённой памятью." + +#: ../../../../docs/user_guide/environment.rst:119 +msgid "" +"The project builds MPI and OSH from the shallow ``3rdparty/openmpi`` " +"source backend on Linux. The build installs ``mpirun``, ``libmpi``, " +"``liboshmem``, and ``shmem.h`` into the build tree. Open MPI OSH uses the" +" UCX SPML, so Linux needs the UCX development package. macOS and Windows " +"use their system MPI installations; OSH implementations are not built " +"there." +msgstr "" +"На Linux проект собирает MPI и OSH из shallow-источникового backend " +"``3rdparty/openmpi``. Сборка устанавливает ``mpirun``, ``libmpi``, " +"``liboshmem`` и ``shmem.h`` в дерево сборки. Open MPI OSH использует UCX " +"SPML, поэтому Linux нужен development package UCX. macOS и Windows " +"используют системные установки MPI; OSH-реализации там не собираются." + +#: ../../../../docs/user_guide/environment.rst:132 +msgid "OSH is skipped on macOS." +msgstr "OSH на macOS пропускается." + +#: ../../../../docs/user_guide/environment.rst:137 +msgid "Install MS-MPI as described in the MPI section. OSH is skipped on Windows." +msgstr "Установите MS-MPI, как описано в разделе MPI. OSH на Windows пропускается." + +#: ../../../../docs/user_guide/environment.rst:140 +msgid "" +"No separate system ``shmem.h``/``oshcc``/``oshrun`` package is required " +"for the Linux course build." +msgstr "" +"Для сборки курса на Linux не требуется отдельный системный пакет " +"``shmem.h``/``oshcc``/``oshrun``." + +#: ../../../../docs/user_guide/environment.rst:144 msgid "``OpenMP``" msgstr "``OpenMP``" -#: ../../../../docs/user_guide/environment.rst:114 +#: ../../../../docs/user_guide/environment.rst:145 msgid "" "``OpenMP`` is included in ``gcc`` and ``msvc``, but some components " "should be installed additionally:" @@ -226,15 +285,15 @@ msgstr "" "``msvc``, но ряд компонент все равно должны быть установлены " "дополнительно:" -#: ../../../../docs/user_guide/environment.rst:122 +#: ../../../../docs/user_guide/environment.rst:153 msgid "**MacOS (llvm)**:" msgstr "**MacOS (llvm)**:" -#: ../../../../docs/user_guide/environment.rst:130 +#: ../../../../docs/user_guide/environment.rst:162 msgid "``TBB``" msgstr "``TBB``" -#: ../../../../docs/user_guide/environment.rst:131 +#: ../../../../docs/user_guide/environment.rst:163 msgid "" "**Windows (MSVC)**, **Linux (gcc and clang)**, **MacOS (apple clang)**: " "Build as 3rdparty in the current project." @@ -243,10 +302,10 @@ msgstr "" "Данная библиотека строится как внешняя в составе текущего проекта и не " "требует дополнительных операций." -#: ../../../../docs/user_guide/environment.rst:135 +#: ../../../../docs/user_guide/environment.rst:167 msgid "``std::thread``" msgstr "``std::thread``" -#: ../../../../docs/user_guide/environment.rst:136 +#: ../../../../docs/user_guide/environment.rst:168 msgid "``std::thread`` is included in STL libraries." msgstr "``std::thread`` включена в состав STL библиотек." diff --git a/docs/locale/ru/LC_MESSAGES/user_guide/environment_variables.po b/docs/locale/ru/LC_MESSAGES/user_guide/environment_variables.po index 5df539b52..c1fca5227 100644 --- a/docs/locale/ru/LC_MESSAGES/user_guide/environment_variables.po +++ b/docs/locale/ru/LC_MESSAGES/user_guide/environment_variables.po @@ -2,7 +2,8 @@ # Copyright (C) 2025, Learning Process # This file is distributed under the same license as the Parallel # Programming Course package. -# Learning Process Team , 2025. +# Learning Process Team , 2025. # msgid "" msgstr "" @@ -12,19 +13,20 @@ msgstr "" "PO-Revision-Date: 2025-07-27 18:21+0200\n" "Last-Translator: Learning Process Team \n" "Language: ru\n" -"Language-Team: Learning Process Team (gooddoog@student.su, nesterov.alexander@outlook.com)\n" +"Language-Team: Learning Process Team (gooddoog@student.su, " +"nesterov.alexander@outlook.com)\n" "Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && " "n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.17.0\n" +"Generated-By: Babel 2.18.0\n" -#: ../../user_guide/environment_variables.rst:2 +#: ../../../../docs/user_guide/environment_variables.rst:2 msgid "Environment Variables" msgstr "Переменные окружения" -#: ../../user_guide/environment_variables.rst:4 +#: ../../../../docs/user_guide/environment_variables.rst:4 msgid "" "The following environment variables can be used to configure the " "project's runtime behavior:" @@ -32,7 +34,7 @@ msgstr "" "Следующие переменные окружения могут использоваться для настройки " "поведения программы во время выполнения:" -#: ../../user_guide/environment_variables.rst:6 +#: ../../../../docs/user_guide/environment_variables.rst:6 msgid "" "``PPC_NUM_PROC``: Specifies the number of processes to launch. Default: " "``1`` Can be queried from C++ with ``ppc::util::GetNumProc()``." @@ -40,7 +42,7 @@ msgstr "" "``PPC_NUM_PROC``: задаёт количество запускаемых процессов. По умолчанию: " "``1``. Можно получить в C++ через ``ppc::util::GetNumProc()``." -#: ../../user_guide/environment_variables.rst:10 +#: ../../../../docs/user_guide/environment_variables.rst:10 msgid "" "``PPC_NUM_THREADS``: Specifies the number of threads to use. Default: " "``1``" @@ -48,7 +50,7 @@ msgstr "" "``PPC_NUM_THREADS``: задаёт количество используемых потоков. По " "умолчанию: ``1``" -#: ../../user_guide/environment_variables.rst:13 +#: ../../../../docs/user_guide/environment_variables.rst:13 msgid "" "``PPC_ASAN_RUN``: Specifies that application is compiler with sanitizers." " Used by ``scripts/run_tests.py`` to skip ``valgrind`` runs. Default: " @@ -58,7 +60,7 @@ msgstr "" "Используется в ``scripts/run_tests.py`` для пропуска запусков под " "``valgrind``. По умолчанию: ``0``" -#: ../../user_guide/environment_variables.rst:16 +#: ../../../../docs/user_guide/environment_variables.rst:16 msgid "" "``PPC_IGNORE_TEST_TIME_LIMIT``: Specifies that test time limits are " "ignored. Used by ``scripts/run_tests.py`` to disable time limit " @@ -68,14 +70,18 @@ msgstr "" "выполнения тестов игнорируются. Используется в ``scripts/run_tests.py`` " "для отключения контроля ограничений по времени. По умолчанию: ``0``" -#: ../../user_guide/environment_variables.rst:18 +#: ../../../../docs/user_guide/environment_variables.rst:18 msgid "" "``PPC_TASK_MAX_TIME``: Maximum allowed execution time in seconds for " "functional tests. Default: ``1.0``" -msgstr "``PPC_TASK_MAX_TIME``: максимальное допустимое время выполнения (секунды) для функциональных тестов. По умолчанию: ``1.0``" +msgstr "" +"``PPC_TASK_MAX_TIME``: максимальное допустимое время выполнения (секунды)" +" для функциональных тестов. По умолчанию: ``1.0``" -#: ../../user_guide/environment_variables.rst:20 +#: ../../../../docs/user_guide/environment_variables.rst:20 msgid "" "``PPC_PERF_MAX_TIME``: Maximum allowed execution time in seconds for " "performance tests. Default: ``10.0``" -msgstr "``PPC_PERF_MAX_TIME``: максимальное допустимое время выполнения (секунды) для тестов производительности. По умолчанию: ``10.0``" +msgstr "" +"``PPC_PERF_MAX_TIME``: максимальное допустимое время выполнения (секунды)" +" для тестов производительности. По умолчанию: ``10.0``" diff --git a/docs/locale/ru/LC_MESSAGES/user_guide/submit_work.po b/docs/locale/ru/LC_MESSAGES/user_guide/submit_work.po index 64bd96750..44ebd3f1f 100644 --- a/docs/locale/ru/LC_MESSAGES/user_guide/submit_work.po +++ b/docs/locale/ru/LC_MESSAGES/user_guide/submit_work.po @@ -20,7 +20,7 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.17.0\n" +"Generated-By: Babel 2.18.0\n" #: ../../../../docs/user_guide/submit_work.rst:2 msgid "How to create, open, and submit your work" @@ -93,11 +93,12 @@ msgid "``common/include/common.hpp`` — shared type aliases and `BaseTask`:" msgstr "``common/include/common.hpp`` — общие типы и `BaseTask`:" #: ../../../../docs/user_guide/submit_work.rst:31 +#, fuzzy msgid "" "Technology implementations (add only those required by the semester): - " -"Processes (MPI/SEQ): ``seq/include``, ``seq/src``, ``mpi/include``, " -"``mpi/src`` - Threads: ``seq``, ``omp``, ``tbb``, ``stl`` (same " -"include/src split)" +"Processes (MPI/OSH/SEQ): ``seq/include``, ``seq/src``, ``mpi/include``, " +"``mpi/src``, ``osh/include``, ``osh/src`` - Threads: ``seq``, ``omp``, " +"``tbb``, ``stl`` (same include/src split)" msgstr "" "Реализации технологий (добавляйте только нужные в семестре): — Процессы " "(MPI/SEQ): ``seq/include``, ``seq/src``, ``mpi/include``, ``mpi/src`` — " @@ -135,21 +136,21 @@ msgstr "" msgid "Functional tests example:" msgstr "Пример функциональных тестов:" -#: ../../../../docs/user_guide/submit_work.rst:90 +#: ../../../../docs/user_guide/submit_work.rst:91 msgid "Use ``PPC_ID_`` to resolve resources from ``data/`` when needed." msgstr "" "При необходимости используйте ``PPC_ID_`` для доступа к ресурсам" " из ``data/``." -#: ../../../../docs/user_guide/submit_work.rst:92 +#: ../../../../docs/user_guide/submit_work.rst:93 msgid "Performance tests example:" msgstr "Пример тестов производительности:" -#: ../../../../docs/user_guide/submit_work.rst:100 +#: ../../../../docs/user_guide/submit_work.rst:101 msgid "Tips for tests" msgstr "Советы по тестам" -#: ../../../../docs/user_guide/submit_work.rst:101 +#: ../../../../docs/user_guide/submit_work.rst:102 msgid "" "Keep tests deterministic and under time limits; prefer env vars (see " "``User Guide → Environment Variables``) over sleeps." @@ -158,49 +159,49 @@ msgstr "" "используйте переменные окружения (см. «Инструкция → Переменные " "окружения») вместо задержек." -#: ../../../../docs/user_guide/submit_work.rst:102 +#: ../../../../docs/user_guide/submit_work.rst:103 msgid "Use ``PPC_ID_`` to access files from ``data/``." msgstr "Используйте ``PPC_ID_`` для доступа к файлам из ``data/``." -#: ../../../../docs/user_guide/submit_work.rst:103 +#: ../../../../docs/user_guide/submit_work.rst:104 msgid "" "Cover edge cases in functional tests; add focused performance tests for " "enabled implementations." msgstr "" -"Покрывайте крайние случаи в функциональных тестах; добавьте сфокусированные " -"перфтесты для включенных реализаций." +"Покрывайте крайние случаи в функциональных тестах; добавьте " +"сфокусированные перфтесты для включенных реализаций." -#: ../../../../docs/user_guide/submit_work.rst:105 +#: ../../../../docs/user_guide/submit_work.rst:106 msgid "``data/`` — optional input files for tests (e.g., images)." msgstr "``data/`` — опциональные входные файлы для тестов (например, изображения)." -#: ../../../../docs/user_guide/submit_work.rst:106 +#: ../../../../docs/user_guide/submit_work.rst:107 msgid "``settings.json`` — enable required technologies for your semester, e.g.:" msgstr "" "``settings.json`` — включение необходимых технологий для вашего семестра," " например:" -#: ../../../../docs/user_guide/submit_work.rst:112 +#: ../../../../docs/user_guide/submit_work.rst:113 msgid "``info.json`` — student metadata used in automation (scoreboard, macros):" msgstr "``info.json`` — данные студента для автоматизации (scoreboard, макросы):" -#: ../../../../docs/user_guide/submit_work.rst:119 +#: ../../../../docs/user_guide/submit_work.rst:120 msgid "Build and local run" msgstr "Сборка и локальный запуск" -#: ../../../../docs/user_guide/submit_work.rst:120 +#: ../../../../docs/user_guide/submit_work.rst:121 msgid "Configure and build:" msgstr "Конфигурация и сборка:" -#: ../../../../docs/user_guide/submit_work.rst:127 +#: ../../../../docs/user_guide/submit_work.rst:128 msgid "Run tests via helper:" msgstr "Запуск тестов через вспомогательный скрипт:" -#: ../../../../docs/user_guide/submit_work.rst:138 +#: ../../../../docs/user_guide/submit_work.rst:139 msgid "Executables (where to find tests)" msgstr "Исполняемые файлы (где искать тесты)" -#: ../../../../docs/user_guide/submit_work.rst:139 +#: ../../../../docs/user_guide/submit_work.rst:140 msgid "" "``build/bin`` (or ``install/bin``): - ``core_func_tests`` — core library " "tests first - ``ppc_func_tests`` — functional tests for all " @@ -212,7 +213,7 @@ msgstr "" "``ppc_func_tests`` — функциональные тесты для всех задач/технологий - " "``ppc_perf_tests`` — тесты производительности для всех задач/технологий" -#: ../../../../docs/user_guide/submit_work.rst:144 +#: ../../../../docs/user_guide/submit_work.rst:145 msgid "" "The runner applies gtest filters automatically to select technology " "suites." @@ -220,23 +221,24 @@ msgstr "" "Runner автоматически применяет gtest‑фильтры для выбора наборов тестов по" " технологиям." -#: ../../../../docs/user_guide/submit_work.rst:147 +#: ../../../../docs/user_guide/submit_work.rst:148 msgid "Pull Request" msgstr "Pull Request" -#: ../../../../docs/user_guide/submit_work.rst:148 +#: ../../../../docs/user_guide/submit_work.rst:149 msgid "Title format (example):" msgstr "Формат заголовка (пример):" -#: ../../../../docs/user_guide/submit_work.rst:150 +#: ../../../../docs/user_guide/submit_work.rst:151 +#, fuzzy msgid "" -"``<Фамилия Имя>. Технология . <Название задачи>. Вариант " -".``" +"``<Фамилия Имя>. Технология . <Название задачи>. Вариант" +" .``" msgstr "" "``<Фамилия Имя>. Технология . <Название задачи>. Вариант " ".``" -#: ../../../../docs/user_guide/submit_work.rst:152 +#: ../../../../docs/user_guide/submit_work.rst:153 msgid "" "Description should include: - Полное описание задачи; номер варианта; " "используемая технология - Краткое описание реализации и отчёта - Чек-лист" @@ -250,59 +252,59 @@ msgstr "" "функциональные/перф‑тесты ок, ветка названа как директория задачи, " "достоверность сведений)." -#: ../../../../docs/user_guide/submit_work.rst:160 +#: ../../../../docs/user_guide/submit_work.rst:159 msgid "PR checklist template (body)" msgstr "Шаблон PR (чек‑лист)" -#: ../../../../docs/user_guide/submit_work.rst:208 +#: ../../../../docs/user_guide/submit_work.rst:182 msgid "Common pitfalls (read before pushing)" msgstr "Частые ошибки (прочтите перед отправкой)" -#: ../../../../docs/user_guide/submit_work.rst:209 +#: ../../../../docs/user_guide/submit_work.rst:183 msgid "Wrong folder/branch name. Must be ``__`` everywhere." msgstr "" "Неверное имя папки/ветки. Должно быть ``<фамилия>_<инициал>_<краткое>`` " "везде." -#: ../../../../docs/user_guide/submit_work.rst:210 +#: ../../../../docs/user_guide/submit_work.rst:184 msgid "Missing or wrong ``GetStaticTypeOfTask`` value for a technology." msgstr "Отсутствует или неверное значение ``GetStaticTypeOfTask`` для технологии." -#: ../../../../docs/user_guide/submit_work.rst:211 +#: ../../../../docs/user_guide/submit_work.rst:185 msgid "Tests rely on randomness or sleeps instead of env time limits." msgstr "" "Тесты зависят от случайности или задержек вместо лимитов по времени " "окружения." -#: ../../../../docs/user_guide/submit_work.rst:212 +#: ../../../../docs/user_guide/submit_work.rst:186 msgid "``settings.json`` doesn’t enable a required technology — tests won’t run." msgstr "В ``settings.json`` не включена нужная технология — тесты не запустятся." -#: ../../../../docs/user_guide/submit_work.rst:213 +#: ../../../../docs/user_guide/submit_work.rst:187 msgid "Namespace doesn’t match the folder name and collides with others." msgstr "Namespace не соответствует имени папки и конфликтует с другими." -#: ../../../../docs/user_guide/submit_work.rst:214 +#: ../../../../docs/user_guide/submit_work.rst:188 msgid "Performance tests count or naming deviates from the required patterns." msgstr "Количество или именование перфтестов отклоняется от требуемых шаблонов." -#: ../../../../docs/user_guide/submit_work.rst:217 +#: ../../../../docs/user_guide/submit_work.rst:191 msgid "Useful examples to reference" msgstr "Полезные примеры для ориентирования" -#: ../../../../docs/user_guide/submit_work.rst:218 +#: ../../../../docs/user_guide/submit_work.rst:192 msgid "" -"Processes: ``tasks/example/processes/t1``, ``tasks/example/processes/t2``, " -"``tasks/example/processes/t3``" +"Processes: ``tasks/example/processes/t1``, " +"``tasks/example/processes/t2``, ``tasks/example/processes/t3``" msgstr "" -"Процессы: ``tasks/example/processes/t1``, ``tasks/example/processes/t2``, " -"``tasks/example/processes/t3``" +"Процессы: ``tasks/example/processes/t1``, ``tasks/example/processes/t2``," +" ``tasks/example/processes/t3``" -#: ../../../../docs/user_guide/submit_work.rst:219 +#: ../../../../docs/user_guide/submit_work.rst:193 msgid "Threads: ``tasks/example/threads``" msgstr "Потоки: ``tasks/example/threads``" -#: ../../../../docs/user_guide/submit_work.rst:221 +#: ../../../../docs/user_guide/submit_work.rst:195 msgid "" "Work from your fork in a dedicated branch (not ``master``). Branch name " "must match your task folder." @@ -310,11 +312,11 @@ msgstr "" "Работайте из своего форка в отдельной ветке (не ``master``). Имя ветки " "должно совпадать с именем папки задачи." -#: ../../../../docs/user_guide/submit_work.rst:224 +#: ../../../../docs/user_guide/submit_work.rst:198 msgid "Notes" msgstr "Примечания" -#: ../../../../docs/user_guide/submit_work.rst:225 +#: ../../../../docs/user_guide/submit_work.rst:199 msgid "" "All classes should live in a unique namespace (e.g., " "``__``)." @@ -322,7 +324,7 @@ msgstr "" "Все классы должны находиться в уникальном пространстве имён (например, " "``<фамилия>_<инициал>_<краткое>``)." -#: ../../../../docs/user_guide/submit_work.rst:226 +#: ../../../../docs/user_guide/submit_work.rst:200 msgid "" "Keep tests deterministic and within time limits; prefer env vars over " "sleeps." @@ -330,7 +332,7 @@ msgstr "" "Делайте тесты детерминированными и укладывающимися в лимиты времени; " "используйте переменные окружения вместо задержек." -#: ../../../../docs/user_guide/submit_work.rst:227 +#: ../../../../docs/user_guide/submit_work.rst:201 msgid "" "Follow code style (clang-format/clang-tidy), and run pre-commit hooks " "locally." diff --git a/docs/user_guide/build.rst b/docs/user_guide/build.rst index 367ffa60a..3f58f7fea 100644 --- a/docs/user_guide/build.rst +++ b/docs/user_guide/build.rst @@ -39,6 +39,16 @@ Navigate to the project root. *A corresponding flag can be omitted if it's not needed.* + OSH is part of the process-technology set on Linux. It is built by default + from the shallow ``3rdparty/openmpi`` source backend together with MPI. A + focused example build can be configured as: + + .. code-block:: bash + + git submodule update --init --recursive + cmake -S . -B build-osh -DPPC_BUILD_COMPONENTS=ON -DPPC_TASKS=example + cmake --build build-osh --parallel + 2. **Build the project**: .. code-block:: bash @@ -48,3 +58,10 @@ Navigate to the project root. 3. **Run tests**: Prefer the helper runner described in ``User Guide → CI``. + + OSH example on Linux: + + .. code-block:: bash + + PPC_NUM_THREADS=1 scripts/run_tests.py --running-type=processes --counts 2 --build-dir build-osh + PPC_NUM_THREADS=1 PPC_NUM_PROC=2 ./build-osh/ppc_openmpi/install/bin/oshrun -np 2 ./build-osh/bin/ppc_func_tests --gtest_filter="*_osh_*:*OSHEnabled*" diff --git a/docs/user_guide/ci.rst b/docs/user_guide/ci.rst index 31f5eb33b..a2df70298 100644 --- a/docs/user_guide/ci.rst +++ b/docs/user_guide/ci.rst @@ -3,14 +3,14 @@ Continuous Integration (CI) Overview -------- -Your pull request must pass all required CI checks before review/merge. The pipeline validates formatting and static analysis, builds on all platforms, runs functional tests (threads and MPI), measures performance, builds docs, and publishes artifacts (coverage report, docs, scoreboard). +Your pull request must pass all required CI checks before review/merge. The pipeline validates formatting and static analysis, builds on all platforms, runs functional tests (threads, MPI, and OSH on Linux), measures performance, builds docs, and publishes artifacts (coverage report, docs, scoreboard). High‑level pipeline ------------------- - Pre-commit checks (fast) — runs repository hooks on changed files; fix locally via ``pre-commit run -a``. -- Platform builds and tests (Ubuntu, macOS, Windows) — Ubuntu (GCC/Clang), macOS (Clang), Windows (MSVC/Clang‑CL); functional tests via ``scripts/run_tests.py`` for threads (``--counts 1 2 3 4``; extended ``5 7 11 13``) and processes (MPI, ``--counts 1 2 3 4``). +- Platform builds and tests (Ubuntu, macOS, Windows) — Ubuntu (GCC/Clang), macOS (Clang), Windows (MSVC/Clang‑CL); functional tests via ``scripts/run_tests.py`` for threads (``--counts 1 2 3 4``; extended ``5 7 11 13``) and processes (MPI/OSH on Linux, MPI on macOS/Windows, ``--counts 1 2 3 4``). - Sanitizers (Ubuntu/Clang) — Address/UB/Leak; tests use ``PPC_ASAN_RUN=1`` to skip valgrind. @@ -39,7 +39,7 @@ Use the ``scripts/run_tests.py`` helper. Common environment variables: Number of threads (also exported as ``OMP_NUM_THREADS``). ``PPC_NUM_PROC`` - Number of MPI processes to launch. + Number of MPI processes or OSH processing elements to launch. ``PPC_ASAN_RUN`` Set to ``1`` when sanitizers are enabled to skip ``valgrind`` runs (default ``0``). @@ -49,7 +49,7 @@ Use the ``scripts/run_tests.py`` helper. Common environment variables: Execution modes: - ``--running-type=threads`` — shared-memory backends (OpenMP/TBB/std::thread) -- ``--running-type=processes`` — MPI tests +- ``--running-type=processes`` — MPI tests, plus OSH tests on Linux - ``--running-type=performance`` — performance benchmarks (mirrors CI perf job) Examples: @@ -62,9 +62,12 @@ Examples: # Threads (functional) scripts/run_tests.py --running-type=threads --counts 1 2 4 - # MPI (functional) + # MPI and OSH (functional) scripts/run_tests.py --running-type=processes --counts 2 4 + # OSH only, direct launcher form on Linux + ./build/ppc_openmpi/install/bin/oshrun -np 2 ./build/bin/ppc_func_tests --gtest_filter="*_osh_*:*OSHEnabled*" + # Performance (benchmarks) scripts/run_tests.py --running-type=performance @@ -86,10 +89,11 @@ Docs and scoreboard artifacts Troubleshooting --------------- - Pre-commit fails: run ``pre-commit run -a`` locally (install with ``pre-commit install``) and commit fixes. -- Static analysis fails: address clang-tidy comments; do not use ``NOLINT``/``IWYU pragma`` in task code; keep OpenMP/TBB/MPI/std::thread APIs in their matching task backend directories. +- Static analysis fails: address clang-tidy comments; do not use ``NOLINT``/``IWYU pragma`` in task code; keep OpenMP/TBB/MPI/OSH/std::thread APIs in their matching task backend directories. - Tests not found/not running: verify ``settings.json`` enables required technologies and tests exist; see :doc:`submit_work`. - Time limits exceeded: reduce data sizes; prefer env vars (:doc:`environment_variables`) like ``PPC_TASK_MAX_TIME``/``PPC_PERF_MAX_TIME``; avoid sleeps/randomness. - MPI runs fail locally: set ``PPC_NUM_PROC`` and try ``--additional-mpi-args=\"--oversubscribe\"``. +- OSH runs fail locally: verify submodules are initialized and ``build/ppc_openmpi/install/bin/oshrun`` exists. - Docs build fails: fix RST warnings; run ``doxygen Doxyfile`` before Sphinx targets. - Performance job fails: ensure performance tests are enabled and keep durations within limits. diff --git a/docs/user_guide/environment.rst b/docs/user_guide/environment.rst index a8a653a38..b9d378bb7 100644 --- a/docs/user_guide/environment.rst +++ b/docs/user_guide/environment.rst @@ -18,7 +18,7 @@ The easiest way to set up your development environment is using the provided ``. 3. VS Code will automatically build the container with all dependencies pre-installed 4. The container includes: - - Ubuntu environment with gcc-15, CMake, MPI, OpenMP + - Ubuntu environment with gcc-15, CMake, MPI, OSH, OpenMP - Pre-configured C++ and Python development tools - All project dependencies ready to use @@ -91,6 +91,10 @@ Parallel Programming Technologies ``MPI`` ~~~~~~~ +On Linux, MPI is built from the shallow ``3rdparty/openmpi`` source backend +together with OSH. A separate system MPI installation is not required for the +Linux course build. + - **Windows (MSVC)**: `Installers link `_. You have to install ``msmpisdk.msi`` and ``msmpisetup.exe``. @@ -99,13 +103,41 @@ Parallel Programming Technologies .. code-block:: bash - sudo apt install -y mpich openmpi-bin libopenmpi-dev + sudo apt install -y autoconf automake flex libtool make perl bash - **MacOS (apple clang)**: .. code-block:: bash - brew install open-mpi + brew install mpich + +``OSH`` +~~~~~~~~~~~~~ +OSH is used for process tasks as a PGAS / one-sided communication model +for distributed-memory systems. + +The project builds MPI and OSH from the shallow ``3rdparty/openmpi`` source +backend on Linux. The build installs ``mpirun``, ``libmpi``, ``liboshmem``, +and ``shmem.h`` into the build tree. Open MPI OSH uses the UCX SPML, so Linux +needs the UCX development package. macOS and Windows use their system MPI +installations; OSH implementations are not built there. + +- **Linux (gcc and clang)**: + + .. code-block:: bash + + sudo apt install -y autoconf automake flex libtool libucx-dev make perl pkg-config zlib1g-dev bash + +- **MacOS (apple clang)**: + + OSH is skipped on macOS. + +- **Windows (MSVC)**: + + Install MS-MPI as described in the MPI section. OSH is skipped on Windows. + +No separate system ``shmem.h``/``oshcc``/``oshrun`` package is required for the +Linux course build. ``OpenMP`` ~~~~~~~~~~ diff --git a/docs/user_guide/submit_work.rst b/docs/user_guide/submit_work.rst index c7462e467..abdf2c372 100644 --- a/docs/user_guide/submit_work.rst +++ b/docs/user_guide/submit_work.rst @@ -29,7 +29,7 @@ Create a folder ``tasks/__/`` with the following layout: using BaseTask = ppc::task::Task; - Technology implementations (add only those required by the semester): - - Processes (MPI/SEQ): ``seq/include``, ``seq/src``, ``mpi/include``, ``mpi/src`` + - Processes (MPI/OSH/SEQ): ``seq/include``, ``seq/src``, ``mpi/include``, ``mpi/src``, ``osh/include``, ``osh/src`` - Threads: ``seq``, ``omp``, ``tbb``, ``stl`` (same include/src split) Each implementation defines a class derived from ``BaseTask`` and @@ -39,7 +39,7 @@ Create a folder ``tasks/__/`` with the following layout: .. code-block:: cpp static constexpr ppc::task::TypeOfTask GetStaticTypeOfTask() { return ppc::task::TypeOfTask::kMPI; } - // or kSEQ/kOMP/kTBB/kSTL as appropriate + // or kOSH/kSEQ/kOMP/kTBB/kSTL as appropriate Minimal skeleton (example for SEQ): @@ -83,6 +83,7 @@ Functional tests example: const auto kTasks = std::tuple_cat( ppc::util::AddFuncTask(params, PPC_SETTINGS_), + ppc::util::AddFuncTask(params, PPC_SETTINGS_), ppc::util::AddFuncTask(params, PPC_SETTINGS_) ); INSTANTIATE_TEST_SUITE_P(..., MyFuncTests, ppc::util::ExpandToValues(kTasks), ...); @@ -93,7 +94,7 @@ Performance tests example: .. code-block:: cpp - const auto kAllPerfTasks = ppc::util::MakeAllPerfTasks(PPC_SETTINGS_); + const auto kAllPerfTasks = ppc::util::MakeAllPerfTasks(PPC_SETTINGS_); INSTANTIATE_TEST_SUITE_P(..., MyPerfTests, ppc::util::TupleToGTestValues(kAllPerfTasks), ...); Tips for tests @@ -107,7 +108,7 @@ Tips for tests .. code-block:: json - { "tasks_type": "processes", "tasks": { "mpi": "enabled", "seq": "enabled" } } + { "tasks_type": "processes", "tasks": { "mpi": "enabled", "osh": "enabled", "seq": "enabled" } } - ``info.json`` — student metadata used in automation (scoreboard, macros): @@ -147,7 +148,7 @@ Pull Request ------------ - Title format (example): - ``<Фамилия Имя>. Технология . <Название задачи>. Вариант .`` + ``<Фамилия Имя>. Технология . <Название задачи>. Вариант .`` - Description should include: - Полное описание задачи; номер варианта; используемая технология @@ -162,7 +163,7 @@ PR checklist template (body) ## Description - Task: - Variant: - - Technology: + - Technology: - Summary: Brief description of your implementation and report --- diff --git a/modules/CMakeLists.txt b/modules/CMakeLists.txt index d7e6fd76a..f2793db12 100644 --- a/modules/CMakeLists.txt +++ b/modules/CMakeLists.txt @@ -18,6 +18,14 @@ foreach(subd ${subdirs}) list(APPEND FUNC_TESTS_SOURCE_FILES ${TMP_FUNC_TESTS_SOURCE_FILES}) endforeach() +if(ppc_osh_supported) + list(REMOVE_ITEM LIB_SOURCE_FILES + "${CMAKE_CURRENT_SOURCE_DIR}/util/src/osh_runtime_disabled.cpp") +else() + list(REMOVE_ITEM LIB_SOURCE_FILES + "${CMAKE_CURRENT_SOURCE_DIR}/util/src/osh_runtime.cpp") +endif() + project(${exec_func_lib}) add_library(${exec_func_lib} STATIC ${LIB_SOURCE_FILES}) set_target_properties(${exec_func_lib} PROPERTIES LINKER_LANGUAGE CXX) @@ -41,6 +49,10 @@ foreach( cmake_language(CALL "ppc_link_${link}" ${exec_func_lib}) endforeach() +if(ppc_osh_supported) + ppc_link_osh(${exec_func_lib}) +endif() + add_executable(${exec_func_tests} ${FUNC_TESTS_SOURCE_FILES}) target_link_libraries(${exec_func_tests} PUBLIC ${exec_func_lib}) diff --git a/modules/runners/src/runners.cpp b/modules/runners/src/runners.cpp index 598fef0ff..b5b741059 100644 --- a/modules/runners/src/runners.cpp +++ b/modules/runners/src/runners.cpp @@ -17,6 +17,7 @@ #include #include "oneapi/tbb/global_control.h" +#include "util/include/osh_runtime.hpp" #include "util/include/util.hpp" namespace ppc::runners { @@ -170,6 +171,15 @@ int Init(int argc, char **argv) { const int status = RunAllTestsSafely(); + if (ppc::util::OshRuntime::IsInitialized()) { + ppc::util::OshRuntime::Finalize(); + } + + int mpi_finalized = 0; + if (MPI_Finalized(&mpi_finalized) == MPI_SUCCESS && mpi_finalized != 0) { + return status; + } + const int finalize_res = MPI_Finalize(); if (finalize_res != MPI_SUCCESS) { std::cerr << std::format("[ ERROR ] MPI_Finalize failed with code {}", finalize_res) << '\n'; diff --git a/modules/task/include/task.hpp b/modules/task/include/task.hpp index b6eaf59f0..98a535184 100644 --- a/modules/task/include/task.hpp +++ b/modules/task/include/task.hpp @@ -25,6 +25,8 @@ enum class TypeOfTask : uint8_t { kALL, /// MPI (Message Passing Interface) kMPI, + /// OSH (PGAS / one-sided distributed-memory communication) + kOSH, /// OpenMP (Open Multi-Processing) kOMP, /// Sequential implementation @@ -38,10 +40,11 @@ enum class TypeOfTask : uint8_t { }; using TaskMapping = std::pair; -using TaskMappingArray = std::array; +using TaskMappingArray = std::array; inline constexpr TaskMappingArray kTaskTypeMappings = {{{TypeOfTask::kALL, "all"}, {TypeOfTask::kMPI, "mpi"}, + {TypeOfTask::kOSH, "osh"}, {TypeOfTask::kOMP, "omp"}, {TypeOfTask::kSEQ, "seq"}, {TypeOfTask::kSTL, "stl"}, diff --git a/modules/task/tests/task_tests.cpp b/modules/task/tests/task_tests.cpp index a2755468c..75d11c383 100644 --- a/modules/task/tests/task_tests.cpp +++ b/modules/task/tests/task_tests.cpp @@ -185,7 +185,7 @@ TEST(TaskTest, GetStringTaskTypeUnknownTypeWithValidFile) { ScopedFile cleaner(path); std::ofstream file(path); file - << R"({"tasks": {"all": "enabled", "stl": "enabled", "omp": "enabled", "mpi": "enabled", "tbb": "enabled", "seq": "enabled"}})"; + << R"({"tasks": {"all": "enabled", "stl": "enabled", "omp": "enabled", "mpi": "enabled", "osh": "enabled", "tbb": "enabled", "seq": "enabled"}})"; file.close(); EXPECT_NO_THROW({ GetStringTaskType(TypeOfTask::kUnknown, path); }); } @@ -204,13 +204,14 @@ TEST(TaskTest, GetStringTaskTypeEachTypeWithValidFile) { ScopedFile cleaner(path); std::ofstream file(path); file - << R"({"tasks": {"all": "enabled", "stl": "enabled", "omp": "enabled", "mpi": "enabled", "tbb": "enabled", "seq": "enabled"}})"; + << R"({"tasks": {"all": "enabled", "stl": "enabled", "omp": "enabled", "mpi": "enabled", "osh": "enabled", "tbb": "enabled", "seq": "enabled"}})"; file.close(); EXPECT_EQ(GetStringTaskType(TypeOfTask::kALL, path), "all_enabled"); EXPECT_EQ(GetStringTaskType(TypeOfTask::kSTL, path), "stl_enabled"); EXPECT_EQ(GetStringTaskType(TypeOfTask::kOMP, path), "omp_enabled"); EXPECT_EQ(GetStringTaskType(TypeOfTask::kMPI, path), "mpi_enabled"); + EXPECT_EQ(GetStringTaskType(TypeOfTask::kOSH, path), "osh_enabled"); EXPECT_EQ(GetStringTaskType(TypeOfTask::kTBB, path), "tbb_enabled"); EXPECT_EQ(GetStringTaskType(TypeOfTask::kSEQ, path), "seq_enabled"); } diff --git a/modules/util/include/func_test_util.hpp b/modules/util/include/func_test_util.hpp index b1e4d44bd..0d8fe20aa 100644 --- a/modules/util/include/func_test_util.hpp +++ b/modules/util/include/func_test_util.hpp @@ -13,6 +13,7 @@ #include #include "task/include/task.hpp" +#include "util/include/osh_runtime.hpp" #include "util/include/task_descriptor_util.hpp" #include "util/include/util.hpp" @@ -80,8 +81,8 @@ class BaseRunFuncTests : public ::testing::TestWithParam &test_param) { const auto &descriptor = GetTaskDescriptor(test_param); - return IsTestDisabled(descriptor) || ShouldSkipNonMpiTask(descriptor); + return IsTestDisabled(descriptor) || ShouldSkipProcessTask(descriptor); } /// @brief Initializes task instance and runs it through the full pipeline. @@ -119,7 +120,7 @@ class BaseRunFuncTests : public ::testing::TestWithParamValidation()); - SynchronizeMpiRanks(); + SynchronizeTaskRanks(task_->GetDynamicTypeOfTask()); EXPECT_TRUE(task_->PreProcessing()); } @@ -134,6 +135,14 @@ class BaseRunFuncTests : public ::testing::TestWithParam task_; + + static void SynchronizeTaskRanks(ppc::task::TypeOfTask type) { + if (IsOshTaskType(type)) { + ppc::util::OshRuntime::BarrierAll(); + return; + } + SynchronizeMpiRanks(); + } }; namespace detail { diff --git a/modules/util/include/osh_runtime.hpp b/modules/util/include/osh_runtime.hpp new file mode 100644 index 000000000..5cec8d903 --- /dev/null +++ b/modules/util/include/osh_runtime.hpp @@ -0,0 +1,18 @@ +#pragma once + +namespace ppc::util { + +class OshRuntime { + public: + OshRuntime() = delete; + + static void EnsureInitialized(); + static void Finalize(); + static bool IsInitialized(); + static int MyPe(); + static int NumPes(); + static void BarrierAll(); + static void GlobalExit(int status); +}; + +} // namespace ppc::util diff --git a/modules/util/include/perf_test_util.hpp b/modules/util/include/perf_test_util.hpp index e4c4b29d7..ea4022f3d 100644 --- a/modules/util/include/perf_test_util.hpp +++ b/modules/util/include/perf_test_util.hpp @@ -21,6 +21,7 @@ #include #include "task/include/task.hpp" +#include "util/include/osh_runtime.hpp" #include "util/include/task_descriptor_util.hpp" #include "util/include/util.hpp" @@ -67,6 +68,14 @@ inline std::function MakeTechnologyTimer(ppc::task::TypeOfTask task_ty if (task_type == ppc::task::TypeOfTask::kMPI || task_type == ppc::task::TypeOfTask::kALL) { return [] -> double { return GetTimeMPI(); }; } + if (task_type == ppc::task::TypeOfTask::kOSH) { + const auto t0 = std::chrono::high_resolution_clock::now(); + return [t0] -> double { + const auto now = std::chrono::high_resolution_clock::now(); + const auto ns = std::chrono::duration_cast(now - t0).count(); + return static_cast(ns) * 1e-9; + }; + } if (task_type == ppc::task::TypeOfTask::kOMP) { return [] -> double { return omp_get_wtime(); }; } @@ -94,6 +103,14 @@ inline double MaxElapsedTimeAcrossMpiRanks(double elapsed, ppc::task::TypeOfTask return max_elapsed; } +inline void SynchronizeTaskRanks(ppc::task::TypeOfTask task_type) { + if (task_type == ppc::task::TypeOfTask::kOSH) { + ppc::util::OshRuntime::BarrierAll(); + return; + } + SynchronizeMpiRanks(); +} + inline void SkipBenchmarkWithError(benchmark::State &state, const char *message) noexcept { try { state.SkipWithError(message); @@ -118,7 +135,7 @@ double RunTaskForBenchmark(const ppc::task::TaskPtr &task) { task->Validation(); task->PreProcessing(); - SynchronizeMpiRanks(); + SynchronizeTaskRanks(task_type); const double begin = timer(); task->Run(); const double elapsed = timer() - begin; @@ -210,7 +227,7 @@ class BaseRunPerfTests : public ::testing::TestWithParamGetStateOfTesting() = ppc::task::StateOfTesting::kPerf; - SynchronizeMpiRanks(); + detail::SynchronizeTaskRanks(descriptor.type); detail::RunTaskForValidation(task_); OutType output_data = task_->GetOutput(); diff --git a/modules/util/include/task_descriptor_util.hpp b/modules/util/include/task_descriptor_util.hpp index 63131c698..8dd3959f8 100644 --- a/modules/util/include/task_descriptor_util.hpp +++ b/modules/util/include/task_descriptor_util.hpp @@ -32,4 +32,8 @@ inline bool IsMpiTaskType(ppc::task::TypeOfTask type) { return type == ppc::task::TypeOfTask::kMPI || type == ppc::task::TypeOfTask::kALL; } +inline bool IsOshTaskType(ppc::task::TypeOfTask type) { + return type == ppc::task::TypeOfTask::kOSH; +} + } // namespace ppc::util diff --git a/modules/util/src/osh_runtime.cpp b/modules/util/src/osh_runtime.cpp new file mode 100644 index 000000000..185a27158 --- /dev/null +++ b/modules/util/src/osh_runtime.cpp @@ -0,0 +1,80 @@ +#include "util/include/osh_runtime.hpp" + +#include + +#include +#include +#include + +namespace { + +std::mutex g_runtime_mutex; +bool g_initialized = false; +bool g_finalized = false; +bool g_atexit_registered = false; + +void FinalizeAtExit() noexcept { + try { + ppc::util::OshRuntime::Finalize(); + } catch (...) { + } +} + +void RegisterFinalizeAtExit() { + if (!g_atexit_registered) { + std::atexit(FinalizeAtExit); + g_atexit_registered = true; + } +} + +} // namespace + +void ppc::util::OshRuntime::EnsureInitialized() { + std::lock_guard lock(g_runtime_mutex); + if (g_initialized) { + return; + } + if (g_finalized) { + throw std::runtime_error("OSH runtime was already finalized in this process"); + } + + shmem_init(); + g_initialized = true; + RegisterFinalizeAtExit(); +} + +void ppc::util::OshRuntime::Finalize() { + std::lock_guard lock(g_runtime_mutex); + if (!g_initialized || g_finalized) { + return; + } + + shmem_finalize(); + g_initialized = false; + g_finalized = true; +} + +bool ppc::util::OshRuntime::IsInitialized() { + std::lock_guard lock(g_runtime_mutex); + return g_initialized; +} + +int ppc::util::OshRuntime::MyPe() { + EnsureInitialized(); + return shmem_my_pe(); +} + +int ppc::util::OshRuntime::NumPes() { + EnsureInitialized(); + return shmem_n_pes(); +} + +void ppc::util::OshRuntime::BarrierAll() { + EnsureInitialized(); + shmem_barrier_all(); +} + +void ppc::util::OshRuntime::GlobalExit(int status) { + EnsureInitialized(); + shmem_global_exit(status); +} diff --git a/modules/util/src/osh_runtime_disabled.cpp b/modules/util/src/osh_runtime_disabled.cpp new file mode 100644 index 000000000..9e0753bd6 --- /dev/null +++ b/modules/util/src/osh_runtime_disabled.cpp @@ -0,0 +1,30 @@ +#include +#include + +#include "util/include/osh_runtime.hpp" + +void ppc::util::OshRuntime::EnsureInitialized() { + throw std::runtime_error("OSH runtime is not available on this platform"); +} + +void ppc::util::OshRuntime::Finalize() {} + +bool ppc::util::OshRuntime::IsInitialized() { + return false; +} + +int ppc::util::OshRuntime::MyPe() { + throw std::runtime_error("OSH runtime is not available on this platform"); +} + +int ppc::util::OshRuntime::NumPes() { + throw std::runtime_error("OSH runtime is not available on this platform"); +} + +void ppc::util::OshRuntime::BarrierAll() { + throw std::runtime_error("OSH runtime is not available on this platform"); +} + +void ppc::util::OshRuntime::GlobalExit(int status) { + std::exit(status); +} diff --git a/modules/util/src/util.cpp b/modules/util/src/util.cpp index d29c9277c..dbe186a1b 100644 --- a/modules/util/src/util.cpp +++ b/modules/util/src/util.cpp @@ -70,9 +70,9 @@ bool ppc::util::IsUnderMpirun() { void ppc::util::ConfigureMpiEnvironment() { #ifdef __APPLE__ - // Open MPI 5 can emit mmap backing-file probe warnings for macOS TMPDIR paths. + // Open MPI 5's POSIX shmem component is fragile on some macOS TMPDIR paths. if (!env::get("OMPI_MCA_shmem").has_value()) { - env::detail::set_environment_variable("OMPI_MCA_shmem", "posix"); + env::detail::set_environment_variable("OMPI_MCA_shmem", "^posix"); } #endif } diff --git a/scripts/check_task_backend_apis.py b/scripts/check_task_backend_apis.py index 79add074d..b20d70e6d 100644 --- a/scripts/check_task_backend_apis.py +++ b/scripts/check_task_backend_apis.py @@ -107,6 +107,15 @@ def compile_include_regex(headers: tuple[str, ...]) -> re.Pattern: ApiPattern("MPI", re.compile(r"\bMPI_[A-Za-z0-9_]*\b"), True), ApiPattern("MPI", re.compile(r"\bMPI::"), True), ], + "osh": [ + ApiPattern( + "OSH", + re.compile(r"^\s*#\s*include\s*[<\"]shmem\.h[>\"]"), + False, + ), + ApiPattern("OSH", re.compile(r"\bshmem_[A-Za-z0-9_]*\b"), True), + ApiPattern("OSH", re.compile(r"\bSHMEM_[A-Za-z0-9_]*\b"), True), + ], "cpp_thread": [ ApiPattern( "C++ thread API", @@ -132,15 +141,16 @@ def compile_include_regex(headers: tuple[str, ...]) -> re.Pattern: } -API_ORDER = ("openmp", "tbb", "mpi", "cpp_thread") +API_ORDER = ("openmp", "tbb", "mpi", "osh", "cpp_thread") BACKEND_RULES = { - "seq": {"openmp", "tbb", "mpi", "cpp_thread"}, - "omp": {"tbb", "mpi", "cpp_thread"}, - "tbb": {"openmp", "mpi", "cpp_thread"}, - "mpi": {"openmp", "tbb", "cpp_thread"}, - "stl": {"openmp", "tbb", "mpi"}, + "seq": {"openmp", "tbb", "mpi", "osh", "cpp_thread"}, + "omp": {"tbb", "mpi", "osh", "cpp_thread"}, + "tbb": {"openmp", "mpi", "osh", "cpp_thread"}, + "mpi": {"openmp", "tbb", "osh", "cpp_thread"}, + "osh": {"openmp", "tbb", "mpi", "cpp_thread"}, + "stl": {"openmp", "tbb", "mpi", "osh"}, "common": set(API_ORDER), } @@ -292,12 +302,15 @@ def get_backend(path: Path) -> str | None: except ValueError: return None - backend_index = tasks_index + 1 - if backend_index >= len(parts) or parts[tasks_index] == "common": + if tasks_index >= len(parts) or parts[tasks_index] == "common": return None - backend = parts[backend_index] - return backend if backend in BACKEND_RULES else None + for backend_index, backend in enumerate(parts): + if backend_index <= tasks_index: + continue + if backend in BACKEND_RULES: + return backend + return None def is_source_file(path: Path) -> bool: diff --git a/scripts/run_tests.py b/scripts/run_tests.py index bdbfc2280..0f07f231b 100755 --- a/scripts/run_tests.py +++ b/scripts/run_tests.py @@ -63,8 +63,10 @@ def __init__(self, build_dir="build", verbose=False): if platform.system() == "Windows": self.mpi_exec = "mpiexec" + self.osh_exec = "mpiexec" else: self.mpi_exec = "mpirun" + self.osh_exec = "oshrun" self.platform = platform.system() # Detect MPI implementation to choose compatible flags @@ -108,6 +110,7 @@ def setup_env(self, ppc_env): install_bin_dir = project_path / "install" / "bin" if install_bin_dir.exists(): self.work_dir = install_bin_dir + self.__select_mpi_launcher() return bin_dir = build_dir if build_dir.name == "bin" else build_dir / "bin" @@ -117,6 +120,7 @@ def setup_env(self, ppc_env): "Build the project or pass a correct '--build-dir' (e.g. 'build', 'build_seq', or 'build/bin')." ) self.work_dir = bin_dir + self.__select_mpi_launcher() def __run_exec(self, command, extra_env=None): if self.verbose: @@ -160,11 +164,58 @@ def __detect_mpi_impl(self): return "mpich", "-n" return "unknown", "-np" - def __build_mpi_cmd(self, ppc_num_proc, additional_mpi_args, extra_env=None): + def __select_mpi_launcher(self): + if self.platform == "Windows" or self.__build_dir_path is None: + return + + project_path = Path(self.__get_project_path()) + mpi_candidates = [] + if self.work_dir is not None: + mpi_candidates.append(self.work_dir / "mpirun") + mpi_candidates.extend( + [ + self.__build_dir_path / "ppc_openmpi" / "install" / "bin" / "mpirun", + project_path / "install" / "bin" / "mpirun", + ] + ) + for launcher in mpi_candidates: + if launcher.exists(): + self.mpi_exec = str(launcher) + self.mpi_env_mode, self.mpi_np_flag = self.__detect_mpi_impl() + break + + osh_candidates = [] + if self.work_dir is not None: + osh_candidates.append(self.work_dir / "oshrun") + osh_candidates.extend( + [ + self.__build_dir_path / "ppc_openmpi" / "install" / "bin" / "oshrun", + project_path / "install" / "bin" / "oshrun", + ] + ) + for launcher in osh_candidates: + if launcher.exists(): + self.osh_exec = str(launcher) + return + self.osh_exec = self.mpi_exec + + def __supports_osh(self): + return self.platform == "Linux" + + def __build_mpi_cmd( + self, ppc_num_proc, additional_mpi_args, extra_env=None, launcher=None + ): mpi_env = self.__ppc_env.copy() if extra_env: mpi_env.update(extra_env) - base = [self.mpi_exec] + shlex.split(additional_mpi_args) + additional_args = shlex.split(additional_mpi_args) + if self.mpi_env_mode == "mpich": + additional_args = [ + arg + for arg in additional_args + if arg not in ("--oversubscribe", "-oversubscribe") + ] + base = [launcher or self.mpi_exec] + additional_args forwarded_env = [ "PPC_NUM_THREADS", "OMP_NUM_THREADS", @@ -233,6 +284,7 @@ def __get_gtest_settings(repeats_count, type_task): type_task_patterns = { "_all_": ["_all_", "AllEnabled"], "_mpi_": ["_mpi_", "MpiEnabled"], + "_osh_": ["_osh_", "OSHEnabled"], "_omp_": ["_omp_", "OmpEnabled"], "_seq_": ["_seq_", "SeqEnabled"], "_stl_": ["_stl_", "StlEnabled"], @@ -290,6 +342,15 @@ def run_processes(self, additional_mpi_args): + [str(self.work_dir / "ppc_func_tests")] + self.__get_gtest_settings(1, "_" + task_type + "_") ) + if self.__supports_osh(): + osh_running = self.__build_mpi_cmd( + ppc_num_proc, additional_mpi_args, launcher=self.osh_exec + ) + self.__run_exec( + osh_running + + [str(self.work_dir / "ppc_func_tests")] + + self.__get_gtest_settings(1, "_osh_") + ) def run_performance(self): output_dir = self.__benchmark_output_dir() @@ -297,15 +358,25 @@ def run_performance(self): shutil.rmtree(output_dir) if not self.__ppc_env.get("PPC_ASAN_RUN"): - for category, task_type in [ + perf_jobs = [ ("threads", "all"), ("processes", "mpi"), ("processes", "seq"), - ]: + ] + if self.__supports_osh(): + perf_jobs.insert(2, ("processes", "osh")) + for category, task_type in perf_jobs: extra_env = self.__get_benchmark_env(category, task_type) - mpi_running = self.__build_mpi_cmd(self.__ppc_num_proc, "", extra_env) + launcher = ( + self.osh_exec + if category == "processes" and task_type == "osh" + else None + ) + runner = self.__build_mpi_cmd( + self.__ppc_num_proc, "", extra_env, launcher + ) self.__run_exec( - mpi_running + runner + [str(self.work_dir / "ppc_perf_tests")] + self.__get_performance_gtest_settings(), extra_env, diff --git a/tasks/CMakeLists.txt b/tasks/CMakeLists.txt index a20f74abf..5e8573fc1 100644 --- a/tasks/CMakeLists.txt +++ b/tasks/CMakeLists.txt @@ -17,7 +17,14 @@ if(USE_PERF_TESTS) endif() # ——— List of implementations ———————————————————————————————————————— -set(PPC_IMPLEMENTATIONS "all;mpi;omp;seq;stl;tbb" CACHE STRING "Implementations to build (semicolon-separated)") +if(ppc_osh_supported) + set(PPC_DEFAULT_IMPLEMENTATIONS "all;mpi;osh;omp;seq;stl;tbb") +else() + set(PPC_DEFAULT_IMPLEMENTATIONS "all;mpi;omp;seq;stl;tbb") +endif() +set(PPC_IMPLEMENTATIONS + "${PPC_DEFAULT_IMPLEMENTATIONS}" + CACHE STRING "Implementations to build (semicolon-separated)") # ——— List of tasks ——————————————————————————————————————————————————— set(PPC_TASKS "all" CACHE STRING "Tasks to build (semicolon-separated, or 'all')") diff --git a/tasks/common/runners/performance.cpp b/tasks/common/runners/performance.cpp index 20da6520b..6d33ed7ba 100644 --- a/tasks/common/runners/performance.cpp +++ b/tasks/common/runners/performance.cpp @@ -22,6 +22,7 @@ #include "oneapi/tbb/global_control.h" #include "runners/include/runners.hpp" +#include "util/include/osh_runtime.hpp" #include "util/include/util.hpp" namespace { @@ -211,6 +212,15 @@ int RunPerformanceMain(int argc, char **argv) { status = SynchronizeStatus(RunRegisteredBenchmarks(rank), "Google Benchmark"); } + if (ppc::util::OshRuntime::IsInitialized()) { + ppc::util::OshRuntime::Finalize(); + } + + int mpi_finalized = 0; + if (MPI_Finalized(&mpi_finalized) == MPI_SUCCESS && mpi_finalized != 0) { + return status; + } + const int finalize_res = MPI_Finalize(); if (finalize_res != MPI_SUCCESS) { std::cerr << "[ ERROR ] MPI_Finalize failed with code " << finalize_res << '\n'; diff --git a/tasks/example/processes/report.md b/tasks/example/processes/report.md index 3af7abdb1..af9a53ebd 100644 --- a/tasks/example/processes/report.md +++ b/tasks/example/processes/report.md @@ -1,6 +1,6 @@ # Example Processes -This section aggregates the MPI/process example tasks. +This section aggregates the MPI/OSH process example tasks. Child reports: diff --git a/tasks/example/processes/t1/osh/include/ops_osh.hpp b/tasks/example/processes/t1/osh/include/ops_osh.hpp new file mode 100644 index 000000000..05ff6cdc5 --- /dev/null +++ b/tasks/example/processes/t1/osh/include/ops_osh.hpp @@ -0,0 +1,19 @@ +#pragma once + +#include "example/common/include/common.hpp" +#include "task/include/task.hpp" + +namespace example_processes_t1 { + +class NesterovATestTaskOSH : public BaseTask { + public: + explicit NesterovATestTaskOSH(const InType &in); + + protected: + bool ValidationImpl() override; + bool PreProcessingImpl() override; + bool RunImpl() override; + bool PostProcessingImpl() override; +}; + +} // namespace example_processes_t1 diff --git a/tasks/example/processes/t1/osh/report.md b/tasks/example/processes/t1/osh/report.md new file mode 100644 index 000000000..5f99940f4 --- /dev/null +++ b/tasks/example/processes/t1/osh/report.md @@ -0,0 +1,3 @@ +# Example Processes T1 OSH + +OSH implementation for process example task T1. diff --git a/tasks/example/processes/t1/osh/src/ops_osh.cpp b/tasks/example/processes/t1/osh/src/ops_osh.cpp new file mode 100644 index 000000000..b14f9e75b --- /dev/null +++ b/tasks/example/processes/t1/osh/src/ops_osh.cpp @@ -0,0 +1,69 @@ +#include "example/processes/t1/osh/include/ops_osh.hpp" + +#include + +#include +#include + +#include "example/common/include/common.hpp" +#include "util/include/osh_runtime.hpp" +#include "util/include/util.hpp" + +namespace example_processes_t1 { + +NesterovATestTaskOSH::NesterovATestTaskOSH(const InType &in) { + SetTypeOfTask(GetStaticTypeOfTask()); + GetInput() = in; + GetOutput() = 0; +} + +bool NesterovATestTaskOSH::ValidationImpl() { + return (GetInput() > 0) && (GetOutput() == 0); +} + +bool NesterovATestTaskOSH::PreProcessingImpl() { + GetOutput() = 2 * GetInput(); + return GetOutput() > 0; +} + +bool NesterovATestTaskOSH::RunImpl() { + ppc::util::OshRuntime::EnsureInitialized(); + + const int my_pe = shmem_my_pe(); + const int num_pes = shmem_n_pes(); + if (GetInput() == 0 || my_pe < 0 || num_pes <= 0) { + return false; + } + + for (InType i = my_pe; i < GetInput(); i += num_pes) { + for (InType j = 0; j < GetInput(); j++) { + for (InType k = 0; k < GetInput(); k++) { + std::vector tmp(i + j + k, 1); + GetOutput() += std::accumulate(tmp.begin(), tmp.end(), 0); + GetOutput() -= i + j + k; + } + } + } + + const int num_threads = ppc::util::GetNumThreads(); + GetOutput() *= num_threads; + + int counter = 0; + for (int i = 0; i < num_threads; i++) { + counter++; + } + + if (counter != 0) { + GetOutput() /= counter; + } + + shmem_barrier_all(); + return GetOutput() > 0; +} + +bool NesterovATestTaskOSH::PostProcessingImpl() { + GetOutput() -= GetInput(); + return GetOutput() > 0; +} + +} // namespace example_processes_t1 diff --git a/tasks/example/processes/t1/report.md b/tasks/example/processes/t1/report.md index 9e98694eb..60ad89665 100644 --- a/tasks/example/processes/t1/report.md +++ b/tasks/example/processes/t1/report.md @@ -6,3 +6,4 @@ Child reports: - `seq/report.md` - `mpi/report.md` +- `osh/report.md` diff --git a/tasks/example/processes/t1/tests/functional/osh.cpp b/tasks/example/processes/t1/tests/functional/osh.cpp new file mode 100644 index 000000000..7a9128976 --- /dev/null +++ b/tasks/example/processes/t1/tests/functional/osh.cpp @@ -0,0 +1,86 @@ +#include + +#include + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include "example/common/include/common.hpp" +#include "example/processes/t1/osh/include/ops_osh.hpp" +#include "util/include/func_test_util.hpp" +#include "util/include/util.hpp" + +namespace example_processes_t1 { + +class NesterovARunFuncTestsProcessesOSH : public ppc::util::BaseRunFuncTests { + public: + static std::string PrintTestParam(const TestType &test_param) { + return std::to_string(std::get<0>(test_param)) + "_" + std::get<1>(test_param); + } + + protected: + void RunTestCase(const ppc::util::FuncTestParam &test_param) override { + if (ShouldSkipTestCase(test_param)) { + return; + } + + SetInputData(); + ExecuteTest(test_param); + } + + void SetInputData() { + int width = -1; + int height = -1; + int channels = -1; + std::vector img; + { + std::string abs_path = ppc::util::GetAbsoluteTaskPath(PPC_ID_example, "pic.ppm"); + auto *data = stbi_load(abs_path.c_str(), &width, &height, &channels, STBI_rgb); + if (data == nullptr) { + throw std::runtime_error("Failed to load image: " + std::string(stbi_failure_reason())); + } + channels = STBI_rgb; + img = std::vector(data, data + (static_cast(width * height * channels))); + stbi_image_free(data); + if (std::cmp_not_equal(width, height)) { + throw std::runtime_error("width != height: "); + } + } + + input_data_ = width - height + std::min(std::accumulate(img.begin(), img.end(), 0), channels); + } + + bool CheckTestOutputData(OutType &output_data) final { + return (input_data_ == output_data); + } + + InType GetTestInputData() final { + return input_data_; + } + + private: + InType input_data_ = 0; +}; + +namespace { + +const std::array kTestParam = {std::make_tuple(3, "3"), std::make_tuple(5, "5"), std::make_tuple(7, "7")}; + +const auto kTestTasksList = + ppc::util::AddFuncTask(kTestParam, PPC_SETTINGS_example, "processes.t1"); + +} // namespace + +TEST_F(NesterovARunFuncTestsProcessesOSH, MatmulFromPicOSHEnabled) { + RunTestCasesWithTag(kTestTasksList, "osh"); +} + +} // namespace example_processes_t1 diff --git a/tasks/example/processes/t1/tests/performance/osh.cpp b/tasks/example/processes/t1/tests/performance/osh.cpp new file mode 100644 index 000000000..c29bc02f7 --- /dev/null +++ b/tasks/example/processes/t1/tests/performance/osh.cpp @@ -0,0 +1,41 @@ +#include + +#include + +#include "example/common/include/common.hpp" +#include "example/processes/t1/osh/include/ops_osh.hpp" +#include "util/include/perf_test_util.hpp" + +namespace example_processes_t1 { + +class ExampleRunPerfTestProcessesOSH : public ppc::util::BaseRunPerfTests { + protected: + void SetUp() override { + input_data_ = kCount_; + } + + bool CheckTestOutputData(OutType &output_data) final { + return input_data_ == output_data; + } + + InType GetTestInputData() final { + return input_data_; + } + + private: + const int kCount_ = 100; + InType input_data_{}; +}; + +namespace { + +const auto kAllPerfTasks = + ppc::util::MakeAllPerfTasks(PPC_SETTINGS_example, "processes.t1"); + +} // namespace + +TEST_F(ExampleRunPerfTestProcessesOSH, RunPerf) { + std::apply([this](const auto &...test_params) { (ExecuteTest(test_params), ...); }, kAllPerfTasks); +} + +} // namespace example_processes_t1 diff --git a/tasks/example/settings.json b/tasks/example/settings.json index c89c5817b..cae627248 100644 --- a/tasks/example/settings.json +++ b/tasks/example/settings.json @@ -3,6 +3,7 @@ "processes": { "t1": { "mpi": "enabled", + "osh": "enabled", "seq": "enabled" }, "t2": { From d798cd863ab3f0845a0ec6298776ef882e3c9b1d Mon Sep 17 00:00:00 2001 From: Alexander Nesterov Date: Tue, 16 Jun 2026 02:04:33 +0200 Subject: [PATCH 2/3] Use system and SOS OSH backends --- .../actions/setup-macos-toolchain/action.yml | 5 +- .github/workflows/codeql.yml | 3 +- .github/workflows/mac.yml | 2 +- .github/workflows/perf.yml | 2 + .github/workflows/static-analysis-pr.yml | 8 +- .github/workflows/ubuntu.yml | 31 ++- .gitmodules | 8 +- 3rdparty/SOS | 1 + 3rdparty/openmpi | 1 - CMakeLists.txt | 5 + cmake/mpi.cmake | 209 ++---------------- cmake/osh.cmake | 176 ++++++++++++++- docs/common_information/processes_tasks.rst | 4 +- .../common_information/processes_tasks.po | 6 +- .../locale/en/LC_MESSAGES/user_guide/build.po | 9 +- docs/locale/en/LC_MESSAGES/user_guide/ci.po | 11 +- .../en/LC_MESSAGES/user_guide/environment.po | 23 +- .../common_information/processes_tasks.po | 12 +- .../locale/ru/LC_MESSAGES/user_guide/build.po | 18 +- docs/locale/ru/LC_MESSAGES/user_guide/ci.po | 24 +- .../ru/LC_MESSAGES/user_guide/environment.po | 46 ++-- docs/user_guide/build.rst | 14 +- docs/user_guide/ci.rst | 13 +- docs/user_guide/environment.rst | 28 +-- scripts/run_tests.py | 26 +-- 25 files changed, 345 insertions(+), 340 deletions(-) create mode 160000 3rdparty/SOS delete mode 160000 3rdparty/openmpi diff --git a/.github/actions/setup-macos-toolchain/action.yml b/.github/actions/setup-macos-toolchain/action.yml index 51da2f8f3..738d703cc 100644 --- a/.github/actions/setup-macos-toolchain/action.yml +++ b/.github/actions/setup-macos-toolchain/action.yml @@ -11,5 +11,8 @@ runs: shell: bash run: | brew update - brew install ninja mpich llvm libomp openssl + brew install \ + ninja open-mpi llvm libomp openssl \ + autoconf automake libtool libfabric \ + coreutils gnu-sed grep gawk pkgconf brew link libomp --overwrite --force diff --git a/.github/workflows/codeql.yml b/.github/workflows/codeql.yml index 761788440..bb70f14e9 100644 --- a/.github/workflows/codeql.yml +++ b/.github/workflows/codeql.yml @@ -30,8 +30,7 @@ jobs: - name: Setup environment run: | sudo apt-get update - sudo apt-get install -y gcc-15 g++-15 ninja-build mpich libomp-dev valgrind \ - autoconf automake flex libtool libucx-dev make perl pkg-config zlib1g-dev + sudo apt-get install -y gcc-15 g++-15 ninja-build openmpi-bin libopenmpi-dev libomp-dev valgrind python3 -m pip install -r requirements.txt - name: ccache uses: hendrikmuhs/ccache-action@v1.2 diff --git a/.github/workflows/mac.yml b/.github/workflows/mac.yml index 8b7c95d7a..ca696553f 100644 --- a/.github/workflows/mac.yml +++ b/.github/workflows/mac.yml @@ -64,7 +64,7 @@ jobs: path: install name: macos-clang-install - name: Run func tests (MPI/OSH) - run: scripts/run_tests.py --running-type="processes" --counts 1 2 3 4 + run: scripts/run_tests.py --running-type="processes" --counts 1 2 3 4 --additional-mpi-args="--oversubscribe" env: PPC_NUM_THREADS: 1 PPC_TASK_MAX_TIME: 30 diff --git a/.github/workflows/perf.yml b/.github/workflows/perf.yml index 9452b3d84..50ef936de 100644 --- a/.github/workflows/perf.yml +++ b/.github/workflows/perf.yml @@ -19,6 +19,8 @@ jobs: - uses: actions/checkout@v6 - name: Setup environment run: | + apt-get update + apt-get install -y --no-install-recommends openmpi-bin libopenmpi-dev python3 -m pip install -r requirements.txt --break-system-packages --ignore-installed - name: Download installed package uses: ./.github/actions/download-install diff --git a/.github/workflows/static-analysis-pr.yml b/.github/workflows/static-analysis-pr.yml index 85385638f..ded3a3012 100644 --- a/.github/workflows/static-analysis-pr.yml +++ b/.github/workflows/static-analysis-pr.yml @@ -66,11 +66,11 @@ jobs: create-symlink: true max-size: 1G - - name: Install Open MPI source build dependencies + - name: Install Open MPI/OSH dependencies run: > apt-get update && apt-get install -y --no-install-recommends - autoconf automake flex libtool libucx-dev make perl pkg-config zlib1g-dev + openmpi-bin libopenmpi-dev - name: CMake configure run: > @@ -123,11 +123,11 @@ jobs: create-symlink: true max-size: 1G - - name: Install Open MPI source build dependencies + - name: Install Open MPI/OSH dependencies run: > apt-get update && apt-get install -y --no-install-recommends - autoconf automake flex libtool libucx-dev make perl pkg-config zlib1g-dev + openmpi-bin libopenmpi-dev - name: CMake configure run: > diff --git a/.github/workflows/ubuntu.yml b/.github/workflows/ubuntu.yml index 2d2200b2d..42cc0ceb4 100644 --- a/.github/workflows/ubuntu.yml +++ b/.github/workflows/ubuntu.yml @@ -35,11 +35,11 @@ jobs: key: ${{ runner.os }}-gcc create-symlink: true max-size: 1G - - name: Install Open MPI source build dependencies + - name: Install Open MPI/OSH dependencies run: > apt-get update && apt-get install -y --no-install-recommends - autoconf automake flex libtool libucx-dev make perl pkg-config zlib1g-dev + openmpi-bin libopenmpi-dev - name: CMake configure run: > cmake -S . -B build -G Ninja @@ -91,6 +91,11 @@ jobs: with: path: install name: ubuntu-gcc-install-${{ matrix.os }} + - name: Install Open MPI/OSH dependencies + run: > + apt-get update && + apt-get install -y --no-install-recommends + openmpi-bin libopenmpi-dev - name: Run func tests (MPI/OSH) run: scripts/run_tests.py --running-type="processes" --counts 1 2 3 4 --additional-mpi-args="--oversubscribe" env: @@ -144,11 +149,11 @@ jobs: key: ${{ runner.os }}-clang create-symlink: true max-size: 1G - - name: Install Open MPI source build dependencies + - name: Install Open MPI/OSH dependencies run: > apt-get update && apt-get install -y --no-install-recommends - autoconf automake flex libtool libucx-dev make perl pkg-config zlib1g-dev + openmpi-bin libopenmpi-dev - name: CMake configure run: > cmake -S . -B build -G Ninja @@ -192,6 +197,11 @@ jobs: with: path: install name: ubuntu-clang-install-${{ matrix.os }} + - name: Install Open MPI/OSH dependencies + run: > + apt-get update && + apt-get install -y --no-install-recommends + openmpi-bin libopenmpi-dev - name: Run func tests (MPI/OSH) run: scripts/run_tests.py --running-type="processes" --counts 1 2 3 4 --additional-mpi-args="--oversubscribe" env: @@ -247,11 +257,11 @@ jobs: key: ${{ runner.os }}-clang create-symlink: true max-size: 1G - - name: Install Open MPI source build dependencies + - name: Install Open MPI/OSH dependencies run: > apt-get update && apt-get install -y --no-install-recommends - autoconf automake flex libtool libucx-dev make perl pkg-config zlib1g-dev + openmpi-bin libopenmpi-dev - name: CMake configure run: > cmake -S . -B build -G Ninja @@ -297,6 +307,11 @@ jobs: with: path: install name: ubuntu-clang-sanitizer-install-${{ matrix.os }} + - name: Install Open MPI/OSH dependencies + run: > + apt-get update && + apt-get install -y --no-install-recommends + openmpi-bin libopenmpi-dev - name: Run tests (MPI/OSH) run: scripts/run_tests.py --running-type="processes" --counts 2 --additional-mpi-args="--oversubscribe" env: @@ -362,11 +377,11 @@ jobs: key: ${{ runner.os }}-gcc create-symlink: true max-size: 1G - - name: Install Open MPI source build dependencies + - name: Install Open MPI/OSH dependencies run: > apt-get update && apt-get install -y --no-install-recommends - autoconf automake flex libtool libucx-dev make perl pkg-config zlib1g-dev + openmpi-bin libopenmpi-dev - name: CMake configure run: > cmake -S . -B build -G Ninja diff --git a/.gitmodules b/.gitmodules index 1e354245c..67d9cceae 100644 --- a/.gitmodules +++ b/.gitmodules @@ -16,8 +16,6 @@ [submodule "3rdparty/benchmark"] path = 3rdparty/benchmark url = https://github.com/google/benchmark -[submodule "3rdparty/openmpi"] - path = 3rdparty/openmpi - url = https://github.com/open-mpi/ompi - branch = v5.0.7 - shallow = true +[submodule "3rdparty/SOS"] + path = 3rdparty/SOS + url = https://github.com/Sandia-OpenSHMEM/SOS diff --git a/3rdparty/SOS b/3rdparty/SOS new file mode 160000 index 000000000..45e6e7eb1 --- /dev/null +++ b/3rdparty/SOS @@ -0,0 +1 @@ +Subproject commit 45e6e7eb1a9b099a418237a9e677eb6603222c84 diff --git a/3rdparty/openmpi b/3rdparty/openmpi deleted file mode 160000 index 29341e55e..000000000 --- a/3rdparty/openmpi +++ /dev/null @@ -1 +0,0 @@ -Subproject commit 29341e55efaabf7a6968444b4bb6f1f1fb40d664 diff --git a/CMakeLists.txt b/CMakeLists.txt index 4642c5107..8984d4255 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -42,6 +42,11 @@ if(PPC_BUILD_COMPONENTS) set(ppc_osh_supported OFF) if(CMAKE_SYSTEM_NAME STREQUAL "Linux") set(ppc_osh_supported ON) + set(ppc_osh_backend "openmpi") + list(APPEND PPC_PARALLEL_TECHNOLOGIES osh) + elseif(APPLE) + set(ppc_osh_supported ON) + set(ppc_osh_backend "sos") list(APPEND PPC_PARALLEL_TECHNOLOGIES osh) endif() foreach(dep ${PPC_PARALLEL_TECHNOLOGIES}) diff --git a/cmake/mpi.cmake b/cmake/mpi.cmake index 6d532a9ec..bdf679208 100644 --- a/cmake/mpi.cmake +++ b/cmake/mpi.cmake @@ -1,201 +1,24 @@ include_guard() -if(CMAKE_SYSTEM_NAME STREQUAL "Linux") - function(ppc_configure_openmpi) - if(TARGET MPI::MPI_CXX) - return() - endif() - - set(openmpi_source_dir "${CMAKE_SOURCE_DIR}/3rdparty/openmpi") - if(NOT EXISTS "${openmpi_source_dir}/autogen.pl") - message( - FATAL_ERROR - "Open MPI source backend is missing. Initialize submodules with: git submodule update --init --recursive" - ) - endif() - - find_program(openmpi_bash bash REQUIRED) - find_program(openmpi_make NAMES gmake make REQUIRED) - find_program(openmpi_perl perl REQUIRED) - find_program(openmpi_flex flex REQUIRED) - find_program(openmpi_autoconf autoconf REQUIRED) - find_program(openmpi_automake automake REQUIRED) - find_program(openmpi_libtoolize NAMES glibtoolize libtoolize REQUIRED) - find_program(openmpi_ccache ccache) - - set(openmpi_prefix "${CMAKE_BINARY_DIR}/ppc_openmpi") - set(openmpi_install_dir "${openmpi_prefix}/install") - set(openmpi_build_source_dir "${openmpi_prefix}/source") - set(openmpi_library - "${openmpi_install_dir}/lib/${CMAKE_SHARED_LIBRARY_PREFIX}mpi${CMAKE_SHARED_LIBRARY_SUFFIX}" - ) - set(oshmem_library - "${openmpi_install_dir}/lib/${CMAKE_SHARED_LIBRARY_PREFIX}oshmem${CMAKE_SHARED_LIBRARY_SUFFIX}" - ) - set(openmpi_byproducts "${openmpi_library}" "${oshmem_library}") - - set(openmpi_c_compiler "${CMAKE_C_COMPILER}") - set(openmpi_cxx_compiler "${CMAKE_CXX_COMPILER}") - set(openmpi_c_flags "${CMAKE_C_FLAGS} -Wno-int-conversion") - string(STRIP "${openmpi_c_flags}" openmpi_c_flags) - set(openmpi_ccache_env) - if(openmpi_ccache) - set(openmpi_c_compiler "${openmpi_ccache} ${CMAKE_C_COMPILER}") - set(openmpi_cxx_compiler "${openmpi_ccache} ${CMAKE_CXX_COMPILER}") - list(APPEND openmpi_ccache_env "CCACHE_BASEDIR=${CMAKE_SOURCE_DIR}" - "CCACHE_NOHASHDIR=1") - endif() - - set(openmpi_transport_flags - --without-alps - --without-lsf - --without-ofi - --without-pbs - --without-portals4 - --without-psm2 - --without-sge - --without-slurm - --without-tm - --with-ucx) - - set(openmpi_disabled_components - accelerator-cuda - accelerator-rocm - btl-ofi - btl-portals4 - btl-smcuda - btl-template - btl-uct - btl-ugni - btl-usnic - coll-adapt - coll-cuda - coll-demo - coll-ftagree - coll-han - coll-hcoll - coll-inter - coll-monitoring - coll-portals4 - coll-sm - coll-sync - coll-ucc - common-ofi - fbtl-ime - fbtl-pvfs2 - fcoll-dynamic - fcoll-dynamic_gen2 - fcoll-vulcan - fs-gpfs - fs-ime - fs-lustre - fs-pvfs2 - hook-comm_method - hook-demo - memchecker-valgrind - mpool-hugepage - mpool-memkind - mtl-ofi - mtl-portals4 - mtl-psm2 - osc-monitoring - osc-portals4 - osc-ucx - pml-cm - pml-monitoring - pml-ucx - pml-v - rcache-gpusm - rcache-grdma - rcache-rgpusm - rcache-udreg - sharedfp-individual - sharedfp-lockedfile - sharedfp-sm - smsc-cma - smsc-knem - smsc-xpmem - topo-example - topo-treematch - vprotocol-example - vprotocol-pessimist) - list(JOIN openmpi_disabled_components "," openmpi_disabled_components_arg) - - set(openmpi_configure_options - "--prefix='${openmpi_install_dir}'" - --enable-oshmem - --disable-io-romio - --disable-mpi-fortran - --disable-mpi-java - --disable-oshmem-fortran - --disable-oshmem-profile - --disable-picky - --disable-static - --enable-mpi-ext= - --enable-shared - --with-hwloc=internal - --with-libevent=internal - --with-pmix=internal - --with-prrte=internal - --without-tests-examples - "--enable-mca-no-build=${openmpi_disabled_components_arg}" - ${openmpi_transport_flags}) - list(JOIN openmpi_configure_options " " openmpi_configure_options_arg) - - set_property(GLOBAL PROPERTY ppc_openmpi_install_dir - "${openmpi_install_dir}") - set_property(GLOBAL PROPERTY ppc_openmpi_oshmem_library "${oshmem_library}") - - file(MAKE_DIRECTORY "${openmpi_install_dir}/include" - "${openmpi_install_dir}/lib") - - include(ProcessorCount) - include(ExternalProject) - ProcessorCount(openmpi_parallel_jobs) - if(openmpi_parallel_jobs EQUAL 0) - set(openmpi_parallel_jobs 2) - endif() - ExternalProject_Add( - ppc_openmpi - PREFIX "${openmpi_prefix}" - SOURCE_DIR "${openmpi_build_source_dir}" - DOWNLOAD_COMMAND "${CMAKE_COMMAND}" -E rm -rf - "${openmpi_build_source_dir}" - COMMAND "${CMAKE_COMMAND}" -E copy_directory "${openmpi_source_dir}" - "${openmpi_build_source_dir}" - CONFIGURE_COMMAND - "${CMAKE_COMMAND}" -E env "CC=${openmpi_c_compiler}" - "CXX=${openmpi_cxx_compiler}" "CFLAGS=${openmpi_c_flags}" - ${openmpi_ccache_env} "${openmpi_bash}" -lc - "cd '${openmpi_build_source_dir}' && '${openmpi_perl}' ./autogen.pl --force && ./configure ${openmpi_configure_options_arg}" - BUILD_COMMAND - "${CMAKE_COMMAND}" -E env ${openmpi_ccache_env} "${openmpi_make}" -C - "${openmpi_build_source_dir}" "-j${openmpi_parallel_jobs}" - INSTALL_COMMAND "${openmpi_make}" -C "${openmpi_build_source_dir}" install - BUILD_BYPRODUCTS ${openmpi_byproducts} ${PPC_EXTERNAL_PROJECT_LOG_ARGS}) - - set(openmpi_link_options "-Wl,-rpath,${openmpi_install_dir}/lib" - "-Wl,-rpath,\\$ORIGIN/../lib") - - add_library(MPI::MPI_CXX SHARED IMPORTED GLOBAL) - add_dependencies(MPI::MPI_CXX ppc_openmpi) - set_target_properties( - MPI::MPI_CXX - PROPERTIES IMPORTED_LOCATION "${openmpi_library}" - INTERFACE_INCLUDE_DIRECTORIES "${openmpi_install_dir}/include" - INTERFACE_LINK_OPTIONS "${openmpi_link_options}") - - install(DIRECTORY "${openmpi_install_dir}/" DESTINATION ".") - endfunction() - - ppc_configure_openmpi() -else() - find_package(MPI REQUIRED COMPONENTS C CXX) - if(NOT MPI_FOUND) - message(FATAL_ERROR "MPI NOT FOUND") +if(NOT CMAKE_SYSTEM_NAME STREQUAL "Windows") + find_program(ppc_openmpi_c_wrapper NAMES mpicc.openmpi mpicc) + find_program(ppc_openmpi_cxx_wrapper NAMES mpicxx.openmpi mpicxx + mpic++.openmpi mpic++) + if(ppc_openmpi_c_wrapper AND ppc_openmpi_cxx_wrapper) + set(MPI_C_COMPILER + "${ppc_openmpi_c_wrapper}" + CACHE FILEPATH "MPI C compiler wrapper" FORCE) + set(MPI_CXX_COMPILER + "${ppc_openmpi_cxx_wrapper}" + CACHE FILEPATH "MPI CXX compiler wrapper" FORCE) endif() endif() +find_package(MPI REQUIRED COMPONENTS C CXX) +if(NOT MPI_FOUND) + message(FATAL_ERROR "MPI NOT FOUND") +endif() + function(ppc_link_mpi exec_func_lib) target_link_libraries(${exec_func_lib} PUBLIC MPI::MPI_CXX) endfunction() diff --git a/cmake/osh.cmake b/cmake/osh.cmake index 965c11a38..5b6b8e3f8 100644 --- a/cmake/osh.cmake +++ b/cmake/osh.cmake @@ -2,26 +2,181 @@ include_guard() set(osh_target OSH::OSH) -function(ppc_configure_osh) +function(ppc_configure_openmpi_osh) if(TARGET ${osh_target}) return() endif() - if(NOT ppc_osh_supported) + set(osh_include_hints ${MPI_CXX_INCLUDE_DIRS}) + find_path( + OSH_INCLUDE_DIR + NAMES shmem.h + HINTS ${osh_include_hints}) + + set(osh_library_hints) + foreach(mpi_library IN LISTS MPI_CXX_LIBRARIES) + get_filename_component(mpi_library_dir "${mpi_library}" DIRECTORY) + if(mpi_library_dir) + list(APPEND osh_library_hints "${mpi_library_dir}") + endif() + endforeach() + list(REMOVE_DUPLICATES osh_library_hints) + + find_library( + OSH_LIBRARY + NAMES oshmem + HINTS ${osh_library_hints}) + + if(NOT OSH_INCLUDE_DIR OR NOT OSH_LIBRARY) + message( + FATAL_ERROR + "OSH was selected, but Open MPI OSH was not found. Install Open MPI with OSH support, for example: sudo apt install openmpi-bin libopenmpi-dev" + ) + endif() + + add_library(${osh_target} UNKNOWN IMPORTED GLOBAL) + set_target_properties( + ${osh_target} PROPERTIES IMPORTED_LOCATION "${OSH_LIBRARY}" + INTERFACE_INCLUDE_DIRECTORIES "${OSH_INCLUDE_DIR}") + target_link_libraries(${osh_target} INTERFACE MPI::MPI_CXX) +endfunction() + +function(ppc_configure_sos_osh) + if(TARGET ${osh_target}) return() endif() - ppc_configure_openmpi() - get_property(openmpi_install_dir GLOBAL PROPERTY ppc_openmpi_install_dir) - get_property(oshmem_library GLOBAL PROPERTY ppc_openmpi_oshmem_library) + set(sos_source_dir "${CMAKE_SOURCE_DIR}/3rdparty/SOS") + if(NOT EXISTS "${sos_source_dir}/autogen.sh") + message( + FATAL_ERROR + "SOS submodule is missing. Initialize submodules with: git submodule update --init --recursive" + ) + endif() + if(NOT EXISTS "${sos_source_dir}/modules/tests-sos/test/Makefile.am") + message( + FATAL_ERROR + "SOS tests-sos submodule is missing. Initialize submodules with: git submodule update --init --recursive" + ) + endif() + + find_program(sos_bash bash REQUIRED) + find_program(sos_make NAMES gmake make REQUIRED) + find_program(sos_pkg_config pkg-config REQUIRED) + find_program(sos_ccache ccache) + + execute_process( + COMMAND "${sos_pkg_config}" --variable=prefix libfabric + RESULT_VARIABLE sos_pkg_config_result + OUTPUT_VARIABLE sos_ofi_prefix + OUTPUT_STRIP_TRAILING_WHITESPACE) + if(NOT sos_pkg_config_result EQUAL 0 OR sos_ofi_prefix STREQUAL "") + message( + FATAL_ERROR + "SOS OSH backend requires libfabric. Install it, for example: brew install libfabric" + ) + endif() + + include(ProcessorCount) + include(ExternalProject) + ProcessorCount(sos_parallel_jobs) + if(sos_parallel_jobs EQUAL 0) + set(sos_parallel_jobs 2) + endif() + + set(sos_prefix "${CMAKE_BINARY_DIR}/ppc_sos") + set(sos_install_dir "${sos_prefix}/install") + set(sos_build_source_dir "${sos_prefix}/source") + set(sos_build_dir "${sos_prefix}/build") + set(sos_library + "${sos_install_dir}/lib/${CMAKE_SHARED_LIBRARY_PREFIX}sma${CMAKE_SHARED_LIBRARY_SUFFIX}" + ) + set(sos_versioned_library + "${sos_install_dir}/lib/${CMAKE_SHARED_LIBRARY_PREFIX}sma.0${CMAKE_SHARED_LIBRARY_SUFFIX}" + ) - add_library(${osh_target} SHARED IMPORTED GLOBAL) - add_dependencies(${osh_target} ppc_openmpi) + file(MAKE_DIRECTORY "${sos_install_dir}/include" "${sos_install_dir}/lib") + + set(sos_c_compiler "${MPI_C_COMPILER}") + set(sos_cxx_compiler "${MPI_CXX_COMPILER}") + set(sos_ccache_env) + if(sos_ccache) + set(sos_c_compiler "${sos_ccache} ${MPI_C_COMPILER}") + set(sos_cxx_compiler "${sos_ccache} ${MPI_CXX_COMPILER}") + set(sos_ccache_env + "CCACHE_BASEDIR='${CMAKE_SOURCE_DIR}' CCACHE_NOHASHDIR=1 ") + endif() + + set(sos_configure_args + "--prefix='${sos_install_dir}'" + "--with-ofi='${sos_ofi_prefix}'" + --enable-pmi-mpi + --disable-fortran + --disable-static + --enable-shared + "CC='${sos_c_compiler}'" + "CXX='${sos_cxx_compiler}'") + list(JOIN sos_configure_args " " sos_configure_args_line) + + string( + CONCAT sos_configure_command + "cd '${sos_build_source_dir}' && ./autogen.sh" + " && mkdir -p '${sos_build_dir}'" + " && cd '${sos_build_dir}'" + " && ${sos_ccache_env}'${sos_build_source_dir}/configure' " + "${sos_configure_args_line}") + string( + CONCAT sos_install_command + "${sos_ccache_env}'${sos_make}' -C '${sos_build_dir}' install" + " && install_name_tool -id '@rpath/libsma.0.dylib' " + "'${sos_versioned_library}'") + + ExternalProject_Add( + ppc_sos + PREFIX "${sos_prefix}" + SOURCE_DIR "${sos_build_source_dir}" + DOWNLOAD_COMMAND "${CMAKE_COMMAND}" -E rm -rf "${sos_build_source_dir}" + COMMAND "${CMAKE_COMMAND}" -E copy_directory "${sos_source_dir}" + "${sos_build_source_dir}" + CONFIGURE_COMMAND "${sos_bash}" -lc "${sos_configure_command}" + BUILD_COMMAND + "${sos_bash}" -lc + "${sos_ccache_env}'${sos_make}' -C '${sos_build_dir}' -j${sos_parallel_jobs}" + INSTALL_COMMAND "${sos_bash}" -lc "${sos_install_command}" + BUILD_BYPRODUCTS "${sos_library}" "${sos_versioned_library}" + ${PPC_EXTERNAL_PROJECT_LOG_ARGS}) + + add_library(${osh_target} UNKNOWN IMPORTED GLOBAL) + add_dependencies(${osh_target} ppc_sos) set_target_properties( ${osh_target} - PROPERTIES IMPORTED_LOCATION "${oshmem_library}" - INTERFACE_INCLUDE_DIRECTORIES "${openmpi_install_dir}/include") + PROPERTIES IMPORTED_LOCATION "${sos_library}" + INTERFACE_INCLUDE_DIRECTORIES "${sos_install_dir}/include" + INTERFACE_LINK_OPTIONS "-Wl,-rpath,@loader_path/../lib") target_link_libraries(${osh_target} INTERFACE MPI::MPI_CXX) + + install( + DIRECTORY "${sos_install_dir}/" + DESTINATION "." + USE_SOURCE_PERMISSIONS) +endfunction() + +function(ppc_configure_osh) + if(TARGET ${osh_target}) + return() + endif() + + if(NOT ppc_osh_supported) + return() + endif() + + if(ppc_osh_backend STREQUAL "openmpi") + ppc_configure_openmpi_osh() + elseif(ppc_osh_backend STREQUAL "sos") + ppc_configure_sos_osh() + else() + message(FATAL_ERROR "Unknown OSH backend: ${ppc_osh_backend}") + endif() endfunction() function(ppc_link_osh target) @@ -35,4 +190,7 @@ function(ppc_link_osh target) endif() target_link_libraries(${target} PUBLIC ${osh_target}) + if(TARGET ppc_sos) + add_dependencies(${target} ppc_sos) + endif() endfunction() diff --git a/docs/common_information/processes_tasks.rst b/docs/common_information/processes_tasks.rst index 7cec6ab01..cc7a0d63c 100644 --- a/docs/common_information/processes_tasks.rst +++ b/docs/common_information/processes_tasks.rst @@ -5,8 +5,8 @@ Distributed-memory technologies ------------------------------- The processes semester targets distributed-memory programming. MPI remains the -baseline message-passing technology, and OSH is available on Linux as a PGAS / -one-sided communication alternative for process tasks. Keep OSH +baseline message-passing technology, and OSH is available on Linux and macOS +as a PGAS / one-sided communication alternative for process tasks. Keep OSH implementations under ``osh`` task backend directories; do not move them to the threads semester. diff --git a/docs/locale/en/LC_MESSAGES/common_information/processes_tasks.po b/docs/locale/en/LC_MESSAGES/common_information/processes_tasks.po index be9b46f41..eec12e24c 100644 --- a/docs/locale/en/LC_MESSAGES/common_information/processes_tasks.po +++ b/docs/locale/en/LC_MESSAGES/common_information/processes_tasks.po @@ -34,9 +34,9 @@ msgstr "" msgid "" "The processes semester targets distributed-memory programming. MPI " "remains the baseline message-passing technology, and OSH is available on " -"Linux as a PGAS / one-sided communication alternative for process tasks. " -"Keep OSH implementations under ``osh`` task backend directories; do not " -"move them to the threads semester." +"Linux and macOS as a PGAS / one-sided communication alternative for process " +"tasks. Keep OSH implementations under ``osh`` task backend directories; do " +"not move them to the threads semester." msgstr "" #: ../../../../docs/common_information/processes_tasks.rst:14 diff --git a/docs/locale/en/LC_MESSAGES/user_guide/build.po b/docs/locale/en/LC_MESSAGES/user_guide/build.po index 694ec4ffa..55ce1bfd2 100644 --- a/docs/locale/en/LC_MESSAGES/user_guide/build.po +++ b/docs/locale/en/LC_MESSAGES/user_guide/build.po @@ -93,9 +93,10 @@ msgstr "" #: ../../../../docs/user_guide/build.rst:42 msgid "" -"OSH is part of the process-technology set on Linux. It is built by " -"default from the shallow ``3rdparty/openmpi`` source backend together with" -" MPI. A focused example build can be configured as:" +"OSH is part of the process-technology set on Linux and macOS. Linux uses " +"Open MPI OSH from the system package. macOS builds Sandia SOS from " +"``3rdparty/SOS`` and uses the system Open MPI launcher. A focused example " +"build can be configured as:" msgstr "" #: ../../../../docs/user_guide/build.rst:51 @@ -111,5 +112,5 @@ msgid "Prefer the helper runner described in ``User Guide → CI``." msgstr "" #: ../../../../docs/user_guide/build.rst:61 -msgid "OSH example on Linux:" +msgid "OSH example on Linux or macOS:" msgstr "" diff --git a/docs/locale/en/LC_MESSAGES/user_guide/ci.po b/docs/locale/en/LC_MESSAGES/user_guide/ci.po index 926922fc6..601a246d6 100644 --- a/docs/locale/en/LC_MESSAGES/user_guide/ci.po +++ b/docs/locale/en/LC_MESSAGES/user_guide/ci.po @@ -34,7 +34,7 @@ msgstr "" msgid "" "Your pull request must pass all required CI checks before review/merge. " "The pipeline validates formatting and static analysis, builds on all " -"platforms, runs functional tests (threads, MPI, and OSH on Linux), " +"platforms, runs functional tests (threads, MPI, and OSH on Linux/macOS), " "measures performance, builds docs, and publishes artifacts (coverage " "report, docs, scoreboard)." msgstr "" @@ -54,7 +54,7 @@ msgid "" "Platform builds and tests (Ubuntu, macOS, Windows) — Ubuntu (GCC/Clang), " "macOS (Clang), Windows (MSVC/Clang‑CL); functional tests via " "``scripts/run_tests.py`` for threads (``--counts 1 2 3 4``; extended ``5 " -"7 11 13``) and processes (MPI/OSH on Linux, MPI on macOS/Windows, " +"7 11 13``) and processes (MPI/OSH on Linux and macOS, MPI on Windows, " "``--counts 1 2 3 4``)." msgstr "" @@ -150,7 +150,7 @@ msgstr "" msgid "" "Execution modes: - ``--running-type=threads`` — shared-memory backends " "(OpenMP/TBB/std::thread) - ``--running-type=processes`` — MPI tests, plus" -" OSH tests on Linux - ``--running-type=performance`` — performance " +" OSH tests on Linux and macOS - ``--running-type=performance`` — performance " "benchmarks (mirrors CI perf job)" msgstr "" @@ -238,7 +238,10 @@ msgid "" msgstr "" #: ../../../../docs/user_guide/ci.rst:96 -msgid "OSH runs fail locally: verify an MPI launcher is on ``PATH``." +msgid "" +"OSH runs fail locally: on Linux verify Open MPI with OSH support is " +"installed; on macOS verify submodules are initialized and ``libfabric`` is " +"installed." msgstr "" #: ../../../../docs/user_guide/ci.rst:97 diff --git a/docs/locale/en/LC_MESSAGES/user_guide/environment.po b/docs/locale/en/LC_MESSAGES/user_guide/environment.po index 8802099e1..03775c3c2 100644 --- a/docs/locale/en/LC_MESSAGES/user_guide/environment.po +++ b/docs/locale/en/LC_MESSAGES/user_guide/environment.po @@ -200,9 +200,8 @@ msgstr "" #: ../../../../docs/user_guide/environment.rst:94 msgid "" -"On Linux, MPI is built from the shallow ``3rdparty/openmpi`` source " -"backend together with OSH. A separate system MPI installation is not " -"required for the Linux course build." +"On Linux and macOS, MPI is provided by the system Open MPI package. Windows " +"uses MS-MPI." msgstr "" #: ../../../../docs/user_guide/environment.rst:112 @@ -213,16 +212,16 @@ msgstr "" #: ../../../../docs/user_guide/environment.rst:119 msgid "" -"The project builds MPI and OSH from the shallow ``3rdparty/openmpi`` " -"source backend on Linux. The build installs ``mpirun``, ``libmpi``, " -"``liboshmem``, and ``shmem.h`` into the build tree. Open MPI OSH uses the" -" UCX SPML, so Linux needs the UCX development package. macOS and Windows " -"use their system MPI installations; OSH implementations are not built " -"there." +"Linux uses the Open MPI OSH implementation from the system package. macOS " +"builds Sandia SOS from ``3rdparty/SOS`` and uses Open MPI as its " +"launcher/runtime. Windows keeps the existing MPI setup and skips OSH in the " +"MSVC/clang-cl configurations." msgstr "" #: ../../../../docs/user_guide/environment.rst:132 -msgid "OSH is skipped on macOS." +msgid "" +"``brew install open-mpi autoconf automake libtool libfabric coreutils gnu-" +"sed grep gawk pkgconf``" msgstr "" #: ../../../../docs/user_guide/environment.rst:137 @@ -231,8 +230,8 @@ msgstr "" #: ../../../../docs/user_guide/environment.rst:140 msgid "" -"No separate system ``shmem.h``/``oshcc``/``oshrun`` package is required " -"for the Linux course build." +"No vendored Open MPI source tree is used. Initialize submodules before macOS " +"builds so that ``3rdparty/SOS`` and its nested test submodule are available." msgstr "" #: ../../../../docs/user_guide/environment.rst:144 diff --git a/docs/locale/ru/LC_MESSAGES/common_information/processes_tasks.po b/docs/locale/ru/LC_MESSAGES/common_information/processes_tasks.po index cc48da979..fce746e94 100644 --- a/docs/locale/ru/LC_MESSAGES/common_information/processes_tasks.po +++ b/docs/locale/ru/LC_MESSAGES/common_information/processes_tasks.po @@ -34,15 +34,15 @@ msgstr "Технологии распределённой памяти" msgid "" "The processes semester targets distributed-memory programming. MPI " "remains the baseline message-passing technology, and OSH is available on " -"Linux as a PGAS / one-sided communication alternative for process tasks. " -"Keep OSH implementations under ``osh`` task backend directories; do not " -"move them to the threads semester." +"Linux and macOS as a PGAS / one-sided communication alternative for process " +"tasks. Keep OSH implementations under ``osh`` task backend directories; do " +"not move them to the threads semester." msgstr "" "Семестр процессов ориентирован на программирование для распределённой " "памяти. MPI остаётся базовой технологией передачи сообщений, а OSH " -"доступен на Linux как PGAS / one-sided communication альтернатива для " -"задач на процессах. Размещайте OSH-реализации в backend-директориях задач" -" ``osh``; не переносите их в семестр потоков." +"доступен на Linux и macOS как PGAS / one-sided communication альтернатива " +"для задач на процессах. Размещайте OSH-реализации в backend-директориях " +"задач ``osh``; не переносите их в семестр потоков." #: ../../../../docs/common_information/processes_tasks.rst:14 msgid "First task" diff --git a/docs/locale/ru/LC_MESSAGES/user_guide/build.po b/docs/locale/ru/LC_MESSAGES/user_guide/build.po index 5a0653bed..c38ce31b5 100644 --- a/docs/locale/ru/LC_MESSAGES/user_guide/build.po +++ b/docs/locale/ru/LC_MESSAGES/user_guide/build.po @@ -103,13 +103,15 @@ msgstr "" #: ../../../../docs/user_guide/build.rst:42 msgid "" -"OSH is part of the process-technology set on Linux. It is built by " -"default from the shallow ``3rdparty/openmpi`` source backend together with" -" MPI. A focused example build can be configured as:" +"OSH is part of the process-technology set on Linux and macOS. Linux uses " +"Open MPI OSH from the system package. macOS builds Sandia SOS from " +"``3rdparty/SOS`` and uses the system Open MPI launcher. A focused example " +"build can be configured as:" msgstr "" -"OSH входит в набор процессных технологий на Linux. По умолчанию он " -"собирается из shallow-источникового backend ``3rdparty/openmpi`` вместе с" -" MPI. Сфокусированную сборку example можно настроить так:" +"OSH входит в набор процессных технологий на Linux и macOS. Linux использует " +"Open MPI OSH из системного пакета. macOS собирает Sandia SOS из " +"``3rdparty/SOS`` и использует системный Open MPI launcher. Сфокусированную " +"сборку example можно настроить так:" #: ../../../../docs/user_guide/build.rst:51 msgid "**Build the project**:" @@ -126,5 +128,5 @@ msgstr "" "«Инструкция → CI»." #: ../../../../docs/user_guide/build.rst:61 -msgid "OSH example on Linux:" -msgstr "Пример OSH на Linux:" +msgid "OSH example on Linux or macOS:" +msgstr "Пример OSH на Linux или macOS:" diff --git a/docs/locale/ru/LC_MESSAGES/user_guide/ci.po b/docs/locale/ru/LC_MESSAGES/user_guide/ci.po index d3eee090e..6546662df 100644 --- a/docs/locale/ru/LC_MESSAGES/user_guide/ci.po +++ b/docs/locale/ru/LC_MESSAGES/user_guide/ci.po @@ -34,14 +34,14 @@ msgstr "Общие сведения" msgid "" "Your pull request must pass all required CI checks before review/merge. " "The pipeline validates formatting and static analysis, builds on all " -"platforms, runs functional tests (threads, MPI, and OSH on Linux), " +"platforms, runs functional tests (threads, MPI, and OSH on Linux/macOS), " "measures performance, builds docs, and publishes artifacts (coverage " "report, docs, scoreboard)." msgstr "" "Ваш pull request должен пройти все обязательные проверки CI перед " "ревью/слиянием. Конвейер проверяет форматирование и статический анализ, " "собирает проект на всех платформах, запускает функциональные тесты " -"(потоки, MPI и OSH на Linux), измеряет производительность, собирает " +"(потоки, MPI и OSH на Linux/macOS), измеряет производительность, собирает " "документацию и публикует артефакты (отчёт по покрытию, документация, " "табло)." @@ -62,14 +62,14 @@ msgid "" "Platform builds and tests (Ubuntu, macOS, Windows) — Ubuntu (GCC/Clang), " "macOS (Clang), Windows (MSVC/Clang‑CL); functional tests via " "``scripts/run_tests.py`` for threads (``--counts 1 2 3 4``; extended ``5 " -"7 11 13``) and processes (MPI/OSH on Linux, MPI on macOS/Windows, " +"7 11 13``) and processes (MPI/OSH on Linux and macOS, MPI on Windows, " "``--counts 1 2 3 4``)." msgstr "" "Сборки и тесты на платформах (Ubuntu, macOS, Windows) — Ubuntu " "(GCC/Clang), macOS (Clang), Windows (MSVC/Clang‑CL); функциональные тесты" " через ``scripts/run_tests.py`` для потоков (``--counts 1 2 3 4``; " -"расширенно ``5 7 11 13``) и процессов (MPI/OSH на Linux, MPI на " -"macOS/Windows, ``--counts 1 2 3 4``)." +"расширенно ``5 7 11 13``) и процессов (MPI/OSH на Linux и macOS, MPI на " +"Windows, ``--counts 1 2 3 4``)." #: ../../../../docs/user_guide/ci.rst:15 msgid "" @@ -182,12 +182,12 @@ msgstr "" msgid "" "Execution modes: - ``--running-type=threads`` — shared-memory backends " "(OpenMP/TBB/std::thread) - ``--running-type=processes`` — MPI tests, plus" -" OSH tests on Linux - ``--running-type=performance`` — performance " +" OSH tests on Linux and macOS - ``--running-type=performance`` — performance " "benchmarks (mirrors CI perf job)" msgstr "" "Режимы запуска: — ``--running-type=threads`` — backends с общей памятью " "(OpenMP/TBB/std::thread); — ``--running-type=processes`` — MPI‑тесты, а " -"также OSH‑тесты на Linux; — ``--running-type=performance`` — " +"также OSH‑тесты на Linux и macOS; — ``--running-type=performance`` — " "бенчмарки производительности (как в CI perf)." #: ../../../../docs/user_guide/ci.rst:55 @@ -304,11 +304,13 @@ msgstr "" #: ../../../../docs/user_guide/ci.rst:96 msgid "" -"OSH runs fail locally: verify submodules are initialized and " -"``build/ppc_openmpi/install/bin/oshrun`` exists." +"OSH runs fail locally: on Linux verify Open MPI with OSH support is " +"installed; on macOS verify submodules are initialized and ``libfabric`` is " +"installed." msgstr "" -"Локальный запуск OSH не проходит: проверьте, что submodules " -"инициализированы и существует ``build/ppc_openmpi/install/bin/oshrun``." +"Локальный запуск OSH не проходит: на Linux проверьте Open MPI с поддержкой " +"OSH; на macOS проверьте, что submodules инициализированы и ``libfabric`` " +"установлен." #: ../../../../docs/user_guide/ci.rst:97 msgid "" diff --git a/docs/locale/ru/LC_MESSAGES/user_guide/environment.po b/docs/locale/ru/LC_MESSAGES/user_guide/environment.po index 627831569..67ffb0afb 100644 --- a/docs/locale/ru/LC_MESSAGES/user_guide/environment.po +++ b/docs/locale/ru/LC_MESSAGES/user_guide/environment.po @@ -195,13 +195,11 @@ msgstr "``MPI``" #: ../../../../docs/user_guide/environment.rst:94 msgid "" -"On Linux, MPI is built from the shallow ``3rdparty/openmpi`` source " -"backend together with OSH. A separate system MPI installation is not " -"required for the Linux course build." +"On Linux and macOS, MPI is provided by the system Open MPI package. Windows " +"uses MS-MPI." msgstr "" -"На Linux MPI собирается из shallow-источникового backend " -"``3rdparty/openmpi`` вместе с OSH. Отдельная системная установка MPI для " -"сборки курса на Linux не требуется." +"На Linux и macOS MPI предоставляется системным пакетом Open MPI. Windows " +"использует MS-MPI." #: ../../../../docs/user_guide/environment.rst:94 #: ../../../../docs/user_guide/environment.rst:135 @@ -243,22 +241,23 @@ msgstr "" #: ../../../../docs/user_guide/environment.rst:119 msgid "" -"The project builds MPI and OSH from the shallow ``3rdparty/openmpi`` " -"source backend on Linux. The build installs ``mpirun``, ``libmpi``, " -"``liboshmem``, and ``shmem.h`` into the build tree. Open MPI OSH uses the" -" UCX SPML, so Linux needs the UCX development package. macOS and Windows " -"use their system MPI installations; OSH implementations are not built " -"there." +"Linux uses the Open MPI OSH implementation from the system package. macOS " +"builds Sandia SOS from ``3rdparty/SOS`` and uses Open MPI as its " +"launcher/runtime. Windows keeps the existing MPI setup and skips OSH in the " +"MSVC/clang-cl configurations." msgstr "" -"На Linux проект собирает MPI и OSH из shallow-источникового backend " -"``3rdparty/openmpi``. Сборка устанавливает ``mpirun``, ``libmpi``, " -"``liboshmem`` и ``shmem.h`` в дерево сборки. Open MPI OSH использует UCX " -"SPML, поэтому Linux нужен development package UCX. macOS и Windows " -"используют системные установки MPI; OSH-реализации там не собираются." +"Linux использует Open MPI OSH из системного пакета. macOS собирает Sandia " +"SOS из ``3rdparty/SOS`` и использует Open MPI как launcher/runtime. " +"Windows сохраняет существующую настройку MPI и пропускает OSH в " +"MSVC/clang-cl конфигурациях." #: ../../../../docs/user_guide/environment.rst:132 -msgid "OSH is skipped on macOS." -msgstr "OSH на macOS пропускается." +msgid "" +"``brew install open-mpi autoconf automake libtool libfabric coreutils gnu-" +"sed grep gawk pkgconf``" +msgstr "" +"``brew install open-mpi autoconf automake libtool libfabric coreutils gnu-" +"sed grep gawk pkgconf``" #: ../../../../docs/user_guide/environment.rst:137 msgid "Install MS-MPI as described in the MPI section. OSH is skipped on Windows." @@ -266,11 +265,12 @@ msgstr "Установите MS-MPI, как описано в разделе MPI #: ../../../../docs/user_guide/environment.rst:140 msgid "" -"No separate system ``shmem.h``/``oshcc``/``oshrun`` package is required " -"for the Linux course build." +"No vendored Open MPI source tree is used. Initialize submodules before macOS " +"builds so that ``3rdparty/SOS`` and its nested test submodule are available." msgstr "" -"Для сборки курса на Linux не требуется отдельный системный пакет " -"``shmem.h``/``oshcc``/``oshrun``." +"Vendored исходники Open MPI не используются. Перед сборкой на macOS " +"инициализируйте submodules, чтобы были доступны ``3rdparty/SOS`` и его " +"nested test submodule." #: ../../../../docs/user_guide/environment.rst:144 msgid "``OpenMP``" diff --git a/docs/user_guide/build.rst b/docs/user_guide/build.rst index 3f58f7fea..2a21c7d01 100644 --- a/docs/user_guide/build.rst +++ b/docs/user_guide/build.rst @@ -39,13 +39,13 @@ Navigate to the project root. *A corresponding flag can be omitted if it's not needed.* - OSH is part of the process-technology set on Linux. It is built by default - from the shallow ``3rdparty/openmpi`` source backend together with MPI. A - focused example build can be configured as: + OSH is part of the process-technology set on Linux and macOS. Linux uses + Open MPI OSH from the system package. macOS builds Sandia SOS from + ``3rdparty/SOS`` and uses the system Open MPI launcher. A focused example + build can be configured as: .. code-block:: bash - git submodule update --init --recursive cmake -S . -B build-osh -DPPC_BUILD_COMPONENTS=ON -DPPC_TASKS=example cmake --build build-osh --parallel @@ -59,9 +59,9 @@ Navigate to the project root. Prefer the helper runner described in ``User Guide → CI``. - OSH example on Linux: + OSH example on Linux or macOS: .. code-block:: bash - PPC_NUM_THREADS=1 scripts/run_tests.py --running-type=processes --counts 2 --build-dir build-osh - PPC_NUM_THREADS=1 PPC_NUM_PROC=2 ./build-osh/ppc_openmpi/install/bin/oshrun -np 2 ./build-osh/bin/ppc_func_tests --gtest_filter="*_osh_*:*OSHEnabled*" + PPC_NUM_THREADS=1 scripts/run_tests.py --running-type=processes --counts 2 --build-dir build-osh --additional-mpi-args="--oversubscribe" + PPC_NUM_THREADS=1 PPC_NUM_PROC=2 ./build-osh/ppc_sos/install/bin/oshrun -np 2 ./build-osh/bin/ppc_func_tests --gtest_filter="*_osh_*:*OSHEnabled*" diff --git a/docs/user_guide/ci.rst b/docs/user_guide/ci.rst index a2df70298..63355f82b 100644 --- a/docs/user_guide/ci.rst +++ b/docs/user_guide/ci.rst @@ -3,14 +3,14 @@ Continuous Integration (CI) Overview -------- -Your pull request must pass all required CI checks before review/merge. The pipeline validates formatting and static analysis, builds on all platforms, runs functional tests (threads, MPI, and OSH on Linux), measures performance, builds docs, and publishes artifacts (coverage report, docs, scoreboard). +Your pull request must pass all required CI checks before review/merge. The pipeline validates formatting and static analysis, builds on all platforms, runs functional tests (threads, MPI, and OSH on Linux/macOS), measures performance, builds docs, and publishes artifacts (coverage report, docs, scoreboard). High‑level pipeline ------------------- - Pre-commit checks (fast) — runs repository hooks on changed files; fix locally via ``pre-commit run -a``. -- Platform builds and tests (Ubuntu, macOS, Windows) — Ubuntu (GCC/Clang), macOS (Clang), Windows (MSVC/Clang‑CL); functional tests via ``scripts/run_tests.py`` for threads (``--counts 1 2 3 4``; extended ``5 7 11 13``) and processes (MPI/OSH on Linux, MPI on macOS/Windows, ``--counts 1 2 3 4``). +- Platform builds and tests (Ubuntu, macOS, Windows) — Ubuntu (GCC/Clang), macOS (Clang), Windows (MSVC/Clang‑CL); functional tests via ``scripts/run_tests.py`` for threads (``--counts 1 2 3 4``; extended ``5 7 11 13``) and processes (MPI/OSH on Linux and macOS, MPI on Windows, ``--counts 1 2 3 4``). - Sanitizers (Ubuntu/Clang) — Address/UB/Leak; tests use ``PPC_ASAN_RUN=1`` to skip valgrind. @@ -49,7 +49,7 @@ Use the ``scripts/run_tests.py`` helper. Common environment variables: Execution modes: - ``--running-type=threads`` — shared-memory backends (OpenMP/TBB/std::thread) -- ``--running-type=processes`` — MPI tests, plus OSH tests on Linux +- ``--running-type=processes`` — MPI tests, plus OSH tests on Linux and macOS - ``--running-type=performance`` — performance benchmarks (mirrors CI perf job) Examples: @@ -66,7 +66,10 @@ Examples: scripts/run_tests.py --running-type=processes --counts 2 4 # OSH only, direct launcher form on Linux - ./build/ppc_openmpi/install/bin/oshrun -np 2 ./build/bin/ppc_func_tests --gtest_filter="*_osh_*:*OSHEnabled*" + oshrun -np 2 ./build/bin/ppc_func_tests --gtest_filter="*_osh_*:*OSHEnabled*" + + # OSH only, direct launcher form on macOS build tree + ./build/ppc_sos/install/bin/oshrun -np 2 ./build/bin/ppc_func_tests --gtest_filter="*_osh_*:*OSHEnabled*" # Performance (benchmarks) scripts/run_tests.py --running-type=performance @@ -93,7 +96,7 @@ Troubleshooting - Tests not found/not running: verify ``settings.json`` enables required technologies and tests exist; see :doc:`submit_work`. - Time limits exceeded: reduce data sizes; prefer env vars (:doc:`environment_variables`) like ``PPC_TASK_MAX_TIME``/``PPC_PERF_MAX_TIME``; avoid sleeps/randomness. - MPI runs fail locally: set ``PPC_NUM_PROC`` and try ``--additional-mpi-args=\"--oversubscribe\"``. -- OSH runs fail locally: verify submodules are initialized and ``build/ppc_openmpi/install/bin/oshrun`` exists. +- OSH runs fail locally: on Linux verify Open MPI with OSH support is installed; on macOS verify submodules are initialized and ``libfabric`` is installed. - Docs build fails: fix RST warnings; run ``doxygen Doxyfile`` before Sphinx targets. - Performance job fails: ensure performance tests are enabled and keep durations within limits. diff --git a/docs/user_guide/environment.rst b/docs/user_guide/environment.rst index b9d378bb7..f21ec31a7 100644 --- a/docs/user_guide/environment.rst +++ b/docs/user_guide/environment.rst @@ -91,9 +91,8 @@ Parallel Programming Technologies ``MPI`` ~~~~~~~ -On Linux, MPI is built from the shallow ``3rdparty/openmpi`` source backend -together with OSH. A separate system MPI installation is not required for the -Linux course build. +On Linux and macOS, MPI is provided by the system Open MPI package. Windows +uses MS-MPI. - **Windows (MSVC)**: @@ -103,41 +102,42 @@ Linux course build. .. code-block:: bash - sudo apt install -y autoconf automake flex libtool make perl bash + sudo apt install -y openmpi-bin libopenmpi-dev - **MacOS (apple clang)**: .. code-block:: bash - brew install mpich + brew install open-mpi ``OSH`` ~~~~~~~~~~~~~ OSH is used for process tasks as a PGAS / one-sided communication model for distributed-memory systems. -The project builds MPI and OSH from the shallow ``3rdparty/openmpi`` source -backend on Linux. The build installs ``mpirun``, ``libmpi``, ``liboshmem``, -and ``shmem.h`` into the build tree. Open MPI OSH uses the UCX SPML, so Linux -needs the UCX development package. macOS and Windows use their system MPI -installations; OSH implementations are not built there. +Linux uses the Open MPI OSH implementation from the system package. macOS +builds Sandia SOS from ``3rdparty/SOS`` and uses Open MPI as its +launcher/runtime. Windows keeps the existing MPI setup and skips OSH in the +MSVC/clang-cl configurations. - **Linux (gcc and clang)**: .. code-block:: bash - sudo apt install -y autoconf automake flex libtool libucx-dev make perl pkg-config zlib1g-dev bash + sudo apt install -y openmpi-bin libopenmpi-dev - **MacOS (apple clang)**: - OSH is skipped on macOS. + .. code-block:: bash + + brew install open-mpi autoconf automake libtool libfabric coreutils gnu-sed grep gawk pkgconf - **Windows (MSVC)**: Install MS-MPI as described in the MPI section. OSH is skipped on Windows. -No separate system ``shmem.h``/``oshcc``/``oshrun`` package is required for the -Linux course build. +No vendored Open MPI source tree is used. Initialize submodules before macOS +builds so that ``3rdparty/SOS`` and its nested test submodule are available. ``OpenMP`` ~~~~~~~~~~ diff --git a/scripts/run_tests.py b/scripts/run_tests.py index 0f07f231b..733fd9821 100755 --- a/scripts/run_tests.py +++ b/scripts/run_tests.py @@ -65,8 +65,8 @@ def __init__(self, build_dir="build", verbose=False): self.mpi_exec = "mpiexec" self.osh_exec = "mpiexec" else: - self.mpi_exec = "mpirun" - self.osh_exec = "oshrun" + self.mpi_exec = shutil.which("mpirun.openmpi") or "mpirun" + self.osh_exec = shutil.which("oshrun") or "oshrun" self.platform = platform.system() # Detect MPI implementation to choose compatible flags @@ -172,14 +172,9 @@ def __select_mpi_launcher(self): mpi_candidates = [] if self.work_dir is not None: mpi_candidates.append(self.work_dir / "mpirun") - mpi_candidates.extend( - [ - self.__build_dir_path / "ppc_openmpi" / "install" / "bin" / "mpirun", - project_path / "install" / "bin" / "mpirun", - ] - ) + mpi_candidates.append(project_path / "install" / "bin" / "mpirun") for launcher in mpi_candidates: - if launcher.exists(): + if launcher.is_file() and os.access(launcher, os.X_OK): self.mpi_exec = str(launcher) self.mpi_env_mode, self.mpi_np_flag = self.__detect_mpi_impl() break @@ -187,20 +182,17 @@ def __select_mpi_launcher(self): osh_candidates = [] if self.work_dir is not None: osh_candidates.append(self.work_dir / "oshrun") - osh_candidates.extend( - [ - self.__build_dir_path / "ppc_openmpi" / "install" / "bin" / "oshrun", - project_path / "install" / "bin" / "oshrun", - ] + osh_candidates.append( + self.__build_dir_path / "ppc_sos" / "install" / "bin" / "oshrun" ) + osh_candidates.append(project_path / "install" / "bin" / "oshrun") for launcher in osh_candidates: - if launcher.exists(): + if launcher.is_file() and os.access(launcher, os.X_OK): self.osh_exec = str(launcher) return - self.osh_exec = self.mpi_exec def __supports_osh(self): - return self.platform == "Linux" + return self.platform != "Windows" def __build_mpi_cmd( self, ppc_num_proc, additional_mpi_args, extra_env=None, launcher=None From 31de4e93bb147347da738757201951cd1485d04a Mon Sep 17 00:00:00 2001 From: Alexander Nesterov Date: Tue, 16 Jun 2026 02:08:30 +0200 Subject: [PATCH 3/3] Remove docs from OSH PR --- .../task_fix_submission_en.md | 4 +- .../task_fix_submission_ru.md | 4 +- .../task_submission_en.md | 4 +- .../task_submission_ru.md | 4 +- README.md | 1 - docs/common_information/points.rst | 10 +- docs/common_information/processes_tasks.rst | 9 - .../LC_MESSAGES/common_information/points.po | 16 +- .../common_information/processes_tasks.po | 455 +++++++------- docs/locale/en/LC_MESSAGES/user_guide/api.po | 2 +- .../locale/en/LC_MESSAGES/user_guide/build.po | 18 +- docs/locale/en/LC_MESSAGES/user_guide/ci.po | 77 ++- .../en/LC_MESSAGES/user_guide/environment.po | 79 +-- .../user_guide/environment_variables.po | 2 +- .../en/LC_MESSAGES/user_guide/submit_work.po | 86 +-- .../LC_MESSAGES/common_information/points.po | 30 +- .../common_information/processes_tasks.po | 577 ++++++++---------- docs/locale/ru/LC_MESSAGES/user_guide/api.po | 18 +- .../locale/ru/LC_MESSAGES/user_guide/build.po | 22 +- docs/locale/ru/LC_MESSAGES/user_guide/ci.po | 97 ++- .../ru/LC_MESSAGES/user_guide/environment.po | 97 +-- .../user_guide/environment_variables.po | 32 +- .../ru/LC_MESSAGES/user_guide/submit_work.po | 96 ++- docs/user_guide/build.rst | 17 - docs/user_guide/ci.rst | 19 +- docs/user_guide/environment.rst | 36 +- docs/user_guide/submit_work.rst | 13 +- tasks/example/processes/report.md | 2 +- tasks/example/processes/t1/osh/report.md | 3 - tasks/example/processes/t1/report.md | 1 - 30 files changed, 758 insertions(+), 1073 deletions(-) delete mode 100644 tasks/example/processes/t1/osh/report.md diff --git a/.github/PULL_REQUEST_TEMPLATE/task_fix_submission_en.md b/.github/PULL_REQUEST_TEMPLATE/task_fix_submission_en.md index 5762f3695..4b6a66480 100644 --- a/.github/PULL_REQUEST_TEMPLATE/task_fix_submission_en.md +++ b/.github/PULL_REQUEST_TEMPLATE/task_fix_submission_en.md @@ -1,7 +1,7 @@ ## Description @@ -15,7 +15,7 @@ Please provide: - **Task**: _Enter the full task name here_ - **Variant**: _Enter the variant number here_ -- **Technology**: _Enter technology (e.g., SEQ, OMP, TBB, STL, MPI, OSH)_ +- **Technology**: _Enter technology (e.g., SEQ, OMP, TBB, STL, MPI)_ - **Student directory**: _Enter the directory name (e.g., `nesterov_a_vector_sum`)_ - **Original PR / commit / issue link**: _Paste link(s) here_ - **Original task definition**: _Paste the full task statement here_ diff --git a/.github/PULL_REQUEST_TEMPLATE/task_fix_submission_ru.md b/.github/PULL_REQUEST_TEMPLATE/task_fix_submission_ru.md index dc768a66a..444159141 100644 --- a/.github/PULL_REQUEST_TEMPLATE/task_fix_submission_ru.md +++ b/.github/PULL_REQUEST_TEMPLATE/task_fix_submission_ru.md @@ -1,7 +1,7 @@ @@ -16,7 +16,7 @@ - **Задача**: _Введите здесь полное название задачи_ - **Вариант**: _Введите здесь номер варианта_ -- **Технология**: _Введите технологию (например, SEQ, OMP, TBB, STL, MPI, OSH)_ +- **Технология**: _Введите технологию (например, SEQ, OMP, TBB, STL, MPI)_ - **Директория студента**: _Введите имя директории (например, `nesterov_a_vector_sum`)_ - **Ссылка на исходный PR / коммит / issue**: _Вставьте ссылку(и)_ - **Полное описание исходной задачи**: _Вставьте полный текст условия_ diff --git a/.github/PULL_REQUEST_TEMPLATE/task_submission_en.md b/.github/PULL_REQUEST_TEMPLATE/task_submission_en.md index 9e41d4697..1db6cdad7 100644 --- a/.github/PULL_REQUEST_TEMPLATE/task_submission_en.md +++ b/.github/PULL_REQUEST_TEMPLATE/task_submission_en.md @@ -1,7 +1,7 @@ ## Description @@ -13,7 +13,7 @@ Please provide a detailed description of your implementation, including: - **Task**: _Enter the full task name here_ - **Variant**: _Enter the variant number here_ -- **Technology**: _Enter technology (e.g., SEQ, OMP, TBB, STL, MPI, OSH)_ +- **Technology**: _Enter technology (e.g., SEQ, OMP, TBB, STL, MPI)_ - **Description** of your implementation and report. _Provide a concise summary of your implementation and report here._ diff --git a/.github/PULL_REQUEST_TEMPLATE/task_submission_ru.md b/.github/PULL_REQUEST_TEMPLATE/task_submission_ru.md index 7fed9dda5..c4487b9c2 100644 --- a/.github/PULL_REQUEST_TEMPLATE/task_submission_ru.md +++ b/.github/PULL_REQUEST_TEMPLATE/task_submission_ru.md @@ -1,7 +1,7 @@ ## Описание @@ -13,7 +13,7 @@ - **Задача**: _Введите здесь полное название задачи_ - **Вариант**: _Введите здесь номер варианта_ -- **Технология**: _Введите технологию (например, SEQ, OMP, TBB, STL, MPI, OSH)_ +- **Технология**: _Введите технологию (например, SEQ, OMP, TBB, STL, MPI)_ - **Описание** вашей реализации и отчёта. _Кратко опишите вашу реализацию и содержание отчёта здесь._ diff --git a/README.md b/README.md index e454fc433..3ada42e8b 100644 --- a/README.md +++ b/README.md @@ -23,7 +23,6 @@ Resources: The following parallel programming technologies are considered in practice: - [Message Passing Interface (MPI)](https://www.mpi-forum.org/) -- [OSH](https://www.openshmem.org/) — PGAS / one-sided communication model for distributed-memory systems. - [OpenMP (Open Multi-Processing)](https://www.openmp.org/) - [oneAPI Threading Building Blocks (oneTBB)](https://github.com/oneapi-src/oneTBB) - [Multithreading in C++ (`std::thread`)](https://en.cppreference.com/w/cpp/thread/thread) diff --git a/docs/common_information/points.rst b/docs/common_information/points.rst index c77869fba..3c208a283 100644 --- a/docs/common_information/points.rst +++ b/docs/common_information/points.rst @@ -7,21 +7,21 @@ Overview - Total per semester (Practice): 70 points - Report points are distributed per task and sum to 10 -Processes semester (MPI / OSH) ------------------------------------- +Processes semester (MPI) +------------------------ - Task 1 — Total: 12 - - Implementation: MPI or OSH 8 + Seq 2 + - Implementation: MPI 8 + Seq 2 - Performance: 0 - Report: 2 - Task 2 — Total: 23 - - Implementation: MPI or OSH 12 + Seq 3 + - Implementation: MPI 12 + Seq 3 - Performance: 5 - Report: 3 - Task 3 — Total: 35 - - Implementation: MPI or OSH 16 + Seq 4 + - Implementation: MPI 16 + Seq 4 - Performance: 10 - Report: 5 diff --git a/docs/common_information/processes_tasks.rst b/docs/common_information/processes_tasks.rst index cc7a0d63c..f3e20965a 100644 --- a/docs/common_information/processes_tasks.rst +++ b/docs/common_information/processes_tasks.rst @@ -1,15 +1,6 @@ Processes parallelism tasks =========================== -Distributed-memory technologies -------------------------------- - -The processes semester targets distributed-memory programming. MPI remains the -baseline message-passing technology, and OSH is available on Linux and macOS -as a PGAS / one-sided communication alternative for process tasks. Keep OSH -implementations under ``osh`` task backend directories; do not move them to -the threads semester. - First task ---------- diff --git a/docs/locale/en/LC_MESSAGES/common_information/points.po b/docs/locale/en/LC_MESSAGES/common_information/points.po index e4fd8670a..6342c7b09 100644 --- a/docs/locale/en/LC_MESSAGES/common_information/points.po +++ b/docs/locale/en/LC_MESSAGES/common_information/points.po @@ -20,7 +20,7 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.18.0\n" +"Generated-By: Babel 2.17.0\n" #: ../../../../docs/common_information/points.rst:2 msgid "Points" @@ -39,25 +39,25 @@ msgid "Report points are distributed per task and sum to 10" msgstr "" #: ../../../../docs/common_information/points.rst:11 -msgid "Processes semester (MPI / OSH)" +msgid "Processes semester (MPI)" msgstr "" #: ../../../../docs/common_information/points.rst:13 msgid "" -"Task 1 — Total: 12 - Implementation: MPI or OSH 8 + Seq 2 - Performance: " -"0 - Report: 2" +"Task 1 — Total: 12 - Implementation: MPI 8 + Seq 2 - Performance: 0 - " +"Report: 2" msgstr "" #: ../../../../docs/common_information/points.rst:18 msgid "" -"Task 2 — Total: 23 - Implementation: MPI or OSH 12 + Seq 3 - Performance:" -" 5 - Report: 3" +"Task 2 — Total: 23 - Implementation: MPI 12 + Seq 3 - Performance: 5 - " +"Report: 3" msgstr "" #: ../../../../docs/common_information/points.rst:23 msgid "" -"Task 3 — Total: 35 - Implementation: MPI or OSH 16 + Seq 4 - Performance:" -" 10 - Report: 5" +"Task 3 — Total: 35 - Implementation: MPI 16 + Seq 4 - Performance: 10 - " +"Report: 5" msgstr "" #: ../../../../docs/common_information/points.rst:28 diff --git a/docs/locale/en/LC_MESSAGES/common_information/processes_tasks.po b/docs/locale/en/LC_MESSAGES/common_information/processes_tasks.po index eec12e24c..545b25acb 100644 --- a/docs/locale/en/LC_MESSAGES/common_information/processes_tasks.po +++ b/docs/locale/en/LC_MESSAGES/common_information/processes_tasks.po @@ -2,8 +2,7 @@ # Copyright (C) 2025, Learning Process # This file is distributed under the same license as the Parallel # Programming Course package. -# Learning Process Team , 2025. +# Learning Process Team , 2025. # #, fuzzy msgid "" @@ -14,606 +13,592 @@ msgstr "" "PO-Revision-Date: 2025-07-27 18:21+0200\n" "Last-Translator: Learning Process Team \n" "Language: en\n" -"Language-Team: Learning Process Team (gooddoog@student.su, " -"nesterov.alexander@outlook.com)\n" +"Language-Team: Learning Process Team (gooddoog@student.su, nesterov.alexander@outlook.com)\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.18.0\n" +"Generated-By: Babel 2.17.0\n" -#: ../../../../docs/common_information/processes_tasks.rst:2 +#: ../../common_information/processes_tasks.rst:2 msgid "Processes parallelism tasks" msgstr "" -#: ../../../../docs/common_information/processes_tasks.rst:5 -msgid "Distributed-memory technologies" -msgstr "" - -#: ../../../../docs/common_information/processes_tasks.rst:7 -msgid "" -"The processes semester targets distributed-memory programming. MPI " -"remains the baseline message-passing technology, and OSH is available on " -"Linux and macOS as a PGAS / one-sided communication alternative for process " -"tasks. Keep OSH implementations under ``osh`` task backend directories; do " -"not move them to the threads semester." -msgstr "" - -#: ../../../../docs/common_information/processes_tasks.rst:14 +#: ../../common_information/processes_tasks.rst:5 msgid "First task" msgstr "" -#: ../../../../docs/common_information/processes_tasks.rst:17 -#: ../../../../docs/common_information/processes_tasks.rst:78 -#: ../../../../docs/common_information/processes_tasks.rst:131 +#: ../../common_information/processes_tasks.rst:8 +#: ../../common_information/processes_tasks.rst:69 +#: ../../common_information/processes_tasks.rst:122 msgid "Variant Number" msgstr "" -#: ../../../../docs/common_information/processes_tasks.rst:17 -#: ../../../../docs/common_information/processes_tasks.rst:78 -#: ../../../../docs/common_information/processes_tasks.rst:131 +#: ../../common_information/processes_tasks.rst:8 +#: ../../common_information/processes_tasks.rst:69 +#: ../../common_information/processes_tasks.rst:122 msgid "Task" msgstr "" -#: ../../../../docs/common_information/processes_tasks.rst:19 -#: ../../../../docs/common_information/processes_tasks.rst:80 -#: ../../../../docs/common_information/processes_tasks.rst:133 +#: ../../common_information/processes_tasks.rst:10 +#: ../../common_information/processes_tasks.rst:71 +#: ../../common_information/processes_tasks.rst:124 msgid "1" msgstr "" -#: ../../../../docs/common_information/processes_tasks.rst:19 +#: ../../common_information/processes_tasks.rst:10 msgid "Sum of vector elements" msgstr "" -#: ../../../../docs/common_information/processes_tasks.rst:21 -#: ../../../../docs/common_information/processes_tasks.rst:82 -#: ../../../../docs/common_information/processes_tasks.rst:135 +#: ../../common_information/processes_tasks.rst:12 +#: ../../common_information/processes_tasks.rst:73 +#: ../../common_information/processes_tasks.rst:126 msgid "2" msgstr "" -#: ../../../../docs/common_information/processes_tasks.rst:21 +#: ../../common_information/processes_tasks.rst:12 msgid "Calculating the average value of vector elements" msgstr "" -#: ../../../../docs/common_information/processes_tasks.rst:23 -#: ../../../../docs/common_information/processes_tasks.rst:84 -#: ../../../../docs/common_information/processes_tasks.rst:137 +#: ../../common_information/processes_tasks.rst:14 +#: ../../common_information/processes_tasks.rst:75 +#: ../../common_information/processes_tasks.rst:128 msgid "3" msgstr "" -#: ../../../../docs/common_information/processes_tasks.rst:23 +#: ../../common_information/processes_tasks.rst:14 msgid "Maximum value of vector elements" msgstr "" -#: ../../../../docs/common_information/processes_tasks.rst:25 -#: ../../../../docs/common_information/processes_tasks.rst:86 -#: ../../../../docs/common_information/processes_tasks.rst:139 +#: ../../common_information/processes_tasks.rst:16 +#: ../../common_information/processes_tasks.rst:77 +#: ../../common_information/processes_tasks.rst:130 msgid "4" msgstr "" -#: ../../../../docs/common_information/processes_tasks.rst:25 +#: ../../common_information/processes_tasks.rst:16 msgid "Minimum value of vector elements" msgstr "" -#: ../../../../docs/common_information/processes_tasks.rst:27 -#: ../../../../docs/common_information/processes_tasks.rst:88 -#: ../../../../docs/common_information/processes_tasks.rst:141 +#: ../../common_information/processes_tasks.rst:18 +#: ../../common_information/processes_tasks.rst:79 +#: ../../common_information/processes_tasks.rst:132 msgid "5" msgstr "" -#: ../../../../docs/common_information/processes_tasks.rst:27 +#: ../../common_information/processes_tasks.rst:18 msgid "" "Finding the number of sign alternations between adjacent elements of the " "vector" msgstr "" -#: ../../../../docs/common_information/processes_tasks.rst:29 -#: ../../../../docs/common_information/processes_tasks.rst:90 -#: ../../../../docs/common_information/processes_tasks.rst:143 -#: ../../../../docs/common_information/processes_tasks.rst:267 +#: ../../common_information/processes_tasks.rst:20 +#: ../../common_information/processes_tasks.rst:81 +#: ../../common_information/processes_tasks.rst:134 +#: ../../common_information/processes_tasks.rst:258 msgid "6" msgstr "" -#: ../../../../docs/common_information/processes_tasks.rst:29 +#: ../../common_information/processes_tasks.rst:20 msgid "" "Finding the number of order violations between adjacent elements of the " "vector" msgstr "" -#: ../../../../docs/common_information/processes_tasks.rst:31 -#: ../../../../docs/common_information/processes_tasks.rst:92 -#: ../../../../docs/common_information/processes_tasks.rst:145 +#: ../../common_information/processes_tasks.rst:22 +#: ../../common_information/processes_tasks.rst:83 +#: ../../common_information/processes_tasks.rst:136 msgid "7" msgstr "" -#: ../../../../docs/common_information/processes_tasks.rst:31 +#: ../../common_information/processes_tasks.rst:22 msgid "Finding the most similar adjacent elements of the vector" msgstr "" -#: ../../../../docs/common_information/processes_tasks.rst:33 -#: ../../../../docs/common_information/processes_tasks.rst:94 -#: ../../../../docs/common_information/processes_tasks.rst:147 +#: ../../common_information/processes_tasks.rst:24 +#: ../../common_information/processes_tasks.rst:85 +#: ../../common_information/processes_tasks.rst:138 msgid "8" msgstr "" -#: ../../../../docs/common_information/processes_tasks.rst:33 +#: ../../common_information/processes_tasks.rst:24 msgid "Finding the most different adjacent elements of the vector" msgstr "" -#: ../../../../docs/common_information/processes_tasks.rst:35 -#: ../../../../docs/common_information/processes_tasks.rst:96 -#: ../../../../docs/common_information/processes_tasks.rst:149 +#: ../../common_information/processes_tasks.rst:26 +#: ../../common_information/processes_tasks.rst:87 +#: ../../common_information/processes_tasks.rst:140 msgid "9" msgstr "" -#: ../../../../docs/common_information/processes_tasks.rst:35 +#: ../../common_information/processes_tasks.rst:26 msgid "Scalar product of vectors" msgstr "" -#: ../../../../docs/common_information/processes_tasks.rst:37 -#: ../../../../docs/common_information/processes_tasks.rst:98 -#: ../../../../docs/common_information/processes_tasks.rst:151 +#: ../../common_information/processes_tasks.rst:28 +#: ../../common_information/processes_tasks.rst:89 +#: ../../common_information/processes_tasks.rst:142 msgid "10" msgstr "" -#: ../../../../docs/common_information/processes_tasks.rst:37 +#: ../../common_information/processes_tasks.rst:28 msgid "Sum of matrix elements" msgstr "" -#: ../../../../docs/common_information/processes_tasks.rst:39 -#: ../../../../docs/common_information/processes_tasks.rst:100 -#: ../../../../docs/common_information/processes_tasks.rst:153 +#: ../../common_information/processes_tasks.rst:30 +#: ../../common_information/processes_tasks.rst:91 +#: ../../common_information/processes_tasks.rst:144 msgid "11" msgstr "" -#: ../../../../docs/common_information/processes_tasks.rst:39 +#: ../../common_information/processes_tasks.rst:30 msgid "Sum of values by rows in the matrix" msgstr "" -#: ../../../../docs/common_information/processes_tasks.rst:41 -#: ../../../../docs/common_information/processes_tasks.rst:102 -#: ../../../../docs/common_information/processes_tasks.rst:156 +#: ../../common_information/processes_tasks.rst:32 +#: ../../common_information/processes_tasks.rst:93 +#: ../../common_information/processes_tasks.rst:147 msgid "12" msgstr "" -#: ../../../../docs/common_information/processes_tasks.rst:41 +#: ../../common_information/processes_tasks.rst:32 msgid "Sum of values by columns in the matrix" msgstr "" -#: ../../../../docs/common_information/processes_tasks.rst:43 -#: ../../../../docs/common_information/processes_tasks.rst:104 -#: ../../../../docs/common_information/processes_tasks.rst:159 +#: ../../common_information/processes_tasks.rst:34 +#: ../../common_information/processes_tasks.rst:95 +#: ../../common_information/processes_tasks.rst:150 msgid "13" msgstr "" -#: ../../../../docs/common_information/processes_tasks.rst:43 +#: ../../common_information/processes_tasks.rst:34 msgid "Maximum value of matrix elements" msgstr "" -#: ../../../../docs/common_information/processes_tasks.rst:45 -#: ../../../../docs/common_information/processes_tasks.rst:106 -#: ../../../../docs/common_information/processes_tasks.rst:162 +#: ../../common_information/processes_tasks.rst:36 +#: ../../common_information/processes_tasks.rst:97 +#: ../../common_information/processes_tasks.rst:153 msgid "14" msgstr "" -#: ../../../../docs/common_information/processes_tasks.rst:45 +#: ../../common_information/processes_tasks.rst:36 msgid "Minimum value of matrix elements" msgstr "" -#: ../../../../docs/common_information/processes_tasks.rst:47 -#: ../../../../docs/common_information/processes_tasks.rst:108 -#: ../../../../docs/common_information/processes_tasks.rst:164 +#: ../../common_information/processes_tasks.rst:38 +#: ../../common_information/processes_tasks.rst:99 +#: ../../common_information/processes_tasks.rst:155 msgid "15" msgstr "" -#: ../../../../docs/common_information/processes_tasks.rst:47 +#: ../../common_information/processes_tasks.rst:38 msgid "Finding maximum values by rows in the matrix" msgstr "" -#: ../../../../docs/common_information/processes_tasks.rst:49 -#: ../../../../docs/common_information/processes_tasks.rst:110 -#: ../../../../docs/common_information/processes_tasks.rst:166 +#: ../../common_information/processes_tasks.rst:40 +#: ../../common_information/processes_tasks.rst:101 +#: ../../common_information/processes_tasks.rst:157 msgid "16" msgstr "" -#: ../../../../docs/common_information/processes_tasks.rst:49 +#: ../../common_information/processes_tasks.rst:40 msgid "Finding maximum values by columns in the matrix" msgstr "" -#: ../../../../docs/common_information/processes_tasks.rst:51 -#: ../../../../docs/common_information/processes_tasks.rst:112 -#: ../../../../docs/common_information/processes_tasks.rst:168 +#: ../../common_information/processes_tasks.rst:42 +#: ../../common_information/processes_tasks.rst:103 +#: ../../common_information/processes_tasks.rst:159 msgid "17" msgstr "" -#: ../../../../docs/common_information/processes_tasks.rst:51 +#: ../../common_information/processes_tasks.rst:42 msgid "Finding minimum values by rows in the matrix" msgstr "" -#: ../../../../docs/common_information/processes_tasks.rst:53 -#: ../../../../docs/common_information/processes_tasks.rst:114 -#: ../../../../docs/common_information/processes_tasks.rst:170 +#: ../../common_information/processes_tasks.rst:44 +#: ../../common_information/processes_tasks.rst:105 +#: ../../common_information/processes_tasks.rst:161 msgid "18" msgstr "" -#: ../../../../docs/common_information/processes_tasks.rst:53 +#: ../../common_information/processes_tasks.rst:44 msgid "Finding minimum values by columns in the matrix" msgstr "" -#: ../../../../docs/common_information/processes_tasks.rst:55 -#: ../../../../docs/common_information/processes_tasks.rst:116 -#: ../../../../docs/common_information/processes_tasks.rst:172 +#: ../../common_information/processes_tasks.rst:46 +#: ../../common_information/processes_tasks.rst:107 +#: ../../common_information/processes_tasks.rst:163 msgid "19" msgstr "" -#: ../../../../docs/common_information/processes_tasks.rst:55 +#: ../../common_information/processes_tasks.rst:46 msgid "Integration – rectangle method" msgstr "" -#: ../../../../docs/common_information/processes_tasks.rst:57 -#: ../../../../docs/common_information/processes_tasks.rst:118 -#: ../../../../docs/common_information/processes_tasks.rst:174 +#: ../../common_information/processes_tasks.rst:48 +#: ../../common_information/processes_tasks.rst:109 +#: ../../common_information/processes_tasks.rst:165 msgid "20" msgstr "" -#: ../../../../docs/common_information/processes_tasks.rst:57 +#: ../../common_information/processes_tasks.rst:48 msgid "Integration – trapezoidal method" msgstr "" -#: ../../../../docs/common_information/processes_tasks.rst:59 -#: ../../../../docs/common_information/processes_tasks.rst:120 -#: ../../../../docs/common_information/processes_tasks.rst:176 -#: ../../../../docs/common_information/processes_tasks.rst:277 +#: ../../common_information/processes_tasks.rst:50 +#: ../../common_information/processes_tasks.rst:111 +#: ../../common_information/processes_tasks.rst:167 +#: ../../common_information/processes_tasks.rst:268 msgid "21" msgstr "" -#: ../../../../docs/common_information/processes_tasks.rst:59 +#: ../../common_information/processes_tasks.rst:50 msgid "Integration – Monte Carlo method" msgstr "" -#: ../../../../docs/common_information/processes_tasks.rst:61 -#: ../../../../docs/common_information/processes_tasks.rst:122 -#: ../../../../docs/common_information/processes_tasks.rst:178 +#: ../../common_information/processes_tasks.rst:52 +#: ../../common_information/processes_tasks.rst:113 +#: ../../common_information/processes_tasks.rst:169 msgid "22" msgstr "" -#: ../../../../docs/common_information/processes_tasks.rst:61 +#: ../../common_information/processes_tasks.rst:52 msgid "Counting the number of alphabetical characters in a string" msgstr "" -#: ../../../../docs/common_information/processes_tasks.rst:63 -#: ../../../../docs/common_information/processes_tasks.rst:124 -#: ../../../../docs/common_information/processes_tasks.rst:180 +#: ../../common_information/processes_tasks.rst:54 +#: ../../common_information/processes_tasks.rst:115 +#: ../../common_information/processes_tasks.rst:171 msgid "23" msgstr "" -#: ../../../../docs/common_information/processes_tasks.rst:63 +#: ../../common_information/processes_tasks.rst:54 msgid "Counting the frequency of a character in a string" msgstr "" -#: ../../../../docs/common_information/processes_tasks.rst:65 -#: ../../../../docs/common_information/processes_tasks.rst:182 +#: ../../common_information/processes_tasks.rst:56 +#: ../../common_information/processes_tasks.rst:173 msgid "24" msgstr "" -#: ../../../../docs/common_information/processes_tasks.rst:65 +#: ../../common_information/processes_tasks.rst:56 msgid "Counting the number of words in a string" msgstr "" -#: ../../../../docs/common_information/processes_tasks.rst:67 -#: ../../../../docs/common_information/processes_tasks.rst:184 +#: ../../common_information/processes_tasks.rst:58 +#: ../../common_information/processes_tasks.rst:175 msgid "25" msgstr "" -#: ../../../../docs/common_information/processes_tasks.rst:67 +#: ../../common_information/processes_tasks.rst:58 msgid "Counting the number of sentences in a string" msgstr "" -#: ../../../../docs/common_information/processes_tasks.rst:69 -#: ../../../../docs/common_information/processes_tasks.rst:186 +#: ../../common_information/processes_tasks.rst:60 +#: ../../common_information/processes_tasks.rst:177 msgid "26" msgstr "" -#: ../../../../docs/common_information/processes_tasks.rst:69 +#: ../../common_information/processes_tasks.rst:60 msgid "Checking lexicographical order of two strings" msgstr "" -#: ../../../../docs/common_information/processes_tasks.rst:71 -#: ../../../../docs/common_information/processes_tasks.rst:188 +#: ../../common_information/processes_tasks.rst:62 +#: ../../common_information/processes_tasks.rst:179 msgid "27" msgstr "" -#: ../../../../docs/common_information/processes_tasks.rst:71 +#: ../../common_information/processes_tasks.rst:62 msgid "Counting the number of differing characters between two strings" msgstr "" -#: ../../../../docs/common_information/processes_tasks.rst:75 +#: ../../common_information/processes_tasks.rst:66 msgid "Second task" msgstr "" -#: ../../../../docs/common_information/processes_tasks.rst:80 +#: ../../common_information/processes_tasks.rst:71 msgid "Broadcast (one to all transfer)" msgstr "" -#: ../../../../docs/common_information/processes_tasks.rst:82 +#: ../../common_information/processes_tasks.rst:73 msgid "Reduce (all to one transfer)" msgstr "" -#: ../../../../docs/common_information/processes_tasks.rst:84 +#: ../../common_information/processes_tasks.rst:75 msgid "Allreduce (all to one and broadcast)" msgstr "" -#: ../../../../docs/common_information/processes_tasks.rst:86 +#: ../../common_information/processes_tasks.rst:77 msgid "Scatter (one to all transfer)" msgstr "" -#: ../../../../docs/common_information/processes_tasks.rst:88 +#: ../../common_information/processes_tasks.rst:79 msgid "Gather (all to one transfer)" msgstr "" -#: ../../../../docs/common_information/processes_tasks.rst:90 +#: ../../common_information/processes_tasks.rst:81 msgid "Line" msgstr "" -#: ../../../../docs/common_information/processes_tasks.rst:92 +#: ../../common_information/processes_tasks.rst:83 msgid "Ring" msgstr "" -#: ../../../../docs/common_information/processes_tasks.rst:94 +#: ../../common_information/processes_tasks.rst:85 msgid "Star" msgstr "" -#: ../../../../docs/common_information/processes_tasks.rst:96 +#: ../../common_information/processes_tasks.rst:87 msgid "Torus Grid" msgstr "" -#: ../../../../docs/common_information/processes_tasks.rst:98 +#: ../../common_information/processes_tasks.rst:89 msgid "Hypercube" msgstr "" -#: ../../../../docs/common_information/processes_tasks.rst:100 +#: ../../common_information/processes_tasks.rst:91 msgid "Horizontal strip scheme - matrix-vector multiplication" msgstr "" -#: ../../../../docs/common_information/processes_tasks.rst:102 +#: ../../common_information/processes_tasks.rst:93 msgid "Vertical strip scheme - matrix-vector multiplication" msgstr "" -#: ../../../../docs/common_information/processes_tasks.rst:104 +#: ../../common_information/processes_tasks.rst:95 msgid "" "Horizontal strip scheme – partitioning only matrix A - matrix-matrix " "multiplication" msgstr "" -#: ../../../../docs/common_information/processes_tasks.rst:106 +#: ../../common_information/processes_tasks.rst:97 msgid "" "Horizontal strip scheme A, vertical strip scheme B - matrix-matrix " "multiplication" msgstr "" -#: ../../../../docs/common_information/processes_tasks.rst:108 +#: ../../common_information/processes_tasks.rst:99 msgid "Gaussian method – horizontal strip scheme" msgstr "" -#: ../../../../docs/common_information/processes_tasks.rst:110 +#: ../../common_information/processes_tasks.rst:101 msgid "Gaussian method – vertical strip scheme" msgstr "" -#: ../../../../docs/common_information/processes_tasks.rst:112 +#: ../../common_information/processes_tasks.rst:103 msgid "Gauss-Jordan method" msgstr "" -#: ../../../../docs/common_information/processes_tasks.rst:114 +#: ../../common_information/processes_tasks.rst:105 msgid "Iterative methods (Jacobi)" msgstr "" -#: ../../../../docs/common_information/processes_tasks.rst:116 +#: ../../common_information/processes_tasks.rst:107 msgid "Iterative methods (Gauss-Seidel)" msgstr "" -#: ../../../../docs/common_information/processes_tasks.rst:118 +#: ../../common_information/processes_tasks.rst:109 msgid "Iterative methods (Simple)" msgstr "" -#: ../../../../docs/common_information/processes_tasks.rst:120 +#: ../../common_information/processes_tasks.rst:111 msgid "Bubble sort (odd-even transposition algorithm)" msgstr "" -#: ../../../../docs/common_information/processes_tasks.rst:122 +#: ../../common_information/processes_tasks.rst:113 msgid "Image smoothing" msgstr "" -#: ../../../../docs/common_information/processes_tasks.rst:124 +#: ../../common_information/processes_tasks.rst:115 msgid "Contrast enhancement" msgstr "" -#: ../../../../docs/common_information/processes_tasks.rst:128 +#: ../../common_information/processes_tasks.rst:119 msgid "Third task" msgstr "" -#: ../../../../docs/common_information/processes_tasks.rst:133 +#: ../../common_information/processes_tasks.rst:124 msgid "" "Dense matrix multiplication. Elements of data type double. Block scheme, " "Cannon's algorithm." msgstr "" -#: ../../../../docs/common_information/processes_tasks.rst:135 +#: ../../common_information/processes_tasks.rst:126 msgid "" "Dense matrix multiplication. Elements of data type double. Block scheme, " "Fox's algorithm." msgstr "" -#: ../../../../docs/common_information/processes_tasks.rst:137 +#: ../../common_information/processes_tasks.rst:128 msgid "" "Dense matrix multiplication. Elements of data type double. Strassen's " "algorithm." msgstr "" -#: ../../../../docs/common_information/processes_tasks.rst:139 +#: ../../common_information/processes_tasks.rst:130 msgid "" "Sparse matrix multiplication. Elements of data type double. Matrix " "storage format – row format (CRS)." msgstr "" -#: ../../../../docs/common_information/processes_tasks.rst:141 +#: ../../common_information/processes_tasks.rst:132 msgid "" "Sparse matrix multiplication. Elements of data type double. Matrix " "storage format – column format (CCS)." msgstr "" -#: ../../../../docs/common_information/processes_tasks.rst:143 +#: ../../common_information/processes_tasks.rst:134 msgid "Solving systems of linear equations using the conjugate gradient method." msgstr "" -#: ../../../../docs/common_information/processes_tasks.rst:145 +#: ../../common_information/processes_tasks.rst:136 msgid "" "Computing multidimensional integrals using a multistep scheme (rectangle " "method)." msgstr "" -#: ../../../../docs/common_information/processes_tasks.rst:147 +#: ../../common_information/processes_tasks.rst:138 msgid "" "Computing multidimensional integrals using a multistep scheme " "(trapezoidal method)." msgstr "" -#: ../../../../docs/common_information/processes_tasks.rst:149 +#: ../../common_information/processes_tasks.rst:140 msgid "" "Computing multidimensional integrals using a multistep scheme (Simpson's " "method)." msgstr "" -#: ../../../../docs/common_information/processes_tasks.rst:151 +#: ../../common_information/processes_tasks.rst:142 msgid "Computing multidimensional integrals using the Monte Carlo method." msgstr "" -#: ../../../../docs/common_information/processes_tasks.rst:153 +#: ../../common_information/processes_tasks.rst:144 msgid "" "Global search algorithm (Strongin's) for one-dimensional optimization " "problems. Parallelization by characteristics." msgstr "" -#: ../../../../docs/common_information/processes_tasks.rst:156 +#: ../../common_information/processes_tasks.rst:147 msgid "" "Multistep scheme for solving two-dimensional global optimization " "problems. Parallelization by dividing the search area." msgstr "" -#: ../../../../docs/common_information/processes_tasks.rst:159 +#: ../../common_information/processes_tasks.rst:150 msgid "" "Multistep scheme for solving two-dimensional global optimization " "problems. Parallelization by characteristics." msgstr "" -#: ../../../../docs/common_information/processes_tasks.rst:162 +#: ../../common_information/processes_tasks.rst:153 msgid "Quick sort with simple merging." msgstr "" -#: ../../../../docs/common_information/processes_tasks.rst:164 +#: ../../common_information/processes_tasks.rst:155 msgid "Quick sort with odd-even merging (Batcher's method)." msgstr "" -#: ../../../../docs/common_information/processes_tasks.rst:166 +#: ../../common_information/processes_tasks.rst:157 msgid "Shell sort with simple merging." msgstr "" -#: ../../../../docs/common_information/processes_tasks.rst:168 +#: ../../common_information/processes_tasks.rst:159 msgid "Shell sort with odd-even merging (Batcher's method)." msgstr "" -#: ../../../../docs/common_information/processes_tasks.rst:170 +#: ../../common_information/processes_tasks.rst:161 msgid "Radix sort for integers with simple merging." msgstr "" -#: ../../../../docs/common_information/processes_tasks.rst:172 +#: ../../common_information/processes_tasks.rst:163 msgid "Radix sort for integers with odd-even merging (Batcher's method)." msgstr "" -#: ../../../../docs/common_information/processes_tasks.rst:174 +#: ../../common_information/processes_tasks.rst:165 msgid "Radix sort for floating-point numbers (type double) with simple merging." msgstr "" -#: ../../../../docs/common_information/processes_tasks.rst:176 +#: ../../common_information/processes_tasks.rst:167 msgid "" "Radix sort for floating-point numbers (type double) with odd-even merging" " (Batcher's method)." msgstr "" -#: ../../../../docs/common_information/processes_tasks.rst:178 +#: ../../common_information/processes_tasks.rst:169 msgid "" "Shortest path search from one vertex (Dijkstra's algorithm). With CRS " "graphs." msgstr "" -#: ../../../../docs/common_information/processes_tasks.rst:180 +#: ../../common_information/processes_tasks.rst:171 msgid "" "Shortest path search from one vertex (Bellman-Ford algorithm). With CRS " "graphs." msgstr "" -#: ../../../../docs/common_information/processes_tasks.rst:182 +#: ../../common_information/processes_tasks.rst:173 msgid "Convex hull construction – Graham's scan." msgstr "" -#: ../../../../docs/common_information/processes_tasks.rst:184 +#: ../../common_information/processes_tasks.rst:175 msgid "Convex hull construction – Jarvis's march." msgstr "" -#: ../../../../docs/common_information/processes_tasks.rst:186 +#: ../../common_information/processes_tasks.rst:177 msgid "Linear image filtering (horizontal partition). Gaussian kernel 3x3." msgstr "" -#: ../../../../docs/common_information/processes_tasks.rst:188 +#: ../../common_information/processes_tasks.rst:179 msgid "Linear image filtering (vertical partition). Gaussian kernel 3x3." msgstr "" -#: ../../../../docs/common_information/processes_tasks.rst:190 +#: ../../common_information/processes_tasks.rst:181 msgid "28" msgstr "" -#: ../../../../docs/common_information/processes_tasks.rst:190 +#: ../../common_information/processes_tasks.rst:181 msgid "Linear image filtering (block partition). Gaussian kernel 3x3." msgstr "" -#: ../../../../docs/common_information/processes_tasks.rst:192 +#: ../../common_information/processes_tasks.rst:183 msgid "29" msgstr "" -#: ../../../../docs/common_information/processes_tasks.rst:192 +#: ../../common_information/processes_tasks.rst:183 msgid "Edge detection in an image using the Sobel operator." msgstr "" -#: ../../../../docs/common_information/processes_tasks.rst:194 +#: ../../common_information/processes_tasks.rst:185 msgid "30" msgstr "" -#: ../../../../docs/common_information/processes_tasks.rst:194 +#: ../../common_information/processes_tasks.rst:185 msgid "Contrast enhancement of grayscale image using linear histogram stretching." msgstr "" -#: ../../../../docs/common_information/processes_tasks.rst:196 +#: ../../common_information/processes_tasks.rst:187 msgid "31" msgstr "" -#: ../../../../docs/common_information/processes_tasks.rst:196 +#: ../../common_information/processes_tasks.rst:187 msgid "" "Labeling components on a binary image (black areas correspond to objects," " white to background)." msgstr "" -#: ../../../../docs/common_information/processes_tasks.rst:198 +#: ../../common_information/processes_tasks.rst:189 msgid "32" msgstr "" -#: ../../../../docs/common_information/processes_tasks.rst:198 +#: ../../common_information/processes_tasks.rst:189 msgid "Convex hull construction for components of a binary image." msgstr "" -#: ../../../../docs/common_information/processes_tasks.rst:202 +#: ../../common_information/processes_tasks.rst:193 msgid "Comments for tasks 2 and 3:" msgstr "" -#: ../../../../docs/common_information/processes_tasks.rst:204 +#: ../../common_information/processes_tasks.rst:195 msgid "" "MESSAGE PASSING METHODS “You need to implement the specified methods " "using only the Send and Recv functions. The implemented function should " @@ -624,36 +609,36 @@ msgid "" "should be carried out using the ‘tree’ of processes.”" msgstr "" -#: ../../../../docs/common_information/processes_tasks.rst:212 -#: ../../../../docs/common_information/processes_tasks.rst:226 -#: ../../../../docs/common_information/processes_tasks.rst:239 -#: ../../../../docs/common_information/processes_tasks.rst:252 -#: ../../../../docs/common_information/processes_tasks.rst:262 -#: ../../../../docs/common_information/processes_tasks.rst:272 -#: ../../../../docs/common_information/processes_tasks.rst:282 +#: ../../common_information/processes_tasks.rst:203 +#: ../../common_information/processes_tasks.rst:217 +#: ../../common_information/processes_tasks.rst:230 +#: ../../common_information/processes_tasks.rst:243 +#: ../../common_information/processes_tasks.rst:253 +#: ../../common_information/processes_tasks.rst:263 +#: ../../common_information/processes_tasks.rst:273 msgid "Comments relevant for:" msgstr "" -#: ../../../../docs/common_information/processes_tasks.rst:215 +#: ../../common_information/processes_tasks.rst:206 msgid "Variants for task 2" msgstr "" -#: ../../../../docs/common_information/processes_tasks.rst:215 +#: ../../common_information/processes_tasks.rst:206 msgid "Variants for task 3" msgstr "" -#: ../../../../docs/common_information/processes_tasks.rst:217 -#: ../../../../docs/common_information/processes_tasks.rst:244 +#: ../../common_information/processes_tasks.rst:208 +#: ../../common_information/processes_tasks.rst:235 msgid "1 - 5" msgstr "" -#: ../../../../docs/common_information/processes_tasks.rst:217 -#: ../../../../docs/common_information/processes_tasks.rst:231 -#: ../../../../docs/common_information/processes_tasks.rst:287 +#: ../../common_information/processes_tasks.rst:208 +#: ../../common_information/processes_tasks.rst:222 +#: ../../common_information/processes_tasks.rst:278 msgid "x" msgstr "" -#: ../../../../docs/common_information/processes_tasks.rst:220 +#: ../../common_information/processes_tasks.rst:211 msgid "" "DATA COMMUNICATION NETWORK TOPOLOGIES “You need to implement the virtual " "topology specified in the task using MPI capabilities for working with " @@ -662,74 +647,74 @@ msgid "" "MPI_Cart_Create and MPI_Graph_Create)”" msgstr "" -#: ../../../../docs/common_information/processes_tasks.rst:229 -#: ../../../../docs/common_information/processes_tasks.rst:242 -#: ../../../../docs/common_information/processes_tasks.rst:255 -#: ../../../../docs/common_information/processes_tasks.rst:265 -#: ../../../../docs/common_information/processes_tasks.rst:275 -#: ../../../../docs/common_information/processes_tasks.rst:285 +#: ../../common_information/processes_tasks.rst:220 +#: ../../common_information/processes_tasks.rst:233 +#: ../../common_information/processes_tasks.rst:246 +#: ../../common_information/processes_tasks.rst:256 +#: ../../common_information/processes_tasks.rst:266 +#: ../../common_information/processes_tasks.rst:276 msgid "Varinats for task 2" msgstr "" -#: ../../../../docs/common_information/processes_tasks.rst:229 -#: ../../../../docs/common_information/processes_tasks.rst:242 -#: ../../../../docs/common_information/processes_tasks.rst:255 -#: ../../../../docs/common_information/processes_tasks.rst:265 -#: ../../../../docs/common_information/processes_tasks.rst:275 -#: ../../../../docs/common_information/processes_tasks.rst:285 +#: ../../common_information/processes_tasks.rst:220 +#: ../../common_information/processes_tasks.rst:233 +#: ../../common_information/processes_tasks.rst:246 +#: ../../common_information/processes_tasks.rst:256 +#: ../../common_information/processes_tasks.rst:266 +#: ../../common_information/processes_tasks.rst:276 msgid "Varinats for task 3" msgstr "" -#: ../../../../docs/common_information/processes_tasks.rst:231 +#: ../../common_information/processes_tasks.rst:222 msgid "6 - 10" msgstr "" -#: ../../../../docs/common_information/processes_tasks.rst:234 +#: ../../common_information/processes_tasks.rst:225 msgid "" "MATRIX COMPUTATIONS “In the horizontal scheme, the matrix is divided " "among processes by rows. In the vertical scheme, it is divided by " "columns, and in this case, the vector is also divided among processes.”" msgstr "" -#: ../../../../docs/common_information/processes_tasks.rst:244 +#: ../../common_information/processes_tasks.rst:235 msgid "11 - 14" msgstr "" -#: ../../../../docs/common_information/processes_tasks.rst:247 +#: ../../common_information/processes_tasks.rst:238 msgid "" "COMPUTER GRAPHICS AND IMAGE PROCESSING “It is assumed that the image is " "given in color or grayscale, with the input data being a one-dimensional " "array. Loading a real image is not required, but is allowed.”" msgstr "" -#: ../../../../docs/common_information/processes_tasks.rst:257 +#: ../../common_information/processes_tasks.rst:248 msgid "26 - 27" msgstr "" -#: ../../../../docs/common_information/processes_tasks.rst:257 +#: ../../common_information/processes_tasks.rst:248 msgid "24 - 32" msgstr "" -#: ../../../../docs/common_information/processes_tasks.rst:260 +#: ../../common_information/processes_tasks.rst:251 msgid "SOLUTION OF A SYSTEM OF LINEAR ALGEBRAIC EQUATIONS" msgstr "" -#: ../../../../docs/common_information/processes_tasks.rst:267 +#: ../../common_information/processes_tasks.rst:258 msgid "15 - 20" msgstr "" -#: ../../../../docs/common_information/processes_tasks.rst:270 +#: ../../common_information/processes_tasks.rst:261 msgid "SORT ALGORITHMS" msgstr "" -#: ../../../../docs/common_information/processes_tasks.rst:277 +#: ../../common_information/processes_tasks.rst:268 msgid "14 - 21" msgstr "" -#: ../../../../docs/common_information/processes_tasks.rst:280 +#: ../../common_information/processes_tasks.rst:271 msgid "GRAPH PROCESSING ALGORITHMS" msgstr "" -#: ../../../../docs/common_information/processes_tasks.rst:287 +#: ../../common_information/processes_tasks.rst:278 msgid "22 - 23" msgstr "" diff --git a/docs/locale/en/LC_MESSAGES/user_guide/api.po b/docs/locale/en/LC_MESSAGES/user_guide/api.po index 3448164ad..0298f382a 100644 --- a/docs/locale/en/LC_MESSAGES/user_guide/api.po +++ b/docs/locale/en/LC_MESSAGES/user_guide/api.po @@ -18,7 +18,7 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.18.0\n" +"Generated-By: Babel 2.17.0\n" #: ../../../../docs/user_guide/api.rst:2 msgid "API Reference" diff --git a/docs/locale/en/LC_MESSAGES/user_guide/build.po b/docs/locale/en/LC_MESSAGES/user_guide/build.po index 55ce1bfd2..a300741b3 100644 --- a/docs/locale/en/LC_MESSAGES/user_guide/build.po +++ b/docs/locale/en/LC_MESSAGES/user_guide/build.po @@ -20,7 +20,7 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.18.0\n" +"Generated-By: Babel 2.17.0\n" #: ../../../../docs/user_guide/build.rst:2 msgid "Build the Project with ``CMake``" @@ -92,25 +92,13 @@ msgid "*A corresponding flag can be omitted if it's not needed.*" msgstr "" #: ../../../../docs/user_guide/build.rst:42 -msgid "" -"OSH is part of the process-technology set on Linux and macOS. Linux uses " -"Open MPI OSH from the system package. macOS builds Sandia SOS from " -"``3rdparty/SOS`` and uses the system Open MPI launcher. A focused example " -"build can be configured as:" -msgstr "" - -#: ../../../../docs/user_guide/build.rst:51 msgid "**Build the project**:" msgstr "" -#: ../../../../docs/user_guide/build.rst:57 +#: ../../../../docs/user_guide/build.rst:48 msgid "**Run tests**:" msgstr "" -#: ../../../../docs/user_guide/build.rst:59 +#: ../../../../docs/user_guide/build.rst:50 msgid "Prefer the helper runner described in ``User Guide → CI``." msgstr "" - -#: ../../../../docs/user_guide/build.rst:61 -msgid "OSH example on Linux or macOS:" -msgstr "" diff --git a/docs/locale/en/LC_MESSAGES/user_guide/ci.po b/docs/locale/en/LC_MESSAGES/user_guide/ci.po index 601a246d6..19b3bffe4 100644 --- a/docs/locale/en/LC_MESSAGES/user_guide/ci.po +++ b/docs/locale/en/LC_MESSAGES/user_guide/ci.po @@ -20,7 +20,7 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.18.0\n" +"Generated-By: Babel 2.17.0\n" #: ../../../../docs/user_guide/ci.rst:2 msgid "Continuous Integration (CI)" @@ -34,9 +34,9 @@ msgstr "" msgid "" "Your pull request must pass all required CI checks before review/merge. " "The pipeline validates formatting and static analysis, builds on all " -"platforms, runs functional tests (threads, MPI, and OSH on Linux/macOS), " -"measures performance, builds docs, and publishes artifacts (coverage " -"report, docs, scoreboard)." +"platforms, runs functional tests (threads and MPI), measures performance," +" builds docs, and publishes artifacts (coverage report, docs, " +"scoreboard)." msgstr "" #: ../../../../docs/user_guide/ci.rst:9 @@ -54,8 +54,7 @@ msgid "" "Platform builds and tests (Ubuntu, macOS, Windows) — Ubuntu (GCC/Clang), " "macOS (Clang), Windows (MSVC/Clang‑CL); functional tests via " "``scripts/run_tests.py`` for threads (``--counts 1 2 3 4``; extended ``5 " -"7 11 13``) and processes (MPI/OSH on Linux and macOS, MPI on Windows, " -"``--counts 1 2 3 4``)." +"7 11 13``) and processes (MPI, ``--counts 1 2 3 4``)." msgstr "" #: ../../../../docs/user_guide/ci.rst:15 @@ -125,7 +124,7 @@ msgid "``PPC_NUM_PROC``" msgstr "" #: ../../../../docs/user_guide/ci.rst:42 -msgid "Number of MPI processes or OSH processing elements to launch." +msgid "Number of MPI processes to launch." msgstr "" #: ../../../../docs/user_guide/ci.rst:44 @@ -149,16 +148,16 @@ msgstr "" #: ../../../../docs/user_guide/ci.rst:50 msgid "" "Execution modes: - ``--running-type=threads`` — shared-memory backends " -"(OpenMP/TBB/std::thread) - ``--running-type=processes`` — MPI tests, plus" -" OSH tests on Linux and macOS - ``--running-type=performance`` — performance " -"benchmarks (mirrors CI perf job)" +"(OpenMP/TBB/std::thread) - ``--running-type=processes`` — MPI tests - " +"``--running-type=performance`` — performance benchmarks (mirrors CI perf " +"job)" msgstr "" #: ../../../../docs/user_guide/ci.rst:55 msgid "Examples:" msgstr "" -#: ../../../../docs/user_guide/ci.rst:74 +#: ../../../../docs/user_guide/ci.rst:71 msgid "" "Options: - ``--counts`` runs tests for multiple thread/process counts " "sequentially. - ``--additional-mpi-args`` passes extra launcher flags " @@ -166,120 +165,112 @@ msgid "" "command." msgstr "" -#: ../../../../docs/user_guide/ci.rst:80 +#: ../../../../docs/user_guide/ci.rst:77 msgid "Coverage and sanitizers locally" msgstr "" -#: ../../../../docs/user_guide/ci.rst:81 +#: ../../../../docs/user_guide/ci.rst:78 msgid "" "Sanitizers (Linux): configure with ``-D ENABLE_ADDRESS_SANITIZER=ON`` " "(and optional UB/Leak), run tests with ``PPC_ASAN_RUN=1``." msgstr "" -#: ../../../../docs/user_guide/ci.rst:82 +#: ../../../../docs/user_guide/ci.rst:79 msgid "" "Coverage (Linux/GCC): configure with ``-D USE_COVERAGE=ON``, run tests, " "then generate HTML via ``gcovr`` (see CI ``gcc-build-codecov`` for " "command line)." msgstr "" -#: ../../../../docs/user_guide/ci.rst:85 +#: ../../../../docs/user_guide/ci.rst:82 msgid "Docs and scoreboard artifacts" msgstr "" -#: ../../../../docs/user_guide/ci.rst:86 +#: ../../../../docs/user_guide/ci.rst:83 msgid "" "Docs: run Doxygen first (``doxygen Doxyfile``), then Sphinx EN/RU via " "CMake targets ``docs_gettext``, ``docs_update``, ``docs_html``." msgstr "" -#: ../../../../docs/user_guide/ci.rst:87 +#: ../../../../docs/user_guide/ci.rst:84 msgid "" "Scoreboard: generate perf stats (``scripts/run_tests.py --running-" "type=performance``) and build scoreboard target or use ``python3 " "scoreboard/main.py`` locally." msgstr "" -#: ../../../../docs/user_guide/ci.rst:90 +#: ../../../../docs/user_guide/ci.rst:87 msgid "Troubleshooting" msgstr "" -#: ../../../../docs/user_guide/ci.rst:91 +#: ../../../../docs/user_guide/ci.rst:88 msgid "" "Pre-commit fails: run ``pre-commit run -a`` locally (install with ``pre-" "commit install``) and commit fixes." msgstr "" -#: ../../../../docs/user_guide/ci.rst:92 +#: ../../../../docs/user_guide/ci.rst:89 msgid "" "Static analysis fails: address clang-tidy comments; do not use " -"``NOLINT``/``IWYU pragma`` in task code; keep " -"OpenMP/TBB/MPI/OSH/std::thread APIs in their matching task backend " -"directories." +"``NOLINT``/``IWYU pragma`` in task code; keep OpenMP/TBB/MPI/std::thread " +"APIs in their matching task backend directories." msgstr "" -#: ../../../../docs/user_guide/ci.rst:93 +#: ../../../../docs/user_guide/ci.rst:90 msgid "" "Tests not found/not running: verify ``settings.json`` enables required " "technologies and tests exist; see :doc:`submit_work`." msgstr "" -#: ../../../../docs/user_guide/ci.rst:94 +#: ../../../../docs/user_guide/ci.rst:91 msgid "" "Time limits exceeded: reduce data sizes; prefer env vars " "(:doc:`environment_variables`) like " "``PPC_TASK_MAX_TIME``/``PPC_PERF_MAX_TIME``; avoid sleeps/randomness." msgstr "" -#: ../../../../docs/user_guide/ci.rst:95 +#: ../../../../docs/user_guide/ci.rst:92 msgid "" "MPI runs fail locally: set ``PPC_NUM_PROC`` and try ``--additional-mpi-" "args=\\\"--oversubscribe\\\"``." msgstr "" -#: ../../../../docs/user_guide/ci.rst:96 -msgid "" -"OSH runs fail locally: on Linux verify Open MPI with OSH support is " -"installed; on macOS verify submodules are initialized and ``libfabric`` is " -"installed." -msgstr "" - -#: ../../../../docs/user_guide/ci.rst:97 +#: ../../../../docs/user_guide/ci.rst:93 msgid "" "Docs build fails: fix RST warnings; run ``doxygen Doxyfile`` before " "Sphinx targets." msgstr "" -#: ../../../../docs/user_guide/ci.rst:98 +#: ../../../../docs/user_guide/ci.rst:94 msgid "" "Performance job fails: ensure performance tests are enabled and keep " "durations within limits." msgstr "" -#: ../../../../docs/user_guide/ci.rst:101 +#: ../../../../docs/user_guide/ci.rst:97 msgid "Local clang-tidy and gcovr examples" msgstr "" -#: ../../../../docs/user_guide/ci.rst:103 +#: ../../../../docs/user_guide/ci.rst:99 msgid "clang-tidy (static analysis):" msgstr "" -#: ../../../../docs/user_guide/ci.rst:117 +#: ../../../../docs/user_guide/ci.rst:113 msgid "gcovr (coverage, GCC):" msgstr "" -#: ../../../../docs/user_guide/ci.rst:145 +#: ../../../../docs/user_guide/ci.rst:141 msgid "Tooling tips (versions and install)" msgstr "" -#: ../../../../docs/user_guide/ci.rst:147 +#: ../../../../docs/user_guide/ci.rst:143 msgid "" "clang-tidy version - CI uses clang-tidy 22. Prefer the same locally to " "avoid mismatches. - The helper may be named ``clang-tidy-22`` or ``run-" "clang-tidy-22`` on some systems." msgstr "" -#: ../../../../docs/user_guide/ci.rst:151 +#: ../../../../docs/user_guide/ci.rst:147 msgid "" "Linux - clang-tidy: install from your distro (e.g., ``apt install clang-" "tidy-22``) or use the course Docker image. - gcovr: ``python3 -m pip " @@ -287,7 +278,7 @@ msgid "" "building with GCC 14 (as in CI)." msgstr "" -#: ../../../../docs/user_guide/ci.rst:156 +#: ../../../../docs/user_guide/ci.rst:152 msgid "" "macOS - clang-tidy: ``brew install llvm``; binary at ``$(brew " "--prefix)/opt/llvm/bin/clang-tidy``. - Optionally add LLVM to PATH or " @@ -295,7 +286,7 @@ msgid "" "``brew install gcovr``." msgstr "" -#: ../../../../docs/user_guide/ci.rst:161 +#: ../../../../docs/user_guide/ci.rst:157 msgid "" "Windows - clang-tidy: install LLVM (Clang) or use ``choco install llvm``;" " ensure ``clang-tidy.exe`` is in PATH. - gcovr: ``py -m pip install " diff --git a/docs/locale/en/LC_MESSAGES/user_guide/environment.po b/docs/locale/en/LC_MESSAGES/user_guide/environment.po index 03775c3c2..a2b01b1c0 100644 --- a/docs/locale/en/LC_MESSAGES/user_guide/environment.po +++ b/docs/locale/en/LC_MESSAGES/user_guide/environment.po @@ -20,7 +20,7 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.18.0\n" +"Generated-By: Babel 2.17.0\n" #: ../../../../docs/user_guide/environment.rst:2 msgid "Set Up Your Environment" @@ -80,7 +80,7 @@ msgid "The container includes:" msgstr "" #: ../../../../docs/user_guide/environment.rst:21 -msgid "Ubuntu environment with gcc-15, CMake, MPI, OSH, OpenMP" +msgid "Ubuntu environment with gcc-15, CMake, MPI, OpenMP" msgstr "" #: ../../../../docs/user_guide/environment.rst:22 @@ -155,113 +155,70 @@ msgstr "" msgid "Linux (Ubuntu/Debian):" msgstr "" -#: ../../../../docs/user_guide/environment.rst:73 +#: ../../../../docs/user_guide/environment.rst:75 msgid "macOS (Homebrew):" msgstr "" -#: ../../../../docs/user_guide/environment.rst:81 +#: ../../../../docs/user_guide/environment.rst:83 msgid "Windows:" msgstr "" -#: ../../../../docs/user_guide/environment.rst:90 +#: ../../../../docs/user_guide/environment.rst:92 msgid "Parallel Programming Technologies" msgstr "" -#: ../../../../docs/user_guide/environment.rst:93 +#: ../../../../docs/user_guide/environment.rst:95 msgid "``MPI``" msgstr "" -#: ../../../../docs/user_guide/environment.rst:94 -#: ../../../../docs/user_guide/environment.rst:135 +#: ../../../../docs/user_guide/environment.rst:96 msgid "**Windows (MSVC)**:" msgstr "" -#: ../../../../docs/user_guide/environment.rst:96 +#: ../../../../docs/user_guide/environment.rst:98 msgid "" "`Installers link `_. You have to install " "``msmpisdk.msi`` and ``msmpisetup.exe``." msgstr "" -#: ../../../../docs/user_guide/environment.rst:98 -#: ../../../../docs/user_guide/environment.rst:121 -#: ../../../../docs/user_guide/environment.rst:147 +#: ../../../../docs/user_guide/environment.rst:100 +#: ../../../../docs/user_guide/environment.rst:116 msgid "**Linux (gcc and clang)**:" msgstr "" -#: ../../../../docs/user_guide/environment.rst:104 -#: ../../../../docs/user_guide/environment.rst:128 +#: ../../../../docs/user_guide/environment.rst:106 msgid "**MacOS (apple clang)**:" msgstr "" -#: ../../../../docs/user_guide/environment.rst:111 -msgid "``OSH``" -msgstr "" - -#: ../../../../docs/user_guide/environment.rst:94 -msgid "" -"On Linux and macOS, MPI is provided by the system Open MPI package. Windows " -"uses MS-MPI." -msgstr "" - -#: ../../../../docs/user_guide/environment.rst:112 -msgid "" -"OSH is used for process tasks as a PGAS / one-sided communication model " -"for distributed-memory systems." -msgstr "" - -#: ../../../../docs/user_guide/environment.rst:119 -msgid "" -"Linux uses the Open MPI OSH implementation from the system package. macOS " -"builds Sandia SOS from ``3rdparty/SOS`` and uses Open MPI as its " -"launcher/runtime. Windows keeps the existing MPI setup and skips OSH in the " -"MSVC/clang-cl configurations." -msgstr "" - -#: ../../../../docs/user_guide/environment.rst:132 -msgid "" -"``brew install open-mpi autoconf automake libtool libfabric coreutils gnu-" -"sed grep gawk pkgconf``" -msgstr "" - -#: ../../../../docs/user_guide/environment.rst:137 -msgid "Install MS-MPI as described in the MPI section. OSH is skipped on Windows." -msgstr "" - -#: ../../../../docs/user_guide/environment.rst:140 -msgid "" -"No vendored Open MPI source tree is used. Initialize submodules before macOS " -"builds so that ``3rdparty/SOS`` and its nested test submodule are available." -msgstr "" - -#: ../../../../docs/user_guide/environment.rst:144 +#: ../../../../docs/user_guide/environment.rst:113 msgid "``OpenMP``" msgstr "" -#: ../../../../docs/user_guide/environment.rst:145 +#: ../../../../docs/user_guide/environment.rst:114 msgid "" "``OpenMP`` is included in ``gcc`` and ``msvc``, but some components " "should be installed additionally:" msgstr "" -#: ../../../../docs/user_guide/environment.rst:153 +#: ../../../../docs/user_guide/environment.rst:122 msgid "**MacOS (llvm)**:" msgstr "" -#: ../../../../docs/user_guide/environment.rst:162 +#: ../../../../docs/user_guide/environment.rst:130 msgid "``TBB``" msgstr "" -#: ../../../../docs/user_guide/environment.rst:163 +#: ../../../../docs/user_guide/environment.rst:131 msgid "" "**Windows (MSVC)**, **Linux (gcc and clang)**, **MacOS (apple clang)**: " "Build as 3rdparty in the current project." msgstr "" -#: ../../../../docs/user_guide/environment.rst:167 +#: ../../../../docs/user_guide/environment.rst:135 msgid "``std::thread``" msgstr "" -#: ../../../../docs/user_guide/environment.rst:168 +#: ../../../../docs/user_guide/environment.rst:136 msgid "``std::thread`` is included in STL libraries." msgstr "" diff --git a/docs/locale/en/LC_MESSAGES/user_guide/environment_variables.po b/docs/locale/en/LC_MESSAGES/user_guide/environment_variables.po index 3266fb7c1..d694e0dad 100644 --- a/docs/locale/en/LC_MESSAGES/user_guide/environment_variables.po +++ b/docs/locale/en/LC_MESSAGES/user_guide/environment_variables.po @@ -20,7 +20,7 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.18.0\n" +"Generated-By: Babel 2.17.0\n" #: ../../../../docs/user_guide/environment_variables.rst:2 msgid "Environment Variables" diff --git a/docs/locale/en/LC_MESSAGES/user_guide/submit_work.po b/docs/locale/en/LC_MESSAGES/user_guide/submit_work.po index 6fa783a39..41f0f7d6a 100644 --- a/docs/locale/en/LC_MESSAGES/user_guide/submit_work.po +++ b/docs/locale/en/LC_MESSAGES/user_guide/submit_work.po @@ -20,7 +20,7 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.18.0\n" +"Generated-By: Babel 2.17.0\n" #: ../../../../docs/user_guide/submit_work.rst:2 msgid "How to create, open, and submit your work" @@ -82,9 +82,9 @@ msgstr "" #: ../../../../docs/user_guide/submit_work.rst:31 msgid "" "Technology implementations (add only those required by the semester): - " -"Processes (MPI/OSH/SEQ): ``seq/include``, ``seq/src``, ``mpi/include``, " -"``mpi/src``, ``osh/include``, ``osh/src`` - Threads: ``seq``, ``omp``, " -"``tbb``, ``stl`` (same include/src split)" +"Processes (MPI/SEQ): ``seq/include``, ``seq/src``, ``mpi/include``, " +"``mpi/src`` - Threads: ``seq``, ``omp``, ``tbb``, ``stl`` (same " +"include/src split)" msgstr "" #: ../../../../docs/user_guide/submit_work.rst:35 @@ -110,63 +110,63 @@ msgstr "" msgid "Functional tests example:" msgstr "" -#: ../../../../docs/user_guide/submit_work.rst:91 +#: ../../../../docs/user_guide/submit_work.rst:90 msgid "Use ``PPC_ID_`` to resolve resources from ``data/`` when needed." msgstr "" -#: ../../../../docs/user_guide/submit_work.rst:93 +#: ../../../../docs/user_guide/submit_work.rst:92 msgid "Performance tests example:" msgstr "" -#: ../../../../docs/user_guide/submit_work.rst:101 +#: ../../../../docs/user_guide/submit_work.rst:100 msgid "Tips for tests" msgstr "" -#: ../../../../docs/user_guide/submit_work.rst:102 +#: ../../../../docs/user_guide/submit_work.rst:101 msgid "" "Keep tests deterministic and under time limits; prefer env vars (see " "``User Guide → Environment Variables``) over sleeps." msgstr "" -#: ../../../../docs/user_guide/submit_work.rst:103 +#: ../../../../docs/user_guide/submit_work.rst:102 msgid "Use ``PPC_ID_`` to access files from ``data/``." msgstr "" -#: ../../../../docs/user_guide/submit_work.rst:104 +#: ../../../../docs/user_guide/submit_work.rst:103 msgid "" "Cover edge cases in functional tests; add focused performance tests for " "enabled implementations." msgstr "" -#: ../../../../docs/user_guide/submit_work.rst:106 +#: ../../../../docs/user_guide/submit_work.rst:105 msgid "``data/`` — optional input files for tests (e.g., images)." msgstr "" -#: ../../../../docs/user_guide/submit_work.rst:107 +#: ../../../../docs/user_guide/submit_work.rst:106 msgid "``settings.json`` — enable required technologies for your semester, e.g.:" msgstr "" -#: ../../../../docs/user_guide/submit_work.rst:113 +#: ../../../../docs/user_guide/submit_work.rst:112 msgid "``info.json`` — student metadata used in automation (scoreboard, macros):" msgstr "" -#: ../../../../docs/user_guide/submit_work.rst:120 +#: ../../../../docs/user_guide/submit_work.rst:119 msgid "Build and local run" msgstr "" -#: ../../../../docs/user_guide/submit_work.rst:121 +#: ../../../../docs/user_guide/submit_work.rst:120 msgid "Configure and build:" msgstr "" -#: ../../../../docs/user_guide/submit_work.rst:128 +#: ../../../../docs/user_guide/submit_work.rst:127 msgid "Run tests via helper:" msgstr "" -#: ../../../../docs/user_guide/submit_work.rst:139 +#: ../../../../docs/user_guide/submit_work.rst:138 msgid "Executables (where to find tests)" msgstr "" -#: ../../../../docs/user_guide/submit_work.rst:140 +#: ../../../../docs/user_guide/submit_work.rst:139 msgid "" "``build/bin`` (or ``install/bin``): - ``core_func_tests`` — core library " "tests first - ``ppc_func_tests`` — functional tests for all " @@ -174,27 +174,27 @@ msgid "" "tasks/technologies" msgstr "" -#: ../../../../docs/user_guide/submit_work.rst:145 +#: ../../../../docs/user_guide/submit_work.rst:144 msgid "" "The runner applies gtest filters automatically to select technology " "suites." msgstr "" -#: ../../../../docs/user_guide/submit_work.rst:148 +#: ../../../../docs/user_guide/submit_work.rst:147 msgid "Pull Request" msgstr "" -#: ../../../../docs/user_guide/submit_work.rst:149 +#: ../../../../docs/user_guide/submit_work.rst:148 msgid "Title format (example):" msgstr "" -#: ../../../../docs/user_guide/submit_work.rst:151 +#: ../../../../docs/user_guide/submit_work.rst:150 msgid "" -"``<Фамилия Имя>. Технология . <Название задачи>. Вариант" -" .``" +"``<Фамилия Имя>. Технология . <Название задачи>. Вариант " +".``" msgstr "" -#: ../../../../docs/user_guide/submit_work.rst:153 +#: ../../../../docs/user_guide/submit_work.rst:152 msgid "" "Description should include: - Полное описание задачи; номер варианта; " "используемая технология - Краткое описание реализации и отчёта - Чек-лист" @@ -203,75 +203,75 @@ msgid "" "достоверность сведений)." msgstr "" -#: ../../../../docs/user_guide/submit_work.rst:159 +#: ../../../../docs/user_guide/submit_work.rst:160 msgid "PR checklist template (body)" msgstr "" -#: ../../../../docs/user_guide/submit_work.rst:182 +#: ../../../../docs/user_guide/submit_work.rst:208 msgid "Common pitfalls (read before pushing)" msgstr "" -#: ../../../../docs/user_guide/submit_work.rst:183 +#: ../../../../docs/user_guide/submit_work.rst:209 msgid "Wrong folder/branch name. Must be ``__`` everywhere." msgstr "" -#: ../../../../docs/user_guide/submit_work.rst:184 +#: ../../../../docs/user_guide/submit_work.rst:210 msgid "Missing or wrong ``GetStaticTypeOfTask`` value for a technology." msgstr "" -#: ../../../../docs/user_guide/submit_work.rst:185 +#: ../../../../docs/user_guide/submit_work.rst:211 msgid "Tests rely on randomness or sleeps instead of env time limits." msgstr "" -#: ../../../../docs/user_guide/submit_work.rst:186 +#: ../../../../docs/user_guide/submit_work.rst:212 msgid "``settings.json`` doesn’t enable a required technology — tests won’t run." msgstr "" -#: ../../../../docs/user_guide/submit_work.rst:187 +#: ../../../../docs/user_guide/submit_work.rst:213 msgid "Namespace doesn’t match the folder name and collides with others." msgstr "" -#: ../../../../docs/user_guide/submit_work.rst:188 +#: ../../../../docs/user_guide/submit_work.rst:214 msgid "Performance tests count or naming deviates from the required patterns." msgstr "" -#: ../../../../docs/user_guide/submit_work.rst:191 +#: ../../../../docs/user_guide/submit_work.rst:217 msgid "Useful examples to reference" msgstr "" -#: ../../../../docs/user_guide/submit_work.rst:192 +#: ../../../../docs/user_guide/submit_work.rst:218 msgid "" -"Processes: ``tasks/example/processes/t1``, " -"``tasks/example/processes/t2``, ``tasks/example/processes/t3``" +"Processes: ``tasks/example/processes/t1``, ``tasks/example/processes/t2``, " +"``tasks/example/processes/t3``" msgstr "" -#: ../../../../docs/user_guide/submit_work.rst:193 +#: ../../../../docs/user_guide/submit_work.rst:219 msgid "Threads: ``tasks/example/threads``" msgstr "" -#: ../../../../docs/user_guide/submit_work.rst:195 +#: ../../../../docs/user_guide/submit_work.rst:221 msgid "" "Work from your fork in a dedicated branch (not ``master``). Branch name " "must match your task folder." msgstr "" -#: ../../../../docs/user_guide/submit_work.rst:198 +#: ../../../../docs/user_guide/submit_work.rst:224 msgid "Notes" msgstr "" -#: ../../../../docs/user_guide/submit_work.rst:199 +#: ../../../../docs/user_guide/submit_work.rst:225 msgid "" "All classes should live in a unique namespace (e.g., " "``__``)." msgstr "" -#: ../../../../docs/user_guide/submit_work.rst:200 +#: ../../../../docs/user_guide/submit_work.rst:226 msgid "" "Keep tests deterministic and within time limits; prefer env vars over " "sleeps." msgstr "" -#: ../../../../docs/user_guide/submit_work.rst:201 +#: ../../../../docs/user_guide/submit_work.rst:227 msgid "" "Follow code style (clang-format/clang-tidy), and run pre-commit hooks " "locally." diff --git a/docs/locale/ru/LC_MESSAGES/common_information/points.po b/docs/locale/ru/LC_MESSAGES/common_information/points.po index d1a25777c..521ba1eec 100644 --- a/docs/locale/ru/LC_MESSAGES/common_information/points.po +++ b/docs/locale/ru/LC_MESSAGES/common_information/points.po @@ -20,7 +20,7 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.18.0\n" +"Generated-By: Babel 2.17.0\n" #: ../../../../docs/common_information/points.rst:2 msgid "Points" @@ -39,32 +39,32 @@ msgid "Report points are distributed per task and sum to 10" msgstr "Баллы за отчёт распределяются по задачам и суммарно равны 10" #: ../../../../docs/common_information/points.rst:11 -msgid "Processes semester (MPI / OSH)" -msgstr "Семестр процессов (MPI / OSH)" +msgid "Processes semester (MPI)" +msgstr "Семестр процессов (MPI)" #: ../../../../docs/common_information/points.rst:13 msgid "" -"Task 1 — Total: 12 - Implementation: MPI or OSH 8 + Seq 2 - Performance: " -"0 - Report: 2" +"Task 1 — Total: 12 - Implementation: MPI 8 + Seq 2 - Performance: 0 - " +"Report: 2" msgstr "" -"Задача 1 — Итого: 12 — Реализация: MPI или OSH 8 + Seq 2 — " -"Производительность: 0 — Отчёт: 2" +"Задача 1 — Итого: 12 — Реализация: MPI 8 + Seq 2 — Производительность: 0 " +"— Отчёт: 2" #: ../../../../docs/common_information/points.rst:18 msgid "" -"Task 2 — Total: 23 - Implementation: MPI or OSH 12 + Seq 3 - Performance:" -" 5 - Report: 3" +"Task 2 — Total: 23 - Implementation: MPI 12 + Seq 3 - Performance: 5 - " +"Report: 3" msgstr "" -"Задача 2 — Итого: 23 — Реализация: MPI или OSH 12 + Seq 3 — " -"Производительность: 5 — Отчёт: 3" +"Задача 2 — Итого: 23 — Реализация: MPI 12 + Seq 3 — Производительность: 5" +" — Отчёт: 3" #: ../../../../docs/common_information/points.rst:23 msgid "" -"Task 3 — Total: 35 - Implementation: MPI or OSH 16 + Seq 4 - Performance:" -" 10 - Report: 5" +"Task 3 — Total: 35 - Implementation: MPI 16 + Seq 4 - Performance: 10 - " +"Report: 5" msgstr "" -"Задача 3 — Итого: 35 — Реализация: MPI или OSH 16 + Seq 4 — " -"Производительность: 10 — Отчёт: 5" +"Задача 3 — Итого: 35 — Реализация: MPI 16 + Seq 4 — Производительность: " +"10 — Отчёт: 5" #: ../../../../docs/common_information/points.rst:28 msgid "Semester total: 70" diff --git a/docs/locale/ru/LC_MESSAGES/common_information/processes_tasks.po b/docs/locale/ru/LC_MESSAGES/common_information/processes_tasks.po index fce746e94..4da4dd92a 100644 --- a/docs/locale/ru/LC_MESSAGES/common_information/processes_tasks.po +++ b/docs/locale/ru/LC_MESSAGES/common_information/processes_tasks.po @@ -2,8 +2,7 @@ # Copyright (C) 2025, Learning Process # This file is distributed under the same license as the Parallel # Programming Course package. -# Learning Process Team , 2025. +# Learning Process Team , 2025. # msgid "" msgstr "" @@ -13,650 +12,593 @@ msgstr "" "PO-Revision-Date: 2025-07-27 18:21+0200\n" "Last-Translator: Learning Process Team \n" "Language: ru\n" -"Language-Team: Learning Process Team (gooddoog@student.su, " -"nesterov.alexander@outlook.com)\n" +"Language-Team: Learning Process Team (gooddoog@student.su, nesterov.alexander@outlook.com)\n" "Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && " "n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.18.0\n" +"Generated-By: Babel 2.17.0\n" -#: ../../../../docs/common_information/processes_tasks.rst:2 +#: ../../common_information/processes_tasks.rst:2 msgid "Processes parallelism tasks" msgstr "Задачи параллелизма на процессах" -#: ../../../../docs/common_information/processes_tasks.rst:5 -msgid "Distributed-memory technologies" -msgstr "Технологии распределённой памяти" - -#: ../../../../docs/common_information/processes_tasks.rst:7 -msgid "" -"The processes semester targets distributed-memory programming. MPI " -"remains the baseline message-passing technology, and OSH is available on " -"Linux and macOS as a PGAS / one-sided communication alternative for process " -"tasks. Keep OSH implementations under ``osh`` task backend directories; do " -"not move them to the threads semester." -msgstr "" -"Семестр процессов ориентирован на программирование для распределённой " -"памяти. MPI остаётся базовой технологией передачи сообщений, а OSH " -"доступен на Linux и macOS как PGAS / one-sided communication альтернатива " -"для задач на процессах. Размещайте OSH-реализации в backend-директориях " -"задач ``osh``; не переносите их в семестр потоков." - -#: ../../../../docs/common_information/processes_tasks.rst:14 +#: ../../common_information/processes_tasks.rst:5 msgid "First task" msgstr "Первая задача" -#: ../../../../docs/common_information/processes_tasks.rst:17 -#: ../../../../docs/common_information/processes_tasks.rst:78 -#: ../../../../docs/common_information/processes_tasks.rst:131 +#: ../../common_information/processes_tasks.rst:8 +#: ../../common_information/processes_tasks.rst:69 +#: ../../common_information/processes_tasks.rst:122 msgid "Variant Number" msgstr "Номер варианта" -#: ../../../../docs/common_information/processes_tasks.rst:17 -#: ../../../../docs/common_information/processes_tasks.rst:78 -#: ../../../../docs/common_information/processes_tasks.rst:131 +#: ../../common_information/processes_tasks.rst:8 +#: ../../common_information/processes_tasks.rst:69 +#: ../../common_information/processes_tasks.rst:122 msgid "Task" msgstr "Задача" -#: ../../../../docs/common_information/processes_tasks.rst:19 -#: ../../../../docs/common_information/processes_tasks.rst:80 -#: ../../../../docs/common_information/processes_tasks.rst:133 +#: ../../common_information/processes_tasks.rst:10 +#: ../../common_information/processes_tasks.rst:71 +#: ../../common_information/processes_tasks.rst:124 msgid "1" msgstr "1" -#: ../../../../docs/common_information/processes_tasks.rst:19 +#: ../../common_information/processes_tasks.rst:10 msgid "Sum of vector elements" msgstr "Сумма элементов вектора" -#: ../../../../docs/common_information/processes_tasks.rst:21 -#: ../../../../docs/common_information/processes_tasks.rst:82 -#: ../../../../docs/common_information/processes_tasks.rst:135 +#: ../../common_information/processes_tasks.rst:12 +#: ../../common_information/processes_tasks.rst:73 +#: ../../common_information/processes_tasks.rst:126 msgid "2" msgstr "2" -#: ../../../../docs/common_information/processes_tasks.rst:21 +#: ../../common_information/processes_tasks.rst:12 msgid "Calculating the average value of vector elements" msgstr "Вычисление среднего значения элементов вектора" -#: ../../../../docs/common_information/processes_tasks.rst:23 -#: ../../../../docs/common_information/processes_tasks.rst:84 -#: ../../../../docs/common_information/processes_tasks.rst:137 +#: ../../common_information/processes_tasks.rst:14 +#: ../../common_information/processes_tasks.rst:75 +#: ../../common_information/processes_tasks.rst:128 msgid "3" msgstr "3" -#: ../../../../docs/common_information/processes_tasks.rst:23 +#: ../../common_information/processes_tasks.rst:14 msgid "Maximum value of vector elements" msgstr "Максимальное значение элементов вектора" -#: ../../../../docs/common_information/processes_tasks.rst:25 -#: ../../../../docs/common_information/processes_tasks.rst:86 -#: ../../../../docs/common_information/processes_tasks.rst:139 +#: ../../common_information/processes_tasks.rst:16 +#: ../../common_information/processes_tasks.rst:77 +#: ../../common_information/processes_tasks.rst:130 msgid "4" msgstr "4" -#: ../../../../docs/common_information/processes_tasks.rst:25 +#: ../../common_information/processes_tasks.rst:16 msgid "Minimum value of vector elements" msgstr "Минимальное значение элементов вектора" -#: ../../../../docs/common_information/processes_tasks.rst:27 -#: ../../../../docs/common_information/processes_tasks.rst:88 -#: ../../../../docs/common_information/processes_tasks.rst:141 +#: ../../common_information/processes_tasks.rst:18 +#: ../../common_information/processes_tasks.rst:79 +#: ../../common_information/processes_tasks.rst:132 msgid "5" msgstr "5" -#: ../../../../docs/common_information/processes_tasks.rst:27 +#: ../../common_information/processes_tasks.rst:18 msgid "" "Finding the number of sign alternations between adjacent elements of the " "vector" msgstr "Нахождение числа чередований знаков значений соседних элементов вектора" -#: ../../../../docs/common_information/processes_tasks.rst:29 -#: ../../../../docs/common_information/processes_tasks.rst:90 -#: ../../../../docs/common_information/processes_tasks.rst:143 -#: ../../../../docs/common_information/processes_tasks.rst:267 +#: ../../common_information/processes_tasks.rst:20 +#: ../../common_information/processes_tasks.rst:81 +#: ../../common_information/processes_tasks.rst:134 +#: ../../common_information/processes_tasks.rst:258 msgid "6" msgstr "6" -#: ../../../../docs/common_information/processes_tasks.rst:29 +#: ../../common_information/processes_tasks.rst:20 msgid "" "Finding the number of order violations between adjacent elements of the " "vector" msgstr "Нахождение числа нарушений упорядоченности соседних элементов вектора" -#: ../../../../docs/common_information/processes_tasks.rst:31 -#: ../../../../docs/common_information/processes_tasks.rst:92 -#: ../../../../docs/common_information/processes_tasks.rst:145 +#: ../../common_information/processes_tasks.rst:22 +#: ../../common_information/processes_tasks.rst:83 +#: ../../common_information/processes_tasks.rst:136 msgid "7" msgstr "7" -#: ../../../../docs/common_information/processes_tasks.rst:31 +#: ../../common_information/processes_tasks.rst:22 msgid "Finding the most similar adjacent elements of the vector" msgstr "Нахождение наиболее близких соседних элементов вектора" -#: ../../../../docs/common_information/processes_tasks.rst:33 -#: ../../../../docs/common_information/processes_tasks.rst:94 -#: ../../../../docs/common_information/processes_tasks.rst:147 +#: ../../common_information/processes_tasks.rst:24 +#: ../../common_information/processes_tasks.rst:85 +#: ../../common_information/processes_tasks.rst:138 msgid "8" msgstr "8" -#: ../../../../docs/common_information/processes_tasks.rst:33 +#: ../../common_information/processes_tasks.rst:24 msgid "Finding the most different adjacent elements of the vector" msgstr "Нахождение наиболее отличающихся по значению соседних элементов вектора" -#: ../../../../docs/common_information/processes_tasks.rst:35 -#: ../../../../docs/common_information/processes_tasks.rst:96 -#: ../../../../docs/common_information/processes_tasks.rst:149 +#: ../../common_information/processes_tasks.rst:26 +#: ../../common_information/processes_tasks.rst:87 +#: ../../common_information/processes_tasks.rst:140 msgid "9" msgstr "9" -#: ../../../../docs/common_information/processes_tasks.rst:35 +#: ../../common_information/processes_tasks.rst:26 msgid "Scalar product of vectors" msgstr "Скалярное произведение векторов" -#: ../../../../docs/common_information/processes_tasks.rst:37 -#: ../../../../docs/common_information/processes_tasks.rst:98 -#: ../../../../docs/common_information/processes_tasks.rst:151 +#: ../../common_information/processes_tasks.rst:28 +#: ../../common_information/processes_tasks.rst:89 +#: ../../common_information/processes_tasks.rst:142 msgid "10" msgstr "10" -#: ../../../../docs/common_information/processes_tasks.rst:37 +#: ../../common_information/processes_tasks.rst:28 msgid "Sum of matrix elements" msgstr "Сумма элементов матрицы" -#: ../../../../docs/common_information/processes_tasks.rst:39 -#: ../../../../docs/common_information/processes_tasks.rst:100 -#: ../../../../docs/common_information/processes_tasks.rst:153 +#: ../../common_information/processes_tasks.rst:30 +#: ../../common_information/processes_tasks.rst:91 +#: ../../common_information/processes_tasks.rst:144 msgid "11" msgstr "11" -#: ../../../../docs/common_information/processes_tasks.rst:39 +#: ../../common_information/processes_tasks.rst:30 msgid "Sum of values by rows in the matrix" msgstr "Сумма значений по строкам матрицы" -#: ../../../../docs/common_information/processes_tasks.rst:41 -#: ../../../../docs/common_information/processes_tasks.rst:102 -#: ../../../../docs/common_information/processes_tasks.rst:156 +#: ../../common_information/processes_tasks.rst:32 +#: ../../common_information/processes_tasks.rst:93 +#: ../../common_information/processes_tasks.rst:147 msgid "12" msgstr "12" -#: ../../../../docs/common_information/processes_tasks.rst:41 +#: ../../common_information/processes_tasks.rst:32 msgid "Sum of values by columns in the matrix" msgstr "Сумма значений по столбцам матрицы" -#: ../../../../docs/common_information/processes_tasks.rst:43 -#: ../../../../docs/common_information/processes_tasks.rst:104 -#: ../../../../docs/common_information/processes_tasks.rst:159 +#: ../../common_information/processes_tasks.rst:34 +#: ../../common_information/processes_tasks.rst:95 +#: ../../common_information/processes_tasks.rst:150 msgid "13" msgstr "13" -#: ../../../../docs/common_information/processes_tasks.rst:43 +#: ../../common_information/processes_tasks.rst:34 msgid "Maximum value of matrix elements" msgstr "Максимальное значение элементов матрицы" -#: ../../../../docs/common_information/processes_tasks.rst:45 -#: ../../../../docs/common_information/processes_tasks.rst:106 -#: ../../../../docs/common_information/processes_tasks.rst:162 +#: ../../common_information/processes_tasks.rst:36 +#: ../../common_information/processes_tasks.rst:97 +#: ../../common_information/processes_tasks.rst:153 msgid "14" msgstr "14" -#: ../../../../docs/common_information/processes_tasks.rst:45 +#: ../../common_information/processes_tasks.rst:36 msgid "Minimum value of matrix elements" msgstr "Минимальное значение элементов матрицы" -#: ../../../../docs/common_information/processes_tasks.rst:47 -#: ../../../../docs/common_information/processes_tasks.rst:108 -#: ../../../../docs/common_information/processes_tasks.rst:164 +#: ../../common_information/processes_tasks.rst:38 +#: ../../common_information/processes_tasks.rst:99 +#: ../../common_information/processes_tasks.rst:155 msgid "15" msgstr "15" -#: ../../../../docs/common_information/processes_tasks.rst:47 +#: ../../common_information/processes_tasks.rst:38 msgid "Finding maximum values by rows in the matrix" msgstr "Нахождение максимальных значений по строкам матрицы" -#: ../../../../docs/common_information/processes_tasks.rst:49 -#: ../../../../docs/common_information/processes_tasks.rst:110 -#: ../../../../docs/common_information/processes_tasks.rst:166 +#: ../../common_information/processes_tasks.rst:40 +#: ../../common_information/processes_tasks.rst:101 +#: ../../common_information/processes_tasks.rst:157 msgid "16" msgstr "16" -#: ../../../../docs/common_information/processes_tasks.rst:49 +#: ../../common_information/processes_tasks.rst:40 msgid "Finding maximum values by columns in the matrix" msgstr "Нахождение максимальных значений по столбцам матрицы" -#: ../../../../docs/common_information/processes_tasks.rst:51 -#: ../../../../docs/common_information/processes_tasks.rst:112 -#: ../../../../docs/common_information/processes_tasks.rst:168 +#: ../../common_information/processes_tasks.rst:42 +#: ../../common_information/processes_tasks.rst:103 +#: ../../common_information/processes_tasks.rst:159 msgid "17" msgstr "17" -#: ../../../../docs/common_information/processes_tasks.rst:51 +#: ../../common_information/processes_tasks.rst:42 msgid "Finding minimum values by rows in the matrix" msgstr "Нахождение минимальных значений по строкам матрицы" -#: ../../../../docs/common_information/processes_tasks.rst:53 -#: ../../../../docs/common_information/processes_tasks.rst:114 -#: ../../../../docs/common_information/processes_tasks.rst:170 +#: ../../common_information/processes_tasks.rst:44 +#: ../../common_information/processes_tasks.rst:105 +#: ../../common_information/processes_tasks.rst:161 msgid "18" msgstr "18" -#: ../../../../docs/common_information/processes_tasks.rst:53 +#: ../../common_information/processes_tasks.rst:44 msgid "Finding minimum values by columns in the matrix" msgstr "Нахождение минимальных значений по столбцам матрицы" -#: ../../../../docs/common_information/processes_tasks.rst:55 -#: ../../../../docs/common_information/processes_tasks.rst:116 -#: ../../../../docs/common_information/processes_tasks.rst:172 +#: ../../common_information/processes_tasks.rst:46 +#: ../../common_information/processes_tasks.rst:107 +#: ../../common_information/processes_tasks.rst:163 msgid "19" msgstr "19" -#: ../../../../docs/common_information/processes_tasks.rst:55 +#: ../../common_information/processes_tasks.rst:46 msgid "Integration – rectangle method" msgstr "Интегрирование – метод прямоугольников" -#: ../../../../docs/common_information/processes_tasks.rst:57 -#: ../../../../docs/common_information/processes_tasks.rst:118 -#: ../../../../docs/common_information/processes_tasks.rst:174 +#: ../../common_information/processes_tasks.rst:48 +#: ../../common_information/processes_tasks.rst:109 +#: ../../common_information/processes_tasks.rst:165 msgid "20" msgstr "20" -#: ../../../../docs/common_information/processes_tasks.rst:57 +#: ../../common_information/processes_tasks.rst:48 msgid "Integration – trapezoidal method" msgstr "Интегрирование – метод трапеций" -#: ../../../../docs/common_information/processes_tasks.rst:59 -#: ../../../../docs/common_information/processes_tasks.rst:120 -#: ../../../../docs/common_information/processes_tasks.rst:176 -#: ../../../../docs/common_information/processes_tasks.rst:277 +#: ../../common_information/processes_tasks.rst:50 +#: ../../common_information/processes_tasks.rst:111 +#: ../../common_information/processes_tasks.rst:167 +#: ../../common_information/processes_tasks.rst:268 msgid "21" msgstr "21" -#: ../../../../docs/common_information/processes_tasks.rst:59 +#: ../../common_information/processes_tasks.rst:50 msgid "Integration – Monte Carlo method" msgstr "Интегрирование – метод Монте-Карло" -#: ../../../../docs/common_information/processes_tasks.rst:61 -#: ../../../../docs/common_information/processes_tasks.rst:122 -#: ../../../../docs/common_information/processes_tasks.rst:178 +#: ../../common_information/processes_tasks.rst:52 +#: ../../common_information/processes_tasks.rst:113 +#: ../../common_information/processes_tasks.rst:169 msgid "22" msgstr "22" -#: ../../../../docs/common_information/processes_tasks.rst:61 +#: ../../common_information/processes_tasks.rst:52 msgid "Counting the number of alphabetical characters in a string" msgstr "Подсчет числа буквенных символов в строке" -#: ../../../../docs/common_information/processes_tasks.rst:63 -#: ../../../../docs/common_information/processes_tasks.rst:124 -#: ../../../../docs/common_information/processes_tasks.rst:180 +#: ../../common_information/processes_tasks.rst:54 +#: ../../common_information/processes_tasks.rst:115 +#: ../../common_information/processes_tasks.rst:171 msgid "23" msgstr "23" -#: ../../../../docs/common_information/processes_tasks.rst:63 +#: ../../common_information/processes_tasks.rst:54 msgid "Counting the frequency of a character in a string" msgstr "Подсчет частоты символа в строке" -#: ../../../../docs/common_information/processes_tasks.rst:65 -#: ../../../../docs/common_information/processes_tasks.rst:182 +#: ../../common_information/processes_tasks.rst:56 +#: ../../common_information/processes_tasks.rst:173 msgid "24" msgstr "24" -#: ../../../../docs/common_information/processes_tasks.rst:65 +#: ../../common_information/processes_tasks.rst:56 msgid "Counting the number of words in a string" msgstr "Подсчет числа слов в строке" -#: ../../../../docs/common_information/processes_tasks.rst:67 -#: ../../../../docs/common_information/processes_tasks.rst:184 +#: ../../common_information/processes_tasks.rst:58 +#: ../../common_information/processes_tasks.rst:175 msgid "25" msgstr "25" -#: ../../../../docs/common_information/processes_tasks.rst:67 +#: ../../common_information/processes_tasks.rst:58 msgid "Counting the number of sentences in a string" msgstr "Подсчет числа предложений в строке" -#: ../../../../docs/common_information/processes_tasks.rst:69 -#: ../../../../docs/common_information/processes_tasks.rst:186 +#: ../../common_information/processes_tasks.rst:60 +#: ../../common_information/processes_tasks.rst:177 msgid "26" msgstr "26" -#: ../../../../docs/common_information/processes_tasks.rst:69 +#: ../../common_information/processes_tasks.rst:60 msgid "Checking lexicographical order of two strings" msgstr "Проверка лексикографической упорядоченности двух строк" -#: ../../../../docs/common_information/processes_tasks.rst:71 -#: ../../../../docs/common_information/processes_tasks.rst:188 +#: ../../common_information/processes_tasks.rst:62 +#: ../../common_information/processes_tasks.rst:179 msgid "27" msgstr "27" -#: ../../../../docs/common_information/processes_tasks.rst:71 +#: ../../common_information/processes_tasks.rst:62 msgid "Counting the number of differing characters between two strings" msgstr "Подсчет числа несовпадающих символов двух строк" -#: ../../../../docs/common_information/processes_tasks.rst:75 +#: ../../common_information/processes_tasks.rst:66 msgid "Second task" msgstr "Вторая задача" -#: ../../../../docs/common_information/processes_tasks.rst:80 +#: ../../common_information/processes_tasks.rst:71 msgid "Broadcast (one to all transfer)" msgstr "Передача от одного всем (broadcast)" -#: ../../../../docs/common_information/processes_tasks.rst:82 +#: ../../common_information/processes_tasks.rst:73 msgid "Reduce (all to one transfer)" msgstr "Передача от всех одному (reduce)" -#: ../../../../docs/common_information/processes_tasks.rst:84 +#: ../../common_information/processes_tasks.rst:75 msgid "Allreduce (all to one and broadcast)" msgstr "Передача от всех одному и рассылка (allreduce)" -#: ../../../../docs/common_information/processes_tasks.rst:86 +#: ../../common_information/processes_tasks.rst:77 msgid "Scatter (one to all transfer)" msgstr "Обобщенная передача от одного всем (scatter)" -#: ../../../../docs/common_information/processes_tasks.rst:88 +#: ../../common_information/processes_tasks.rst:79 msgid "Gather (all to one transfer)" msgstr "Обобщенная передача от всех одному (gather)" -#: ../../../../docs/common_information/processes_tasks.rst:90 +#: ../../common_information/processes_tasks.rst:81 msgid "Line" msgstr "Линейка" -#: ../../../../docs/common_information/processes_tasks.rst:92 +#: ../../common_information/processes_tasks.rst:83 msgid "Ring" msgstr "Кольцо" -#: ../../../../docs/common_information/processes_tasks.rst:94 +#: ../../common_information/processes_tasks.rst:85 msgid "Star" msgstr "Звезда" -#: ../../../../docs/common_information/processes_tasks.rst:96 +#: ../../common_information/processes_tasks.rst:87 msgid "Torus Grid" msgstr "Решетка-тор" -#: ../../../../docs/common_information/processes_tasks.rst:98 +#: ../../common_information/processes_tasks.rst:89 msgid "Hypercube" msgstr "Гиперкуб" -#: ../../../../docs/common_information/processes_tasks.rst:100 +#: ../../common_information/processes_tasks.rst:91 msgid "Horizontal strip scheme - matrix-vector multiplication" msgstr "Ленточная горизонтальная схема - умножение матрицы на вектор" -#: ../../../../docs/common_information/processes_tasks.rst:102 +#: ../../common_information/processes_tasks.rst:93 msgid "Vertical strip scheme - matrix-vector multiplication" msgstr "Ленточная вертикальная схема - умножение матрицы на вектор" -#: ../../../../docs/common_information/processes_tasks.rst:104 +#: ../../common_information/processes_tasks.rst:95 msgid "" "Horizontal strip scheme – partitioning only matrix A - matrix-matrix " "multiplication" -msgstr "" -"Ленточная горизонтальная схема - разбиение только матрицы А - умножение " -"матрицы на матрицу" +msgstr "Ленточная горизонтальная схема - разбиение только матрицы А - умножение матрицы на матрицу" -#: ../../../../docs/common_information/processes_tasks.rst:106 +#: ../../common_information/processes_tasks.rst:97 msgid "" "Horizontal strip scheme A, vertical strip scheme B - matrix-matrix " "multiplication" -msgstr "" -"Ленточная горизонтальная схема А, вертикальное В - умножение матрицы на " -"матрицу" +msgstr "Ленточная горизонтальная схема А, вертикальное В - умножение матрицы на матрицу" -#: ../../../../docs/common_information/processes_tasks.rst:108 +#: ../../common_information/processes_tasks.rst:99 msgid "Gaussian method – horizontal strip scheme" msgstr "Метод Гаусса – ленточная горизонтальная схема" -#: ../../../../docs/common_information/processes_tasks.rst:110 +#: ../../common_information/processes_tasks.rst:101 msgid "Gaussian method – vertical strip scheme" msgstr "Метод Гаусса – ленточная вертикальная схема" -#: ../../../../docs/common_information/processes_tasks.rst:112 +#: ../../common_information/processes_tasks.rst:103 msgid "Gauss-Jordan method" msgstr "Метод Гаусса-Жордана" -#: ../../../../docs/common_information/processes_tasks.rst:114 +#: ../../common_information/processes_tasks.rst:105 msgid "Iterative methods (Jacobi)" msgstr "Итеративные методы (Якоби)" -#: ../../../../docs/common_information/processes_tasks.rst:116 +#: ../../common_information/processes_tasks.rst:107 msgid "Iterative methods (Gauss-Seidel)" msgstr "Итеративные методы (Зейделя)" -#: ../../../../docs/common_information/processes_tasks.rst:118 +#: ../../common_information/processes_tasks.rst:109 msgid "Iterative methods (Simple)" msgstr "Метод простой итерации" -#: ../../../../docs/common_information/processes_tasks.rst:120 +#: ../../common_information/processes_tasks.rst:111 msgid "Bubble sort (odd-even transposition algorithm)" msgstr "Сортировка пузырьком (алгоритм чет-нечетной перестановки)" -#: ../../../../docs/common_information/processes_tasks.rst:122 +#: ../../common_information/processes_tasks.rst:113 msgid "Image smoothing" msgstr "Сглаживание изображения" -#: ../../../../docs/common_information/processes_tasks.rst:124 +#: ../../common_information/processes_tasks.rst:115 msgid "Contrast enhancement" msgstr "Повышение контраста" -#: ../../../../docs/common_information/processes_tasks.rst:128 +#: ../../common_information/processes_tasks.rst:119 msgid "Third task" msgstr "Третья задача" -#: ../../../../docs/common_information/processes_tasks.rst:133 +#: ../../common_information/processes_tasks.rst:124 msgid "" "Dense matrix multiplication. Elements of data type double. Block scheme, " "Cannon's algorithm." -msgstr "" -"Умножение плотных матриц. Элементы типа double. Блочная схема, алгоритм " -"Кэннона." +msgstr "Умножение плотных матриц. Элементы типа double. Блочная схема, алгоритм Кэннона." -#: ../../../../docs/common_information/processes_tasks.rst:135 +#: ../../common_information/processes_tasks.rst:126 msgid "" "Dense matrix multiplication. Elements of data type double. Block scheme, " "Fox's algorithm." -msgstr "" -"Умножение плотных матриц. Элементы типа double. Блочная схема, алгоритм " -"Фокса." +msgstr "Умножение плотных матриц. Элементы типа double. Блочная схема, алгоритм Фокса." -#: ../../../../docs/common_information/processes_tasks.rst:137 +#: ../../common_information/processes_tasks.rst:128 msgid "" "Dense matrix multiplication. Elements of data type double. Strassen's " "algorithm." msgstr "Умножение плотных матриц. Элементы типа double. Алгоритм Штрассена." -#: ../../../../docs/common_information/processes_tasks.rst:139 +#: ../../common_information/processes_tasks.rst:130 msgid "" "Sparse matrix multiplication. Elements of data type double. Matrix " "storage format – row format (CRS)." -msgstr "" -"Умножение разреженных матриц. Элементы типа double. Формат хранения " -"матрицы – строковый (CRS)." +msgstr "Умножение разреженных матриц. Элементы типа double. Формат хранения матрицы – строковый (CRS)." -#: ../../../../docs/common_information/processes_tasks.rst:141 +#: ../../common_information/processes_tasks.rst:132 msgid "" "Sparse matrix multiplication. Elements of data type double. Matrix " "storage format – column format (CCS)." -msgstr "" -"Умножение разреженных матриц. Элементы типа double. Формат хранения " -"матрицы – столбцовый (CCS)." +msgstr "Умножение разреженных матриц. Элементы типа double. Формат хранения матрицы – столбцовый (CCS)." -#: ../../../../docs/common_information/processes_tasks.rst:143 +#: ../../common_information/processes_tasks.rst:134 msgid "Solving systems of linear equations using the conjugate gradient method." msgstr "Решение систем линейных уравнений методом сопряженных градиентов." -#: ../../../../docs/common_information/processes_tasks.rst:145 +#: ../../common_information/processes_tasks.rst:136 msgid "" "Computing multidimensional integrals using a multistep scheme (rectangle " "method)." -msgstr "" -"Вычисление многомерных интегралов с использованием многошаговой схемы " -"(метод прямоугольников)." +msgstr "Вычисление многомерных интегралов с использованием многошаговой схемы (метод прямоугольников)." -#: ../../../../docs/common_information/processes_tasks.rst:147 +#: ../../common_information/processes_tasks.rst:138 msgid "" "Computing multidimensional integrals using a multistep scheme " "(trapezoidal method)." -msgstr "" -"Вычисление многомерных интегралов с использованием многошаговой схемы " -"(метод трапеций)." +msgstr "Вычисление многомерных интегралов с использованием многошаговой схемы (метод трапеций)." -#: ../../../../docs/common_information/processes_tasks.rst:149 +#: ../../common_information/processes_tasks.rst:140 msgid "" "Computing multidimensional integrals using a multistep scheme (Simpson's " "method)." -msgstr "" -"Вычисление многомерных интегралов с использованием многошаговой схемы " -"(метод Симпсона)." +msgstr "Вычисление многомерных интегралов с использованием многошаговой схемы (метод Симпсона)." -#: ../../../../docs/common_information/processes_tasks.rst:151 +#: ../../common_information/processes_tasks.rst:142 msgid "Computing multidimensional integrals using the Monte Carlo method." msgstr "Вычисление многомерных интегралов методом Монте-Карло." -#: ../../../../docs/common_information/processes_tasks.rst:153 +#: ../../common_information/processes_tasks.rst:144 msgid "" "Global search algorithm (Strongin's) for one-dimensional optimization " "problems. Parallelization by characteristics." -msgstr "" -"Алгоритм глобального поиска (Стронгина) для одномерных задач оптимизации." -" Распараллеливание по характеристикам." +msgstr "Алгоритм глобального поиска (Стронгина) для одномерных задач оптимизации. Распараллеливание по характеристикам." -#: ../../../../docs/common_information/processes_tasks.rst:156 +#: ../../common_information/processes_tasks.rst:147 msgid "" "Multistep scheme for solving two-dimensional global optimization " "problems. Parallelization by dividing the search area." -msgstr "" -"Многошаговая схема решения двумерных задач глобальной оптимизации. " -"Распараллеливание путем разделения области поиска." +msgstr "Многошаговая схема решения двумерных задач глобальной оптимизации. Распараллеливание путем разделения области поиска." -#: ../../../../docs/common_information/processes_tasks.rst:159 +#: ../../common_information/processes_tasks.rst:150 msgid "" "Multistep scheme for solving two-dimensional global optimization " "problems. Parallelization by characteristics." -msgstr "" -"Многошаговая схема решения двумерных задач глобальной оптимизации. " -"Распараллеливание по характеристикам." +msgstr "Многошаговая схема решения двумерных задач глобальной оптимизации. Распараллеливание по характеристикам." -#: ../../../../docs/common_information/processes_tasks.rst:162 +#: ../../common_information/processes_tasks.rst:153 msgid "Quick sort with simple merging." msgstr "Быстрая сортировка с простым слиянием." -#: ../../../../docs/common_information/processes_tasks.rst:164 +#: ../../common_information/processes_tasks.rst:155 msgid "Quick sort with odd-even merging (Batcher's method)." msgstr "Быстрая сортировка с четно-нечетным слиянием Бэтчера." -#: ../../../../docs/common_information/processes_tasks.rst:166 +#: ../../common_information/processes_tasks.rst:157 msgid "Shell sort with simple merging." msgstr "Сортировка Шелла с простым слиянием." -#: ../../../../docs/common_information/processes_tasks.rst:168 +#: ../../common_information/processes_tasks.rst:159 msgid "Shell sort with odd-even merging (Batcher's method)." msgstr "Сортировка Шелла с четно-нечетным слиянием Бэтчера." -#: ../../../../docs/common_information/processes_tasks.rst:170 +#: ../../common_information/processes_tasks.rst:161 msgid "Radix sort for integers with simple merging." msgstr "Поразрядная сортировка для целых чисел с простым слиянием." -#: ../../../../docs/common_information/processes_tasks.rst:172 +#: ../../common_information/processes_tasks.rst:163 msgid "Radix sort for integers with odd-even merging (Batcher's method)." msgstr "Поразрядная сортировка для целых чисел с четно-нечетным слиянием Бэтчера." -#: ../../../../docs/common_information/processes_tasks.rst:174 +#: ../../common_information/processes_tasks.rst:165 msgid "Radix sort for floating-point numbers (type double) with simple merging." -msgstr "" -"Поразрядная сортировка для вещественных чисел (тип double) с простым " -"слиянием." +msgstr "Поразрядная сортировка для вещественных чисел (тип double) с простым слиянием." -#: ../../../../docs/common_information/processes_tasks.rst:176 +#: ../../common_information/processes_tasks.rst:167 msgid "" "Radix sort for floating-point numbers (type double) with odd-even merging" " (Batcher's method)." -msgstr "" -"Поразрядная сортировка для вещественных чисел (тип double) с " -"четно-нечетным слиянием Бэтчера." +msgstr "Поразрядная сортировка для вещественных чисел (тип double) с четно-нечетным слиянием Бэтчера." -#: ../../../../docs/common_information/processes_tasks.rst:178 +#: ../../common_information/processes_tasks.rst:169 msgid "" "Shortest path search from one vertex (Dijkstra's algorithm). With CRS " "graphs." -msgstr "" -"Поиск кратчайших путей из одной вершины (алгоритм Дейкстры). С CRS формой" -" хранения графа." +msgstr "Поиск кратчайших путей из одной вершины (алгоритм Дейкстры). С CRS формой хранения графа." -#: ../../../../docs/common_information/processes_tasks.rst:180 +#: ../../common_information/processes_tasks.rst:171 msgid "" "Shortest path search from one vertex (Bellman-Ford algorithm). With CRS " "graphs." -msgstr "" -"Поиск кратчайших путей из одной вершины (алгоритм Беллмана-Форда). С CRS " -"формой хранения графа." +msgstr "Поиск кратчайших путей из одной вершины (алгоритм Беллмана-Форда). С CRS формой хранения графа." -#: ../../../../docs/common_information/processes_tasks.rst:182 +#: ../../common_information/processes_tasks.rst:173 msgid "Convex hull construction – Graham's scan." msgstr "Построение выпуклой оболочки – проход Грэхема." -#: ../../../../docs/common_information/processes_tasks.rst:184 +#: ../../common_information/processes_tasks.rst:175 msgid "Convex hull construction – Jarvis's march." msgstr "Построение выпуклой оболочки – проход Джарвиса." -#: ../../../../docs/common_information/processes_tasks.rst:186 +#: ../../common_information/processes_tasks.rst:177 msgid "Linear image filtering (horizontal partition). Gaussian kernel 3x3." -msgstr "" -"Линейная фильтрация изображений (горизонтальное разбиение). Ядро Гаусса " -"3x3." +msgstr "Линейная фильтрация изображений (горизонтальное разбиение). Ядро Гаусса 3x3." -#: ../../../../docs/common_information/processes_tasks.rst:188 +#: ../../common_information/processes_tasks.rst:179 msgid "Linear image filtering (vertical partition). Gaussian kernel 3x3." msgstr "Линейная фильтрация изображений (вертикальное разбиение). Ядро Гаусса 3x3." -#: ../../../../docs/common_information/processes_tasks.rst:190 +#: ../../common_information/processes_tasks.rst:181 msgid "28" msgstr "28" -#: ../../../../docs/common_information/processes_tasks.rst:190 +#: ../../common_information/processes_tasks.rst:181 msgid "Linear image filtering (block partition). Gaussian kernel 3x3." msgstr "Линейная фильтрация изображений (блочное разбиение). Ядро Гаусса 3x3." -#: ../../../../docs/common_information/processes_tasks.rst:192 +#: ../../common_information/processes_tasks.rst:183 msgid "29" msgstr "29" -#: ../../../../docs/common_information/processes_tasks.rst:192 +#: ../../common_information/processes_tasks.rst:183 msgid "Edge detection in an image using the Sobel operator." msgstr "Выделение ребер на изображении с использованием оператора Собеля." -#: ../../../../docs/common_information/processes_tasks.rst:194 +#: ../../common_information/processes_tasks.rst:185 msgid "30" msgstr "30" -#: ../../../../docs/common_information/processes_tasks.rst:194 +#: ../../common_information/processes_tasks.rst:185 msgid "Contrast enhancement of grayscale image using linear histogram stretching." -msgstr "" -"Повышение контраста полутонового изображения посредством линейной " -"растяжки гистограммы" +msgstr "Повышение контраста полутонового изображения посредством линейной растяжки гистограммы" -#: ../../../../docs/common_information/processes_tasks.rst:196 +#: ../../common_information/processes_tasks.rst:187 msgid "31" msgstr "31" -#: ../../../../docs/common_information/processes_tasks.rst:196 +#: ../../common_information/processes_tasks.rst:187 msgid "" "Labeling components on a binary image (black areas correspond to objects," " white to background)." -msgstr "" -"Маркировка компонент на бинарном изображении (черные области " -"соответствуют объектам, белые – фону)." +msgstr "Маркировка компонент на бинарном изображении (черные области соответствуют объектам, белые – фону)." -#: ../../../../docs/common_information/processes_tasks.rst:198 +#: ../../common_information/processes_tasks.rst:189 msgid "32" msgstr "32" -#: ../../../../docs/common_information/processes_tasks.rst:198 +#: ../../common_information/processes_tasks.rst:189 msgid "Convex hull construction for components of a binary image." msgstr "Построение выпуклой оболочки для компонент бинарного изображения." -#: ../../../../docs/common_information/processes_tasks.rst:202 +#: ../../common_information/processes_tasks.rst:193 msgid "Comments for tasks 2 and 3:" msgstr "Комментарии для 2-ой и 3-й задач:" -#: ../../../../docs/common_information/processes_tasks.rst:204 +#: ../../common_information/processes_tasks.rst:195 msgid "" "MESSAGE PASSING METHODS “You need to implement the specified methods " "using only the Send and Recv functions. The implemented function should " @@ -665,133 +607,124 @@ msgid "" "transmission (broadcast, gather) for at least the following types: " "MPI_INT, MPI_FLOAT, MPI_DOUBLE. In all operations, the transmission " "should be carried out using the ‘tree’ of processes.”" -msgstr "" -"МЕТОДЫ ПЕРЕДАЧИ СООБЩЕНИЙ. Нужно реализовать указанные методы, используя " -"только функции Send и Recv. Реализованная функция должна иметь тот же " -"прототип, что и соответствующая функция MPI. Тестовая программа должна " -"позволять выбрать номер процесса root и выполнять пересылку (рассылку, " -"сбор) массива как минимум следующих типов: MPI_INT, MPI_FLOAT, " -"MPI_DOUBLE. Во всех операциях передача должна выполняться с " -"использованием \"дерева\" процессов." - -#: ../../../../docs/common_information/processes_tasks.rst:212 -#: ../../../../docs/common_information/processes_tasks.rst:226 -#: ../../../../docs/common_information/processes_tasks.rst:239 -#: ../../../../docs/common_information/processes_tasks.rst:252 -#: ../../../../docs/common_information/processes_tasks.rst:262 -#: ../../../../docs/common_information/processes_tasks.rst:272 -#: ../../../../docs/common_information/processes_tasks.rst:282 +msgstr "МЕТОДЫ ПЕРЕДАЧИ СООБЩЕНИЙ. Нужно реализовать указанные методы, используя только функции Send и Recv. " +"Реализованная функция должна иметь тот же прототип, что и соответствующая функция MPI. " +"Тестовая программа должна позволять выбрать номер процесса root и выполнять пересылку " +"(рассылку, сбор) массива как минимум следующих типов: MPI_INT, MPI_FLOAT, MPI_DOUBLE. " +"Во всех операциях передача должна выполняться с использованием \"дерева\" процессов." + +#: ../../common_information/processes_tasks.rst:203 +#: ../../common_information/processes_tasks.rst:217 +#: ../../common_information/processes_tasks.rst:230 +#: ../../common_information/processes_tasks.rst:243 +#: ../../common_information/processes_tasks.rst:253 +#: ../../common_information/processes_tasks.rst:263 +#: ../../common_information/processes_tasks.rst:273 msgid "Comments relevant for:" msgstr "Комментарии относятся к:" -#: ../../../../docs/common_information/processes_tasks.rst:215 +#: ../../common_information/processes_tasks.rst:206 msgid "Variants for task 2" msgstr "Варианты для второй задачи" -#: ../../../../docs/common_information/processes_tasks.rst:215 +#: ../../common_information/processes_tasks.rst:206 msgid "Variants for task 3" msgstr "Варианты для третьей задачи" -#: ../../../../docs/common_information/processes_tasks.rst:217 -#: ../../../../docs/common_information/processes_tasks.rst:244 +#: ../../common_information/processes_tasks.rst:208 +#: ../../common_information/processes_tasks.rst:235 msgid "1 - 5" msgstr "1 - 5" -#: ../../../../docs/common_information/processes_tasks.rst:217 -#: ../../../../docs/common_information/processes_tasks.rst:231 -#: ../../../../docs/common_information/processes_tasks.rst:287 +#: ../../common_information/processes_tasks.rst:208 +#: ../../common_information/processes_tasks.rst:222 +#: ../../common_information/processes_tasks.rst:278 msgid "x" msgstr "x" -#: ../../../../docs/common_information/processes_tasks.rst:220 +#: ../../common_information/processes_tasks.rst:211 msgid "" "DATA COMMUNICATION NETWORK TOPOLOGIES “You need to implement the virtual " "topology specified in the task using MPI capabilities for working with " "communicators and topologies, and ensure the ability to transfer data " "from any selected process to any other process. (Do not use " "MPI_Cart_Create and MPI_Graph_Create)”" -msgstr "" -"ТОПОЛОГИИ СЕТЕЙ ПЕРЕДАЧИ ДАННЫХ. Нужно реализовать указанную в задаче " -"виртуальную топологию, используя возможности MPI по работе с " -"коммуникаторами и топологиями и обеспечить возможность передачи данных от" -" любого выбранного процесса любому другому процессу. (Не используя " -"MPI_Cart_Create и MPI_Graph_Create)" - -#: ../../../../docs/common_information/processes_tasks.rst:229 -#: ../../../../docs/common_information/processes_tasks.rst:242 -#: ../../../../docs/common_information/processes_tasks.rst:255 -#: ../../../../docs/common_information/processes_tasks.rst:265 -#: ../../../../docs/common_information/processes_tasks.rst:275 -#: ../../../../docs/common_information/processes_tasks.rst:285 +msgstr "ТОПОЛОГИИ СЕТЕЙ ПЕРЕДАЧИ ДАННЫХ. Нужно реализовать указанную в задаче виртуальную топологию, используя возможности MPI " +"по работе с коммуникаторами и топологиями и обеспечить возможность передачи данных " +"от любого выбранного процесса любому другому процессу. " +"(Не используя MPI_Cart_Create и MPI_Graph_Create)" + +#: ../../common_information/processes_tasks.rst:220 +#: ../../common_information/processes_tasks.rst:233 +#: ../../common_information/processes_tasks.rst:246 +#: ../../common_information/processes_tasks.rst:256 +#: ../../common_information/processes_tasks.rst:266 +#: ../../common_information/processes_tasks.rst:276 msgid "Varinats for task 2" msgstr "Варианты для второй задачи" -#: ../../../../docs/common_information/processes_tasks.rst:229 -#: ../../../../docs/common_information/processes_tasks.rst:242 -#: ../../../../docs/common_information/processes_tasks.rst:255 -#: ../../../../docs/common_information/processes_tasks.rst:265 -#: ../../../../docs/common_information/processes_tasks.rst:275 -#: ../../../../docs/common_information/processes_tasks.rst:285 +#: ../../common_information/processes_tasks.rst:220 +#: ../../common_information/processes_tasks.rst:233 +#: ../../common_information/processes_tasks.rst:246 +#: ../../common_information/processes_tasks.rst:256 +#: ../../common_information/processes_tasks.rst:266 +#: ../../common_information/processes_tasks.rst:276 msgid "Varinats for task 3" msgstr "Варианты для третьей задачи" -#: ../../../../docs/common_information/processes_tasks.rst:231 +#: ../../common_information/processes_tasks.rst:222 msgid "6 - 10" msgstr "6 - 10" -#: ../../../../docs/common_information/processes_tasks.rst:234 +#: ../../common_information/processes_tasks.rst:225 msgid "" "MATRIX COMPUTATIONS “In the horizontal scheme, the matrix is divided " "among processes by rows. In the vertical scheme, it is divided by " "columns, and in this case, the vector is also divided among processes.”" -msgstr "" -"МАТРИЧНЫЕ ВЫЧИСЛЕНИЯ. В горизонтальной схеме матрица делится между " -"процессами по строкам. В вертикальной - по столбцам, вектор в этом случае" -" также делится между процессами." +msgstr "МАТРИЧНЫЕ ВЫЧИСЛЕНИЯ. В горизонтальной схеме матрица делится между процессами по строкам. " +"В вертикальной - по столбцам, вектор в этом случае также делится между процессами." -#: ../../../../docs/common_information/processes_tasks.rst:244 +#: ../../common_information/processes_tasks.rst:235 msgid "11 - 14" msgstr "11 - 14" -#: ../../../../docs/common_information/processes_tasks.rst:247 +#: ../../common_information/processes_tasks.rst:238 msgid "" "COMPUTER GRAPHICS AND IMAGE PROCESSING “It is assumed that the image is " "given in color or grayscale, with the input data being a one-dimensional " "array. Loading a real image is not required, but is allowed.”" -msgstr "" -"МАШИННАЯ ГРАФИКА И ОБРАБОТКА ИЗОБРАЖЕНИЙ. Считается, что изображение " -"задано в цветном виде или оттенках серого, входные данные - одномерный " -"массив. Загружать реальное изображение не требуется, но и не " -"возбраняется." +msgstr "МАШИННАЯ ГРАФИКА И ОБРАБОТКА ИЗОБРАЖЕНИЙ. Считается, что изображение задано в цветном виде или оттенках серого, " +"входные данные - одномерный массив. " +"Загружать реальное изображение не требуется, но и не возбраняется." -#: ../../../../docs/common_information/processes_tasks.rst:257 +#: ../../common_information/processes_tasks.rst:248 msgid "26 - 27" msgstr "26 - 27" -#: ../../../../docs/common_information/processes_tasks.rst:257 +#: ../../common_information/processes_tasks.rst:248 msgid "24 - 32" msgstr "24 - 32" -#: ../../../../docs/common_information/processes_tasks.rst:260 +#: ../../common_information/processes_tasks.rst:251 msgid "SOLUTION OF A SYSTEM OF LINEAR ALGEBRAIC EQUATIONS" msgstr "РЕШЕНИЕ СИСТЕМЫ ЛИНЕЙНЫХ АЛГЕБРАИЧЕСКИХ УРАВНЕНИЙ" -#: ../../../../docs/common_information/processes_tasks.rst:267 +#: ../../common_information/processes_tasks.rst:258 msgid "15 - 20" msgstr "15 - 20" -#: ../../../../docs/common_information/processes_tasks.rst:270 +#: ../../common_information/processes_tasks.rst:261 msgid "SORT ALGORITHMS" msgstr "АЛГОРИТМЫ СОРТИРОВКИ" -#: ../../../../docs/common_information/processes_tasks.rst:277 +#: ../../common_information/processes_tasks.rst:268 msgid "14 - 21" msgstr "14 - 21" -#: ../../../../docs/common_information/processes_tasks.rst:280 +#: ../../common_information/processes_tasks.rst:271 msgid "GRAPH PROCESSING ALGORITHMS" msgstr "АЛГОРИТМЫ НА ГРАФАХ" -#: ../../../../docs/common_information/processes_tasks.rst:287 +#: ../../common_information/processes_tasks.rst:278 msgid "22 - 23" msgstr "22 - 23" diff --git a/docs/locale/ru/LC_MESSAGES/user_guide/api.po b/docs/locale/ru/LC_MESSAGES/user_guide/api.po index c5877dc30..c9413eee7 100644 --- a/docs/locale/ru/LC_MESSAGES/user_guide/api.po +++ b/docs/locale/ru/LC_MESSAGES/user_guide/api.po @@ -19,7 +19,7 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.18.0\n" +"Generated-By: Babel 2.17.0\n" #: ../../../../docs/user_guide/api.rst:2 msgid "API Reference" @@ -31,15 +31,15 @@ msgstr "Модуль выполнения" #: ../../../../docs/user_guide/api.rst msgid "Functions" -msgstr "" +msgstr "Функции" #: ../../../../docs/user_guide/api.rst msgid "Parameters" -msgstr "" +msgstr "Параметры" #: ../../../../docs/user_guide/api.rst msgid "Returns" -msgstr "" +msgstr "Возвращаемые значения" #: ../../../../docs/user_guide/api.rst:14 msgid "Task Module" @@ -47,23 +47,23 @@ msgstr "Модуль задач" #: ../../../../docs/user_guide/api.rst msgid "Typedefs" -msgstr "" +msgstr "Псевдонимы типов" #: ../../../../docs/user_guide/api.rst msgid "Template Parameters" -msgstr "" +msgstr "Параметры шаблона" #: ../../../../docs/user_guide/api.rst msgid "Enums" -msgstr "" +msgstr "Перечисления" #: ../../../../docs/user_guide/api.rst msgid "Throws" -msgstr "" +msgstr "Исключения" #: ../../../../docs/user_guide/api.rst msgid "Variables" -msgstr "" +msgstr "Переменные" #: ../../../../docs/user_guide/api.rst:20 msgid "Utility Module" diff --git a/docs/locale/ru/LC_MESSAGES/user_guide/build.po b/docs/locale/ru/LC_MESSAGES/user_guide/build.po index c38ce31b5..bc2a682cf 100644 --- a/docs/locale/ru/LC_MESSAGES/user_guide/build.po +++ b/docs/locale/ru/LC_MESSAGES/user_guide/build.po @@ -20,7 +20,7 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.18.0\n" +"Generated-By: Babel 2.17.0\n" #: ../../../../docs/user_guide/build.rst:2 msgid "Build the Project with ``CMake``" @@ -102,31 +102,15 @@ msgstr "" "выполнения работы.*" #: ../../../../docs/user_guide/build.rst:42 -msgid "" -"OSH is part of the process-technology set on Linux and macOS. Linux uses " -"Open MPI OSH from the system package. macOS builds Sandia SOS from " -"``3rdparty/SOS`` and uses the system Open MPI launcher. A focused example " -"build can be configured as:" -msgstr "" -"OSH входит в набор процессных технологий на Linux и macOS. Linux использует " -"Open MPI OSH из системного пакета. macOS собирает Sandia SOS из " -"``3rdparty/SOS`` и использует системный Open MPI launcher. Сфокусированную " -"сборку example можно настроить так:" - -#: ../../../../docs/user_guide/build.rst:51 msgid "**Build the project**:" msgstr "**Построение проекта**:" -#: ../../../../docs/user_guide/build.rst:57 +#: ../../../../docs/user_guide/build.rst:48 msgid "**Run tests**:" msgstr "**Запуск тестов**:" -#: ../../../../docs/user_guide/build.rst:59 +#: ../../../../docs/user_guide/build.rst:50 msgid "Prefer the helper runner described in ``User Guide → CI``." msgstr "" "Рекомендуется использовать вспомогательный раннер, описанный в " "«Инструкция → CI»." - -#: ../../../../docs/user_guide/build.rst:61 -msgid "OSH example on Linux or macOS:" -msgstr "Пример OSH на Linux или macOS:" diff --git a/docs/locale/ru/LC_MESSAGES/user_guide/ci.po b/docs/locale/ru/LC_MESSAGES/user_guide/ci.po index 6546662df..fa92f17d4 100644 --- a/docs/locale/ru/LC_MESSAGES/user_guide/ci.po +++ b/docs/locale/ru/LC_MESSAGES/user_guide/ci.po @@ -20,7 +20,7 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.18.0\n" +"Generated-By: Babel 2.17.0\n" #: ../../../../docs/user_guide/ci.rst:2 msgid "Continuous Integration (CI)" @@ -34,16 +34,15 @@ msgstr "Общие сведения" msgid "" "Your pull request must pass all required CI checks before review/merge. " "The pipeline validates formatting and static analysis, builds on all " -"platforms, runs functional tests (threads, MPI, and OSH on Linux/macOS), " -"measures performance, builds docs, and publishes artifacts (coverage " -"report, docs, scoreboard)." +"platforms, runs functional tests (threads and MPI), measures performance," +" builds docs, and publishes artifacts (coverage report, docs, " +"scoreboard)." msgstr "" "Ваш pull request должен пройти все обязательные проверки CI перед " "ревью/слиянием. Конвейер проверяет форматирование и статический анализ, " "собирает проект на всех платформах, запускает функциональные тесты " -"(потоки, MPI и OSH на Linux/macOS), измеряет производительность, собирает " -"документацию и публикует артефакты (отчёт по покрытию, документация, " -"табло)." +"(потоки и MPI), измеряет производительность, собирает документацию и " +"публикует артефакты (отчёт по покрытию, документация, табло)." #: ../../../../docs/user_guide/ci.rst:9 msgid "High‑level pipeline" @@ -62,14 +61,12 @@ msgid "" "Platform builds and tests (Ubuntu, macOS, Windows) — Ubuntu (GCC/Clang), " "macOS (Clang), Windows (MSVC/Clang‑CL); functional tests via " "``scripts/run_tests.py`` for threads (``--counts 1 2 3 4``; extended ``5 " -"7 11 13``) and processes (MPI/OSH on Linux and macOS, MPI on Windows, " -"``--counts 1 2 3 4``)." +"7 11 13``) and processes (MPI, ``--counts 1 2 3 4``)." msgstr "" "Сборки и тесты на платформах (Ubuntu, macOS, Windows) — Ubuntu " "(GCC/Clang), macOS (Clang), Windows (MSVC/Clang‑CL); функциональные тесты" " через ``scripts/run_tests.py`` для потоков (``--counts 1 2 3 4``; " -"расширенно ``5 7 11 13``) и процессов (MPI/OSH на Linux и macOS, MPI на " -"Windows, ``--counts 1 2 3 4``)." +"расширенно ``5 7 11 13``) и процессов (MPI, ``--counts 1 2 3 4``)." #: ../../../../docs/user_guide/ci.rst:15 msgid "" @@ -153,8 +150,8 @@ msgid "``PPC_NUM_PROC``" msgstr "``PPC_NUM_PROC``" #: ../../../../docs/user_guide/ci.rst:42 -msgid "Number of MPI processes or OSH processing elements to launch." -msgstr "Количество процессов MPI или processing elements OSH для запуска." +msgid "Number of MPI processes to launch." +msgstr "Количество процессов MPI, которые нужно запустить." #: ../../../../docs/user_guide/ci.rst:44 msgid "``PPC_ASAN_RUN``" @@ -181,20 +178,20 @@ msgstr "" #: ../../../../docs/user_guide/ci.rst:50 msgid "" "Execution modes: - ``--running-type=threads`` — shared-memory backends " -"(OpenMP/TBB/std::thread) - ``--running-type=processes`` — MPI tests, plus" -" OSH tests on Linux and macOS - ``--running-type=performance`` — performance " -"benchmarks (mirrors CI perf job)" +"(OpenMP/TBB/std::thread) - ``--running-type=processes`` — MPI tests - " +"``--running-type=performance`` — performance benchmarks (mirrors CI perf " +"job)" msgstr "" "Режимы запуска: — ``--running-type=threads`` — backends с общей памятью " -"(OpenMP/TBB/std::thread); — ``--running-type=processes`` — MPI‑тесты, а " -"также OSH‑тесты на Linux и macOS; — ``--running-type=performance`` — " -"бенчмарки производительности (как в CI perf)." +"(OpenMP/TBB/std::thread); — ``--running-type=processes`` — MPI‑тесты; — " +"``--running-type=performance`` — бенчмарки производительности (как в CI " +"perf)." #: ../../../../docs/user_guide/ci.rst:55 msgid "Examples:" msgstr "Примеры:" -#: ../../../../docs/user_guide/ci.rst:74 +#: ../../../../docs/user_guide/ci.rst:71 msgid "" "Options: - ``--counts`` runs tests for multiple thread/process counts " "sequentially. - ``--additional-mpi-args`` passes extra launcher flags " @@ -206,11 +203,11 @@ msgstr "" "дополнительные флаги MPI‑ланчеру (например, ``--oversubscribe``); — " "``--verbose`` печатает каждую выполняемую команду." -#: ../../../../docs/user_guide/ci.rst:80 +#: ../../../../docs/user_guide/ci.rst:77 msgid "Coverage and sanitizers locally" msgstr "Санитайзеры и покрытие локально" -#: ../../../../docs/user_guide/ci.rst:81 +#: ../../../../docs/user_guide/ci.rst:78 msgid "" "Sanitizers (Linux): configure with ``-D ENABLE_ADDRESS_SANITIZER=ON`` " "(and optional UB/Leak), run tests with ``PPC_ASAN_RUN=1``." @@ -218,7 +215,7 @@ msgstr "" "Санитайзеры (Linux): конфигурация с ``-D ENABLE_ADDRESS_SANITIZER=ON`` (и" " опционально UB/Leak), запуск тестов с ``PPC_ASAN_RUN=1``." -#: ../../../../docs/user_guide/ci.rst:82 +#: ../../../../docs/user_guide/ci.rst:79 msgid "" "Coverage (Linux/GCC): configure with ``-D USE_COVERAGE=ON``, run tests, " "then generate HTML via ``gcovr`` (see CI ``gcc-build-codecov`` for " @@ -228,11 +225,11 @@ msgstr "" "тестов, затем генерация HTML через ``gcovr`` (см. команду в CI job ``gcc-" "build-codecov``)." -#: ../../../../docs/user_guide/ci.rst:85 +#: ../../../../docs/user_guide/ci.rst:82 msgid "Docs and scoreboard artifacts" msgstr "Артефакты: документация и табло" -#: ../../../../docs/user_guide/ci.rst:86 +#: ../../../../docs/user_guide/ci.rst:83 msgid "" "Docs: run Doxygen first (``doxygen Doxyfile``), then Sphinx EN/RU via " "CMake targets ``docs_gettext``, ``docs_update``, ``docs_html``." @@ -241,7 +238,7 @@ msgstr "" "Sphinx (EN/RU) через цели CMake ``docs_gettext``, ``docs_update``, " "``docs_html``." -#: ../../../../docs/user_guide/ci.rst:87 +#: ../../../../docs/user_guide/ci.rst:84 msgid "" "Scoreboard: generate perf stats (``scripts/run_tests.py --running-" "type=performance``) and build scoreboard target or use ``python3 " @@ -251,11 +248,11 @@ msgstr "" "type=performance``) и соберите цель табло или воспользуйтесь локально " "``python3 scoreboard/main.py``." -#: ../../../../docs/user_guide/ci.rst:90 +#: ../../../../docs/user_guide/ci.rst:87 msgid "Troubleshooting" msgstr "Диагностика и решения" -#: ../../../../docs/user_guide/ci.rst:91 +#: ../../../../docs/user_guide/ci.rst:88 msgid "" "Pre-commit fails: run ``pre-commit run -a`` locally (install with ``pre-" "commit install``) and commit fixes." @@ -263,19 +260,17 @@ msgstr "" "Падает pre-commit: запустите локально ``pre-commit run -a`` " "(предварительно ``pre-commit install``) и закоммитьте исправления." -#: ../../../../docs/user_guide/ci.rst:92 -#, fuzzy +#: ../../../../docs/user_guide/ci.rst:89 msgid "" "Static analysis fails: address clang-tidy comments; do not use " -"``NOLINT``/``IWYU pragma`` in task code; keep " -"OpenMP/TBB/MPI/OSH/std::thread APIs in their matching task backend " -"directories." +"``NOLINT``/``IWYU pragma`` in task code; keep OpenMP/TBB/MPI/std::thread " +"APIs in their matching task backend directories." msgstr "" "Падает статический анализ: поправьте замечания clang-tidy; не используйте" " ``NOLINT``/``IWYU pragma`` в коде задач; держите API " "OpenMP/TBB/MPI/std::thread в соответствующих backend-директориях задач." -#: ../../../../docs/user_guide/ci.rst:93 +#: ../../../../docs/user_guide/ci.rst:90 msgid "" "Tests not found/not running: verify ``settings.json`` enables required " "technologies and tests exist; see :doc:`submit_work`." @@ -283,7 +278,7 @@ msgstr "" "Тесты не находятся/не запускаются: проверьте, что в ``settings.json`` " "включены нужные технологии и тесты существуют; см. :doc:`submit_work`." -#: ../../../../docs/user_guide/ci.rst:94 +#: ../../../../docs/user_guide/ci.rst:91 msgid "" "Time limits exceeded: reduce data sizes; prefer env vars " "(:doc:`environment_variables`) like " @@ -294,7 +289,7 @@ msgstr "" "``PPC_TASK_MAX_TIME``/``PPC_PERF_MAX_TIME``; избегайте " "задержек/случайностей." -#: ../../../../docs/user_guide/ci.rst:95 +#: ../../../../docs/user_guide/ci.rst:92 msgid "" "MPI runs fail locally: set ``PPC_NUM_PROC`` and try ``--additional-mpi-" "args=\\\"--oversubscribe\\\"``." @@ -302,17 +297,7 @@ msgstr "" "Проблемы с локальным запуском MPI: задайте ``PPC_NUM_PROC`` и попробуйте " "``--additional-mpi-args=\"--oversubscribe\"``." -#: ../../../../docs/user_guide/ci.rst:96 -msgid "" -"OSH runs fail locally: on Linux verify Open MPI with OSH support is " -"installed; on macOS verify submodules are initialized and ``libfabric`` is " -"installed." -msgstr "" -"Локальный запуск OSH не проходит: на Linux проверьте Open MPI с поддержкой " -"OSH; на macOS проверьте, что submodules инициализированы и ``libfabric`` " -"установлен." - -#: ../../../../docs/user_guide/ci.rst:97 +#: ../../../../docs/user_guide/ci.rst:93 msgid "" "Docs build fails: fix RST warnings; run ``doxygen Doxyfile`` before " "Sphinx targets." @@ -320,7 +305,7 @@ msgstr "" "Проблемы со сборкой документации: исправьте предупреждения RST; перед " "целями Sphinx выполните ``doxygen Doxyfile``." -#: ../../../../docs/user_guide/ci.rst:98 +#: ../../../../docs/user_guide/ci.rst:94 msgid "" "Performance job fails: ensure performance tests are enabled and keep " "durations within limits." @@ -328,23 +313,23 @@ msgstr "" "Падает job производительности: убедитесь, что перфтесты включены и " "длительность в пределах лимитов." -#: ../../../../docs/user_guide/ci.rst:101 +#: ../../../../docs/user_guide/ci.rst:97 msgid "Local clang-tidy and gcovr examples" msgstr "Примеры локального clang-tidy и gcovr" -#: ../../../../docs/user_guide/ci.rst:103 +#: ../../../../docs/user_guide/ci.rst:99 msgid "clang-tidy (static analysis):" msgstr "clang-tidy (статический анализ):" -#: ../../../../docs/user_guide/ci.rst:117 +#: ../../../../docs/user_guide/ci.rst:113 msgid "gcovr (coverage, GCC):" msgstr "gcovr (покрытие, GCC):" -#: ../../../../docs/user_guide/ci.rst:145 +#: ../../../../docs/user_guide/ci.rst:141 msgid "Tooling tips (versions and install)" msgstr "Подсказки по инструментам (версии и установка)" -#: ../../../../docs/user_guide/ci.rst:147 +#: ../../../../docs/user_guide/ci.rst:143 msgid "" "clang-tidy version - CI uses clang-tidy 22. Prefer the same locally to " "avoid mismatches. - The helper may be named ``clang-tidy-22`` or ``run-" @@ -355,7 +340,7 @@ msgstr "" "системах помощник может называться ``clang-tidy-22`` или ``run-clang-" "tidy-22``." -#: ../../../../docs/user_guide/ci.rst:151 +#: ../../../../docs/user_guide/ci.rst:147 #, fuzzy msgid "" "Linux - clang-tidy: install from your distro (e.g., ``apt install clang-" @@ -368,7 +353,7 @@ msgstr "" " ``python3 -m pip install gcovr`` либо пакет дистрибутива. GCC: при " "сборке с GCC 14 используйте ``gcov-14`` (как в CI)." -#: ../../../../docs/user_guide/ci.rst:156 +#: ../../../../docs/user_guide/ci.rst:152 msgid "" "macOS - clang-tidy: ``brew install llvm``; binary at ``$(brew " "--prefix)/opt/llvm/bin/clang-tidy``. - Optionally add LLVM to PATH or " @@ -380,7 +365,7 @@ msgstr "" "PATH или вызывайте по полному пути. gcovr: ``python3 -m pip install " "gcovr`` или ``brew install gcovr``." -#: ../../../../docs/user_guide/ci.rst:161 +#: ../../../../docs/user_guide/ci.rst:157 msgid "" "Windows - clang-tidy: install LLVM (Clang) or use ``choco install llvm``;" " ensure ``clang-tidy.exe`` is in PATH. - gcovr: ``py -m pip install " diff --git a/docs/locale/ru/LC_MESSAGES/user_guide/environment.po b/docs/locale/ru/LC_MESSAGES/user_guide/environment.po index 67ffb0afb..607dd1854 100644 --- a/docs/locale/ru/LC_MESSAGES/user_guide/environment.po +++ b/docs/locale/ru/LC_MESSAGES/user_guide/environment.po @@ -20,7 +20,7 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.18.0\n" +"Generated-By: Babel 2.17.0\n" #: ../../../../docs/user_guide/environment.rst:2 msgid "Set Up Your Environment" @@ -89,8 +89,7 @@ msgid "The container includes:" msgstr "Контейнер включает:" #: ../../../../docs/user_guide/environment.rst:21 -#, fuzzy -msgid "Ubuntu environment with gcc-15, CMake, MPI, OSH, OpenMP" +msgid "Ubuntu environment with gcc-15, CMake, MPI, OpenMP" msgstr "Окружение Ubuntu с gcc-15, CMake, MPI, OpenMP" #: ../../../../docs/user_guide/environment.rst:22 @@ -169,44 +168,33 @@ msgstr "Дополнительные инструменты (clang-tidy, gcovr)" msgid "" "Install these to match the CI toolchain for static analysis and coverage " "reports." -msgstr "" -"Установите их, чтобы соответствовать инструментам CI для статического " -"анализа и отчётов по покрытию." +msgstr "Установите их, чтобы соответствовать инструментам CI для статического анализа и отчётов по покрытию." #: ../../../../docs/user_guide/environment.rst:64 msgid "Linux (Ubuntu/Debian):" msgstr "Linux (Ubuntu/Debian):" -#: ../../../../docs/user_guide/environment.rst:73 +#: ../../../../docs/user_guide/environment.rst:75 msgid "macOS (Homebrew):" msgstr "macOS (Homebrew):" -#: ../../../../docs/user_guide/environment.rst:81 +#: ../../../../docs/user_guide/environment.rst:83 msgid "Windows:" msgstr "Windows:" -#: ../../../../docs/user_guide/environment.rst:90 +#: ../../../../docs/user_guide/environment.rst:92 msgid "Parallel Programming Technologies" msgstr "Технологии параллельного программирования" -#: ../../../../docs/user_guide/environment.rst:93 +#: ../../../../docs/user_guide/environment.rst:95 msgid "``MPI``" msgstr "``MPI``" -#: ../../../../docs/user_guide/environment.rst:94 -msgid "" -"On Linux and macOS, MPI is provided by the system Open MPI package. Windows " -"uses MS-MPI." -msgstr "" -"На Linux и macOS MPI предоставляется системным пакетом Open MPI. Windows " -"использует MS-MPI." - -#: ../../../../docs/user_guide/environment.rst:94 -#: ../../../../docs/user_guide/environment.rst:135 +#: ../../../../docs/user_guide/environment.rst:96 msgid "**Windows (MSVC)**:" msgstr "**Windows (MSVC)**:" -#: ../../../../docs/user_guide/environment.rst:96 +#: ../../../../docs/user_guide/environment.rst:98 msgid "" "`Installers link `_. You have to install " @@ -216,67 +204,20 @@ msgstr "" "us/download/details.aspx?id=105289>`_. Вы должны установить 2 файла - " "``msmpisdk.msi`` и ``msmpisetup.exe``." -#: ../../../../docs/user_guide/environment.rst:98 -#: ../../../../docs/user_guide/environment.rst:121 -#: ../../../../docs/user_guide/environment.rst:147 +#: ../../../../docs/user_guide/environment.rst:100 +#: ../../../../docs/user_guide/environment.rst:116 msgid "**Linux (gcc and clang)**:" msgstr "**Linux (gcc and clang)**:" -#: ../../../../docs/user_guide/environment.rst:104 -#: ../../../../docs/user_guide/environment.rst:128 +#: ../../../../docs/user_guide/environment.rst:106 msgid "**MacOS (apple clang)**:" msgstr "**MacOS (apple clang)**:" -#: ../../../../docs/user_guide/environment.rst:111 -msgid "``OSH``" -msgstr "``OSH``" - -#: ../../../../docs/user_guide/environment.rst:112 -msgid "" -"OSH is used for process tasks as a PGAS / one-sided communication model " -"for distributed-memory systems." -msgstr "" -"OSH используется в задачах на процессах как PGAS / one-sided " -"communication model для систем с распределённой памятью." - -#: ../../../../docs/user_guide/environment.rst:119 -msgid "" -"Linux uses the Open MPI OSH implementation from the system package. macOS " -"builds Sandia SOS from ``3rdparty/SOS`` and uses Open MPI as its " -"launcher/runtime. Windows keeps the existing MPI setup and skips OSH in the " -"MSVC/clang-cl configurations." -msgstr "" -"Linux использует Open MPI OSH из системного пакета. macOS собирает Sandia " -"SOS из ``3rdparty/SOS`` и использует Open MPI как launcher/runtime. " -"Windows сохраняет существующую настройку MPI и пропускает OSH в " -"MSVC/clang-cl конфигурациях." - -#: ../../../../docs/user_guide/environment.rst:132 -msgid "" -"``brew install open-mpi autoconf automake libtool libfabric coreutils gnu-" -"sed grep gawk pkgconf``" -msgstr "" -"``brew install open-mpi autoconf automake libtool libfabric coreutils gnu-" -"sed grep gawk pkgconf``" - -#: ../../../../docs/user_guide/environment.rst:137 -msgid "Install MS-MPI as described in the MPI section. OSH is skipped on Windows." -msgstr "Установите MS-MPI, как описано в разделе MPI. OSH на Windows пропускается." - -#: ../../../../docs/user_guide/environment.rst:140 -msgid "" -"No vendored Open MPI source tree is used. Initialize submodules before macOS " -"builds so that ``3rdparty/SOS`` and its nested test submodule are available." -msgstr "" -"Vendored исходники Open MPI не используются. Перед сборкой на macOS " -"инициализируйте submodules, чтобы были доступны ``3rdparty/SOS`` и его " -"nested test submodule." - -#: ../../../../docs/user_guide/environment.rst:144 +#: ../../../../docs/user_guide/environment.rst:113 msgid "``OpenMP``" msgstr "``OpenMP``" -#: ../../../../docs/user_guide/environment.rst:145 +#: ../../../../docs/user_guide/environment.rst:114 msgid "" "``OpenMP`` is included in ``gcc`` and ``msvc``, but some components " "should be installed additionally:" @@ -285,15 +226,15 @@ msgstr "" "``msvc``, но ряд компонент все равно должны быть установлены " "дополнительно:" -#: ../../../../docs/user_guide/environment.rst:153 +#: ../../../../docs/user_guide/environment.rst:122 msgid "**MacOS (llvm)**:" msgstr "**MacOS (llvm)**:" -#: ../../../../docs/user_guide/environment.rst:162 +#: ../../../../docs/user_guide/environment.rst:130 msgid "``TBB``" msgstr "``TBB``" -#: ../../../../docs/user_guide/environment.rst:163 +#: ../../../../docs/user_guide/environment.rst:131 msgid "" "**Windows (MSVC)**, **Linux (gcc and clang)**, **MacOS (apple clang)**: " "Build as 3rdparty in the current project." @@ -302,10 +243,10 @@ msgstr "" "Данная библиотека строится как внешняя в составе текущего проекта и не " "требует дополнительных операций." -#: ../../../../docs/user_guide/environment.rst:167 +#: ../../../../docs/user_guide/environment.rst:135 msgid "``std::thread``" msgstr "``std::thread``" -#: ../../../../docs/user_guide/environment.rst:168 +#: ../../../../docs/user_guide/environment.rst:136 msgid "``std::thread`` is included in STL libraries." msgstr "``std::thread`` включена в состав STL библиотек." diff --git a/docs/locale/ru/LC_MESSAGES/user_guide/environment_variables.po b/docs/locale/ru/LC_MESSAGES/user_guide/environment_variables.po index c1fca5227..5df539b52 100644 --- a/docs/locale/ru/LC_MESSAGES/user_guide/environment_variables.po +++ b/docs/locale/ru/LC_MESSAGES/user_guide/environment_variables.po @@ -2,8 +2,7 @@ # Copyright (C) 2025, Learning Process # This file is distributed under the same license as the Parallel # Programming Course package. -# Learning Process Team , 2025. +# Learning Process Team , 2025. # msgid "" msgstr "" @@ -13,20 +12,19 @@ msgstr "" "PO-Revision-Date: 2025-07-27 18:21+0200\n" "Last-Translator: Learning Process Team \n" "Language: ru\n" -"Language-Team: Learning Process Team (gooddoog@student.su, " -"nesterov.alexander@outlook.com)\n" +"Language-Team: Learning Process Team (gooddoog@student.su, nesterov.alexander@outlook.com)\n" "Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && " "n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.18.0\n" +"Generated-By: Babel 2.17.0\n" -#: ../../../../docs/user_guide/environment_variables.rst:2 +#: ../../user_guide/environment_variables.rst:2 msgid "Environment Variables" msgstr "Переменные окружения" -#: ../../../../docs/user_guide/environment_variables.rst:4 +#: ../../user_guide/environment_variables.rst:4 msgid "" "The following environment variables can be used to configure the " "project's runtime behavior:" @@ -34,7 +32,7 @@ msgstr "" "Следующие переменные окружения могут использоваться для настройки " "поведения программы во время выполнения:" -#: ../../../../docs/user_guide/environment_variables.rst:6 +#: ../../user_guide/environment_variables.rst:6 msgid "" "``PPC_NUM_PROC``: Specifies the number of processes to launch. Default: " "``1`` Can be queried from C++ with ``ppc::util::GetNumProc()``." @@ -42,7 +40,7 @@ msgstr "" "``PPC_NUM_PROC``: задаёт количество запускаемых процессов. По умолчанию: " "``1``. Можно получить в C++ через ``ppc::util::GetNumProc()``." -#: ../../../../docs/user_guide/environment_variables.rst:10 +#: ../../user_guide/environment_variables.rst:10 msgid "" "``PPC_NUM_THREADS``: Specifies the number of threads to use. Default: " "``1``" @@ -50,7 +48,7 @@ msgstr "" "``PPC_NUM_THREADS``: задаёт количество используемых потоков. По " "умолчанию: ``1``" -#: ../../../../docs/user_guide/environment_variables.rst:13 +#: ../../user_guide/environment_variables.rst:13 msgid "" "``PPC_ASAN_RUN``: Specifies that application is compiler with sanitizers." " Used by ``scripts/run_tests.py`` to skip ``valgrind`` runs. Default: " @@ -60,7 +58,7 @@ msgstr "" "Используется в ``scripts/run_tests.py`` для пропуска запусков под " "``valgrind``. По умолчанию: ``0``" -#: ../../../../docs/user_guide/environment_variables.rst:16 +#: ../../user_guide/environment_variables.rst:16 msgid "" "``PPC_IGNORE_TEST_TIME_LIMIT``: Specifies that test time limits are " "ignored. Used by ``scripts/run_tests.py`` to disable time limit " @@ -70,18 +68,14 @@ msgstr "" "выполнения тестов игнорируются. Используется в ``scripts/run_tests.py`` " "для отключения контроля ограничений по времени. По умолчанию: ``0``" -#: ../../../../docs/user_guide/environment_variables.rst:18 +#: ../../user_guide/environment_variables.rst:18 msgid "" "``PPC_TASK_MAX_TIME``: Maximum allowed execution time in seconds for " "functional tests. Default: ``1.0``" -msgstr "" -"``PPC_TASK_MAX_TIME``: максимальное допустимое время выполнения (секунды)" -" для функциональных тестов. По умолчанию: ``1.0``" +msgstr "``PPC_TASK_MAX_TIME``: максимальное допустимое время выполнения (секунды) для функциональных тестов. По умолчанию: ``1.0``" -#: ../../../../docs/user_guide/environment_variables.rst:20 +#: ../../user_guide/environment_variables.rst:20 msgid "" "``PPC_PERF_MAX_TIME``: Maximum allowed execution time in seconds for " "performance tests. Default: ``10.0``" -msgstr "" -"``PPC_PERF_MAX_TIME``: максимальное допустимое время выполнения (секунды)" -" для тестов производительности. По умолчанию: ``10.0``" +msgstr "``PPC_PERF_MAX_TIME``: максимальное допустимое время выполнения (секунды) для тестов производительности. По умолчанию: ``10.0``" diff --git a/docs/locale/ru/LC_MESSAGES/user_guide/submit_work.po b/docs/locale/ru/LC_MESSAGES/user_guide/submit_work.po index 44ebd3f1f..64bd96750 100644 --- a/docs/locale/ru/LC_MESSAGES/user_guide/submit_work.po +++ b/docs/locale/ru/LC_MESSAGES/user_guide/submit_work.po @@ -20,7 +20,7 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.18.0\n" +"Generated-By: Babel 2.17.0\n" #: ../../../../docs/user_guide/submit_work.rst:2 msgid "How to create, open, and submit your work" @@ -93,12 +93,11 @@ msgid "``common/include/common.hpp`` — shared type aliases and `BaseTask`:" msgstr "``common/include/common.hpp`` — общие типы и `BaseTask`:" #: ../../../../docs/user_guide/submit_work.rst:31 -#, fuzzy msgid "" "Technology implementations (add only those required by the semester): - " -"Processes (MPI/OSH/SEQ): ``seq/include``, ``seq/src``, ``mpi/include``, " -"``mpi/src``, ``osh/include``, ``osh/src`` - Threads: ``seq``, ``omp``, " -"``tbb``, ``stl`` (same include/src split)" +"Processes (MPI/SEQ): ``seq/include``, ``seq/src``, ``mpi/include``, " +"``mpi/src`` - Threads: ``seq``, ``omp``, ``tbb``, ``stl`` (same " +"include/src split)" msgstr "" "Реализации технологий (добавляйте только нужные в семестре): — Процессы " "(MPI/SEQ): ``seq/include``, ``seq/src``, ``mpi/include``, ``mpi/src`` — " @@ -136,21 +135,21 @@ msgstr "" msgid "Functional tests example:" msgstr "Пример функциональных тестов:" -#: ../../../../docs/user_guide/submit_work.rst:91 +#: ../../../../docs/user_guide/submit_work.rst:90 msgid "Use ``PPC_ID_`` to resolve resources from ``data/`` when needed." msgstr "" "При необходимости используйте ``PPC_ID_`` для доступа к ресурсам" " из ``data/``." -#: ../../../../docs/user_guide/submit_work.rst:93 +#: ../../../../docs/user_guide/submit_work.rst:92 msgid "Performance tests example:" msgstr "Пример тестов производительности:" -#: ../../../../docs/user_guide/submit_work.rst:101 +#: ../../../../docs/user_guide/submit_work.rst:100 msgid "Tips for tests" msgstr "Советы по тестам" -#: ../../../../docs/user_guide/submit_work.rst:102 +#: ../../../../docs/user_guide/submit_work.rst:101 msgid "" "Keep tests deterministic and under time limits; prefer env vars (see " "``User Guide → Environment Variables``) over sleeps." @@ -159,49 +158,49 @@ msgstr "" "используйте переменные окружения (см. «Инструкция → Переменные " "окружения») вместо задержек." -#: ../../../../docs/user_guide/submit_work.rst:103 +#: ../../../../docs/user_guide/submit_work.rst:102 msgid "Use ``PPC_ID_`` to access files from ``data/``." msgstr "Используйте ``PPC_ID_`` для доступа к файлам из ``data/``." -#: ../../../../docs/user_guide/submit_work.rst:104 +#: ../../../../docs/user_guide/submit_work.rst:103 msgid "" "Cover edge cases in functional tests; add focused performance tests for " "enabled implementations." msgstr "" -"Покрывайте крайние случаи в функциональных тестах; добавьте " -"сфокусированные перфтесты для включенных реализаций." +"Покрывайте крайние случаи в функциональных тестах; добавьте сфокусированные " +"перфтесты для включенных реализаций." -#: ../../../../docs/user_guide/submit_work.rst:106 +#: ../../../../docs/user_guide/submit_work.rst:105 msgid "``data/`` — optional input files for tests (e.g., images)." msgstr "``data/`` — опциональные входные файлы для тестов (например, изображения)." -#: ../../../../docs/user_guide/submit_work.rst:107 +#: ../../../../docs/user_guide/submit_work.rst:106 msgid "``settings.json`` — enable required technologies for your semester, e.g.:" msgstr "" "``settings.json`` — включение необходимых технологий для вашего семестра," " например:" -#: ../../../../docs/user_guide/submit_work.rst:113 +#: ../../../../docs/user_guide/submit_work.rst:112 msgid "``info.json`` — student metadata used in automation (scoreboard, macros):" msgstr "``info.json`` — данные студента для автоматизации (scoreboard, макросы):" -#: ../../../../docs/user_guide/submit_work.rst:120 +#: ../../../../docs/user_guide/submit_work.rst:119 msgid "Build and local run" msgstr "Сборка и локальный запуск" -#: ../../../../docs/user_guide/submit_work.rst:121 +#: ../../../../docs/user_guide/submit_work.rst:120 msgid "Configure and build:" msgstr "Конфигурация и сборка:" -#: ../../../../docs/user_guide/submit_work.rst:128 +#: ../../../../docs/user_guide/submit_work.rst:127 msgid "Run tests via helper:" msgstr "Запуск тестов через вспомогательный скрипт:" -#: ../../../../docs/user_guide/submit_work.rst:139 +#: ../../../../docs/user_guide/submit_work.rst:138 msgid "Executables (where to find tests)" msgstr "Исполняемые файлы (где искать тесты)" -#: ../../../../docs/user_guide/submit_work.rst:140 +#: ../../../../docs/user_guide/submit_work.rst:139 msgid "" "``build/bin`` (or ``install/bin``): - ``core_func_tests`` — core library " "tests first - ``ppc_func_tests`` — functional tests for all " @@ -213,7 +212,7 @@ msgstr "" "``ppc_func_tests`` — функциональные тесты для всех задач/технологий - " "``ppc_perf_tests`` — тесты производительности для всех задач/технологий" -#: ../../../../docs/user_guide/submit_work.rst:145 +#: ../../../../docs/user_guide/submit_work.rst:144 msgid "" "The runner applies gtest filters automatically to select technology " "suites." @@ -221,24 +220,23 @@ msgstr "" "Runner автоматически применяет gtest‑фильтры для выбора наборов тестов по" " технологиям." -#: ../../../../docs/user_guide/submit_work.rst:148 +#: ../../../../docs/user_guide/submit_work.rst:147 msgid "Pull Request" msgstr "Pull Request" -#: ../../../../docs/user_guide/submit_work.rst:149 +#: ../../../../docs/user_guide/submit_work.rst:148 msgid "Title format (example):" msgstr "Формат заголовка (пример):" -#: ../../../../docs/user_guide/submit_work.rst:151 -#, fuzzy +#: ../../../../docs/user_guide/submit_work.rst:150 msgid "" -"``<Фамилия Имя>. Технология . <Название задачи>. Вариант" -" .``" +"``<Фамилия Имя>. Технология . <Название задачи>. Вариант " +".``" msgstr "" "``<Фамилия Имя>. Технология . <Название задачи>. Вариант " ".``" -#: ../../../../docs/user_guide/submit_work.rst:153 +#: ../../../../docs/user_guide/submit_work.rst:152 msgid "" "Description should include: - Полное описание задачи; номер варианта; " "используемая технология - Краткое описание реализации и отчёта - Чек-лист" @@ -252,59 +250,59 @@ msgstr "" "функциональные/перф‑тесты ок, ветка названа как директория задачи, " "достоверность сведений)." -#: ../../../../docs/user_guide/submit_work.rst:159 +#: ../../../../docs/user_guide/submit_work.rst:160 msgid "PR checklist template (body)" msgstr "Шаблон PR (чек‑лист)" -#: ../../../../docs/user_guide/submit_work.rst:182 +#: ../../../../docs/user_guide/submit_work.rst:208 msgid "Common pitfalls (read before pushing)" msgstr "Частые ошибки (прочтите перед отправкой)" -#: ../../../../docs/user_guide/submit_work.rst:183 +#: ../../../../docs/user_guide/submit_work.rst:209 msgid "Wrong folder/branch name. Must be ``__`` everywhere." msgstr "" "Неверное имя папки/ветки. Должно быть ``<фамилия>_<инициал>_<краткое>`` " "везде." -#: ../../../../docs/user_guide/submit_work.rst:184 +#: ../../../../docs/user_guide/submit_work.rst:210 msgid "Missing or wrong ``GetStaticTypeOfTask`` value for a technology." msgstr "Отсутствует или неверное значение ``GetStaticTypeOfTask`` для технологии." -#: ../../../../docs/user_guide/submit_work.rst:185 +#: ../../../../docs/user_guide/submit_work.rst:211 msgid "Tests rely on randomness or sleeps instead of env time limits." msgstr "" "Тесты зависят от случайности или задержек вместо лимитов по времени " "окружения." -#: ../../../../docs/user_guide/submit_work.rst:186 +#: ../../../../docs/user_guide/submit_work.rst:212 msgid "``settings.json`` doesn’t enable a required technology — tests won’t run." msgstr "В ``settings.json`` не включена нужная технология — тесты не запустятся." -#: ../../../../docs/user_guide/submit_work.rst:187 +#: ../../../../docs/user_guide/submit_work.rst:213 msgid "Namespace doesn’t match the folder name and collides with others." msgstr "Namespace не соответствует имени папки и конфликтует с другими." -#: ../../../../docs/user_guide/submit_work.rst:188 +#: ../../../../docs/user_guide/submit_work.rst:214 msgid "Performance tests count or naming deviates from the required patterns." msgstr "Количество или именование перфтестов отклоняется от требуемых шаблонов." -#: ../../../../docs/user_guide/submit_work.rst:191 +#: ../../../../docs/user_guide/submit_work.rst:217 msgid "Useful examples to reference" msgstr "Полезные примеры для ориентирования" -#: ../../../../docs/user_guide/submit_work.rst:192 +#: ../../../../docs/user_guide/submit_work.rst:218 msgid "" -"Processes: ``tasks/example/processes/t1``, " -"``tasks/example/processes/t2``, ``tasks/example/processes/t3``" +"Processes: ``tasks/example/processes/t1``, ``tasks/example/processes/t2``, " +"``tasks/example/processes/t3``" msgstr "" -"Процессы: ``tasks/example/processes/t1``, ``tasks/example/processes/t2``," -" ``tasks/example/processes/t3``" +"Процессы: ``tasks/example/processes/t1``, ``tasks/example/processes/t2``, " +"``tasks/example/processes/t3``" -#: ../../../../docs/user_guide/submit_work.rst:193 +#: ../../../../docs/user_guide/submit_work.rst:219 msgid "Threads: ``tasks/example/threads``" msgstr "Потоки: ``tasks/example/threads``" -#: ../../../../docs/user_guide/submit_work.rst:195 +#: ../../../../docs/user_guide/submit_work.rst:221 msgid "" "Work from your fork in a dedicated branch (not ``master``). Branch name " "must match your task folder." @@ -312,11 +310,11 @@ msgstr "" "Работайте из своего форка в отдельной ветке (не ``master``). Имя ветки " "должно совпадать с именем папки задачи." -#: ../../../../docs/user_guide/submit_work.rst:198 +#: ../../../../docs/user_guide/submit_work.rst:224 msgid "Notes" msgstr "Примечания" -#: ../../../../docs/user_guide/submit_work.rst:199 +#: ../../../../docs/user_guide/submit_work.rst:225 msgid "" "All classes should live in a unique namespace (e.g., " "``__``)." @@ -324,7 +322,7 @@ msgstr "" "Все классы должны находиться в уникальном пространстве имён (например, " "``<фамилия>_<инициал>_<краткое>``)." -#: ../../../../docs/user_guide/submit_work.rst:200 +#: ../../../../docs/user_guide/submit_work.rst:226 msgid "" "Keep tests deterministic and within time limits; prefer env vars over " "sleeps." @@ -332,7 +330,7 @@ msgstr "" "Делайте тесты детерминированными и укладывающимися в лимиты времени; " "используйте переменные окружения вместо задержек." -#: ../../../../docs/user_guide/submit_work.rst:201 +#: ../../../../docs/user_guide/submit_work.rst:227 msgid "" "Follow code style (clang-format/clang-tidy), and run pre-commit hooks " "locally." diff --git a/docs/user_guide/build.rst b/docs/user_guide/build.rst index 2a21c7d01..367ffa60a 100644 --- a/docs/user_guide/build.rst +++ b/docs/user_guide/build.rst @@ -39,16 +39,6 @@ Navigate to the project root. *A corresponding flag can be omitted if it's not needed.* - OSH is part of the process-technology set on Linux and macOS. Linux uses - Open MPI OSH from the system package. macOS builds Sandia SOS from - ``3rdparty/SOS`` and uses the system Open MPI launcher. A focused example - build can be configured as: - - .. code-block:: bash - - cmake -S . -B build-osh -DPPC_BUILD_COMPONENTS=ON -DPPC_TASKS=example - cmake --build build-osh --parallel - 2. **Build the project**: .. code-block:: bash @@ -58,10 +48,3 @@ Navigate to the project root. 3. **Run tests**: Prefer the helper runner described in ``User Guide → CI``. - - OSH example on Linux or macOS: - - .. code-block:: bash - - PPC_NUM_THREADS=1 scripts/run_tests.py --running-type=processes --counts 2 --build-dir build-osh --additional-mpi-args="--oversubscribe" - PPC_NUM_THREADS=1 PPC_NUM_PROC=2 ./build-osh/ppc_sos/install/bin/oshrun -np 2 ./build-osh/bin/ppc_func_tests --gtest_filter="*_osh_*:*OSHEnabled*" diff --git a/docs/user_guide/ci.rst b/docs/user_guide/ci.rst index 63355f82b..31f5eb33b 100644 --- a/docs/user_guide/ci.rst +++ b/docs/user_guide/ci.rst @@ -3,14 +3,14 @@ Continuous Integration (CI) Overview -------- -Your pull request must pass all required CI checks before review/merge. The pipeline validates formatting and static analysis, builds on all platforms, runs functional tests (threads, MPI, and OSH on Linux/macOS), measures performance, builds docs, and publishes artifacts (coverage report, docs, scoreboard). +Your pull request must pass all required CI checks before review/merge. The pipeline validates formatting and static analysis, builds on all platforms, runs functional tests (threads and MPI), measures performance, builds docs, and publishes artifacts (coverage report, docs, scoreboard). High‑level pipeline ------------------- - Pre-commit checks (fast) — runs repository hooks on changed files; fix locally via ``pre-commit run -a``. -- Platform builds and tests (Ubuntu, macOS, Windows) — Ubuntu (GCC/Clang), macOS (Clang), Windows (MSVC/Clang‑CL); functional tests via ``scripts/run_tests.py`` for threads (``--counts 1 2 3 4``; extended ``5 7 11 13``) and processes (MPI/OSH on Linux and macOS, MPI on Windows, ``--counts 1 2 3 4``). +- Platform builds and tests (Ubuntu, macOS, Windows) — Ubuntu (GCC/Clang), macOS (Clang), Windows (MSVC/Clang‑CL); functional tests via ``scripts/run_tests.py`` for threads (``--counts 1 2 3 4``; extended ``5 7 11 13``) and processes (MPI, ``--counts 1 2 3 4``). - Sanitizers (Ubuntu/Clang) — Address/UB/Leak; tests use ``PPC_ASAN_RUN=1`` to skip valgrind. @@ -39,7 +39,7 @@ Use the ``scripts/run_tests.py`` helper. Common environment variables: Number of threads (also exported as ``OMP_NUM_THREADS``). ``PPC_NUM_PROC`` - Number of MPI processes or OSH processing elements to launch. + Number of MPI processes to launch. ``PPC_ASAN_RUN`` Set to ``1`` when sanitizers are enabled to skip ``valgrind`` runs (default ``0``). @@ -49,7 +49,7 @@ Use the ``scripts/run_tests.py`` helper. Common environment variables: Execution modes: - ``--running-type=threads`` — shared-memory backends (OpenMP/TBB/std::thread) -- ``--running-type=processes`` — MPI tests, plus OSH tests on Linux and macOS +- ``--running-type=processes`` — MPI tests - ``--running-type=performance`` — performance benchmarks (mirrors CI perf job) Examples: @@ -62,15 +62,9 @@ Examples: # Threads (functional) scripts/run_tests.py --running-type=threads --counts 1 2 4 - # MPI and OSH (functional) + # MPI (functional) scripts/run_tests.py --running-type=processes --counts 2 4 - # OSH only, direct launcher form on Linux - oshrun -np 2 ./build/bin/ppc_func_tests --gtest_filter="*_osh_*:*OSHEnabled*" - - # OSH only, direct launcher form on macOS build tree - ./build/ppc_sos/install/bin/oshrun -np 2 ./build/bin/ppc_func_tests --gtest_filter="*_osh_*:*OSHEnabled*" - # Performance (benchmarks) scripts/run_tests.py --running-type=performance @@ -92,11 +86,10 @@ Docs and scoreboard artifacts Troubleshooting --------------- - Pre-commit fails: run ``pre-commit run -a`` locally (install with ``pre-commit install``) and commit fixes. -- Static analysis fails: address clang-tidy comments; do not use ``NOLINT``/``IWYU pragma`` in task code; keep OpenMP/TBB/MPI/OSH/std::thread APIs in their matching task backend directories. +- Static analysis fails: address clang-tidy comments; do not use ``NOLINT``/``IWYU pragma`` in task code; keep OpenMP/TBB/MPI/std::thread APIs in their matching task backend directories. - Tests not found/not running: verify ``settings.json`` enables required technologies and tests exist; see :doc:`submit_work`. - Time limits exceeded: reduce data sizes; prefer env vars (:doc:`environment_variables`) like ``PPC_TASK_MAX_TIME``/``PPC_PERF_MAX_TIME``; avoid sleeps/randomness. - MPI runs fail locally: set ``PPC_NUM_PROC`` and try ``--additional-mpi-args=\"--oversubscribe\"``. -- OSH runs fail locally: on Linux verify Open MPI with OSH support is installed; on macOS verify submodules are initialized and ``libfabric`` is installed. - Docs build fails: fix RST warnings; run ``doxygen Doxyfile`` before Sphinx targets. - Performance job fails: ensure performance tests are enabled and keep durations within limits. diff --git a/docs/user_guide/environment.rst b/docs/user_guide/environment.rst index f21ec31a7..a8a653a38 100644 --- a/docs/user_guide/environment.rst +++ b/docs/user_guide/environment.rst @@ -18,7 +18,7 @@ The easiest way to set up your development environment is using the provided ``. 3. VS Code will automatically build the container with all dependencies pre-installed 4. The container includes: - - Ubuntu environment with gcc-15, CMake, MPI, OSH, OpenMP + - Ubuntu environment with gcc-15, CMake, MPI, OpenMP - Pre-configured C++ and Python development tools - All project dependencies ready to use @@ -91,9 +91,6 @@ Parallel Programming Technologies ``MPI`` ~~~~~~~ -On Linux and macOS, MPI is provided by the system Open MPI package. Windows -uses MS-MPI. - - **Windows (MSVC)**: `Installers link `_. You have to install ``msmpisdk.msi`` and ``msmpisetup.exe``. @@ -102,7 +99,7 @@ uses MS-MPI. .. code-block:: bash - sudo apt install -y openmpi-bin libopenmpi-dev + sudo apt install -y mpich openmpi-bin libopenmpi-dev - **MacOS (apple clang)**: @@ -110,35 +107,6 @@ uses MS-MPI. brew install open-mpi -``OSH`` -~~~~~~~~~~~~~ -OSH is used for process tasks as a PGAS / one-sided communication model -for distributed-memory systems. - -Linux uses the Open MPI OSH implementation from the system package. macOS -builds Sandia SOS from ``3rdparty/SOS`` and uses Open MPI as its -launcher/runtime. Windows keeps the existing MPI setup and skips OSH in the -MSVC/clang-cl configurations. - -- **Linux (gcc and clang)**: - - .. code-block:: bash - - sudo apt install -y openmpi-bin libopenmpi-dev - -- **MacOS (apple clang)**: - - .. code-block:: bash - - brew install open-mpi autoconf automake libtool libfabric coreutils gnu-sed grep gawk pkgconf - -- **Windows (MSVC)**: - - Install MS-MPI as described in the MPI section. OSH is skipped on Windows. - -No vendored Open MPI source tree is used. Initialize submodules before macOS -builds so that ``3rdparty/SOS`` and its nested test submodule are available. - ``OpenMP`` ~~~~~~~~~~ ``OpenMP`` is included in ``gcc`` and ``msvc``, but some components should be installed additionally: diff --git a/docs/user_guide/submit_work.rst b/docs/user_guide/submit_work.rst index abdf2c372..c7462e467 100644 --- a/docs/user_guide/submit_work.rst +++ b/docs/user_guide/submit_work.rst @@ -29,7 +29,7 @@ Create a folder ``tasks/__/`` with the following layout: using BaseTask = ppc::task::Task; - Technology implementations (add only those required by the semester): - - Processes (MPI/OSH/SEQ): ``seq/include``, ``seq/src``, ``mpi/include``, ``mpi/src``, ``osh/include``, ``osh/src`` + - Processes (MPI/SEQ): ``seq/include``, ``seq/src``, ``mpi/include``, ``mpi/src`` - Threads: ``seq``, ``omp``, ``tbb``, ``stl`` (same include/src split) Each implementation defines a class derived from ``BaseTask`` and @@ -39,7 +39,7 @@ Create a folder ``tasks/__/`` with the following layout: .. code-block:: cpp static constexpr ppc::task::TypeOfTask GetStaticTypeOfTask() { return ppc::task::TypeOfTask::kMPI; } - // or kOSH/kSEQ/kOMP/kTBB/kSTL as appropriate + // or kSEQ/kOMP/kTBB/kSTL as appropriate Minimal skeleton (example for SEQ): @@ -83,7 +83,6 @@ Functional tests example: const auto kTasks = std::tuple_cat( ppc::util::AddFuncTask(params, PPC_SETTINGS_), - ppc::util::AddFuncTask(params, PPC_SETTINGS_), ppc::util::AddFuncTask(params, PPC_SETTINGS_) ); INSTANTIATE_TEST_SUITE_P(..., MyFuncTests, ppc::util::ExpandToValues(kTasks), ...); @@ -94,7 +93,7 @@ Performance tests example: .. code-block:: cpp - const auto kAllPerfTasks = ppc::util::MakeAllPerfTasks(PPC_SETTINGS_); + const auto kAllPerfTasks = ppc::util::MakeAllPerfTasks(PPC_SETTINGS_); INSTANTIATE_TEST_SUITE_P(..., MyPerfTests, ppc::util::TupleToGTestValues(kAllPerfTasks), ...); Tips for tests @@ -108,7 +107,7 @@ Tips for tests .. code-block:: json - { "tasks_type": "processes", "tasks": { "mpi": "enabled", "osh": "enabled", "seq": "enabled" } } + { "tasks_type": "processes", "tasks": { "mpi": "enabled", "seq": "enabled" } } - ``info.json`` — student metadata used in automation (scoreboard, macros): @@ -148,7 +147,7 @@ Pull Request ------------ - Title format (example): - ``<Фамилия Имя>. Технология . <Название задачи>. Вариант .`` + ``<Фамилия Имя>. Технология . <Название задачи>. Вариант .`` - Description should include: - Полное описание задачи; номер варианта; используемая технология @@ -163,7 +162,7 @@ PR checklist template (body) ## Description - Task: - Variant: - - Technology: + - Technology: - Summary: Brief description of your implementation and report --- diff --git a/tasks/example/processes/report.md b/tasks/example/processes/report.md index af9a53ebd..3af7abdb1 100644 --- a/tasks/example/processes/report.md +++ b/tasks/example/processes/report.md @@ -1,6 +1,6 @@ # Example Processes -This section aggregates the MPI/OSH process example tasks. +This section aggregates the MPI/process example tasks. Child reports: diff --git a/tasks/example/processes/t1/osh/report.md b/tasks/example/processes/t1/osh/report.md deleted file mode 100644 index 5f99940f4..000000000 --- a/tasks/example/processes/t1/osh/report.md +++ /dev/null @@ -1,3 +0,0 @@ -# Example Processes T1 OSH - -OSH implementation for process example task T1. diff --git a/tasks/example/processes/t1/report.md b/tasks/example/processes/t1/report.md index 60ad89665..9e98694eb 100644 --- a/tasks/example/processes/t1/report.md +++ b/tasks/example/processes/t1/report.md @@ -6,4 +6,3 @@ Child reports: - `seq/report.md` - `mpi/report.md` -- `osh/report.md`