Skip to content

Commit 707eb40

Browse files
authored
Merge branch 'master' into valgrind-all
2 parents 2b3b20d + 4c7da95 commit 707eb40

65 files changed

Lines changed: 1690 additions & 1212 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

.clang-format

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,3 +5,13 @@ ColumnLimit: 120
55
UseTab: Never
66
QualifierAlignment: Left
77
PointerAlignment: Right
8+
ReferenceAlignment: Right
9+
SortUsingDeclarations: LexicographicNumeric
10+
InsertNewlineAtEOF: true
11+
LambdaBodyIndentation: OuterScope
12+
MaxEmptyLinesToKeep: 1
13+
KeepEmptyLines:
14+
AtStartOfFile: false
15+
AtStartOfBlock: false
16+
AtEndOfFile: false
17+
LineEnding: LF

.clang-tidy

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,12 +8,12 @@ Checks: >
88
misc-*,
99
modernize-*,
1010
mpi-*,
11+
openmp-*,
1112
performance-*,
1213
portability-*,
1314
readability-*,
1415
-bugprone-casting-through-void,
1516
-bugprone-easily-swappable-parameters,
16-
-bugprone-implicit-widening-of-multiplication-result,
1717
-cppcoreguidelines-avoid-magic-numbers,
1818
-cppcoreguidelines-non-private-member-variables-in-classes,
1919
-cppcoreguidelines-owning-memory,
@@ -87,4 +87,4 @@ CheckOptions:
8787
- key: readability-identifier-length.MinimumParameterNameLength
8888
value: 1
8989
- key: misc-include-cleaner.IgnoreHeaders
90-
value: '(__chrono/.*)'
90+
value: '(__chrono/.*|stdlib\.h)'
Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,39 @@
1+
<!--
2+
Pull request title requirement:
3+
4+
"<LastName> <FirstName>. Technology <TECHNOLOGY_NAME:SEQ|OMP|TBB|STL|MPI>. <Full Task Name>. Variant <Number>"
5+
-->
6+
7+
## Description
8+
<!--
9+
Please provide a detailed description of your implementation, including:
10+
- key solution details (chosen algorithm description)
11+
- parallelism technology application (if applicable)
12+
-->
13+
14+
- **Task**: _Enter the full task name here_
15+
- **Variant**: _Enter the variant number here_
16+
- **Technology**: _Enter technology (e.g., SEQ, OMP, TBB, STL, MPI)_
17+
- **Description** of your implementation and report.
18+
_Provide a concise summary of your implementation and report here._
19+
20+
---
21+
22+
## Checklist
23+
<!--
24+
Please ensure the following items are completed **before** submitting your pull request and requesting a review:
25+
-->
26+
27+
- [ ] **CI Status**: All CI jobs (build, tests, report generation) are passing on my branch in my fork
28+
- [ ] **Task Directory & Naming**: I have created a directory named `<lastName>_<firstInitial>_<short_task_name>`
29+
- [ ] **Full Task Definition**: I have provided the complete task description in the pull request body.
30+
- [ ] **clang-format**: My changes pass `clang-format` locally in my fork (no formatting errors)
31+
- [ ] **clang-tidy**: My changes pass `clang-tidy` locally in my fork (no warnings/errors)
32+
- [ ] **Functional Tests**: All functional tests are passing locally on my machine
33+
- [ ] **Performance Tests**: All performance tests are passing locally on my machine
34+
- [ ] **Branch**: I am working on a branch named exactly as my task directory (e.g., `nesterov_a_vector_sum`), not on `master`.
35+
- [ ] **Truthful Content**: I confirm that every detail provided in this pull request is accurate and truthful to the best of my knowledge.
36+
37+
<!--
38+
NOTE: Untruthful entries in this checklist may result in PR rejection and zero points for the associated task.
39+
-->
Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,39 @@
1+
<!--
2+
Требования к названию pull request:
3+
4+
"<Фамилия> <Имя>. Технология <TECHNOLOGY_NAME:SEQ|OMP|TBB|STL|MPI>. <Полное название задачи>. Вариант <Номер>"
5+
-->
6+
7+
## Описание
8+
<!--
9+
Пожалуйста, предоставьте подробное описание вашей реализации, включая:
10+
- основные детали решения (описание выбранного алгоритма)
11+
- применение технологии параллелизма (если применимо)
12+
-->
13+
14+
- **Задача**: _Введите здесь полное название задачи_
15+
- **Вариант**: _Введите здесь номер варианта_
16+
- **Технология**: _Введите технологию (например, SEQ, OMP, TBB, STL, MPI)_
17+
- **Описание** вашей реализации и отчёта.
18+
_Кратко опишите вашу реализацию и содержание отчёта здесь._
19+
20+
---
21+
22+
## Чек-лист
23+
<!--
24+
Пожалуйста, убедитесь, что следующие пункты выполнены **до** отправки pull request'а и запроса его ревью:
25+
-->
26+
27+
- [ ] **Статус CI**: Все CI-задачи (сборка, тесты, генерация отчёта) успешно проходят на моей ветке в моем форке
28+
- [ ] **Директория и именование задачи**: Я создал директорию с именем `<фамилия>_<первая_буква_имени>_<короткое_название_задачи>`
29+
- [ ] **Полное описание задачи**: Я предоставил полное описание задачи в теле pull request
30+
- [ ] **clang-format**: Мои изменения успешно проходят `clang-format` локально в моем форке (нет ошибок форматирования)
31+
- [ ] **clang-tidy**: Мои изменения успешно проходят `clang-tidy` локально в моем форке (нет предупреждений/ошибок)
32+
- [ ] **Функциональные тесты**: Все функциональные тесты успешно проходят локально на моей машине
33+
- [ ] **Тесты производительности**: Все тесты производительности успешно проходят локально на моей машине
34+
- [ ] **Ветка**: Я работаю в ветке, названной точно так же, как директория моей задачи (например, `nesterov_a_vector_sum`), а не в `master`
35+
- [ ] **Правдивое содержание**: Я подтверждаю, что все сведения, указанные в этом pull request, являются точными и достоверными
36+
37+
<!--
38+
ПРИМЕЧАНИЕ: Ложные сведения в этом чек-листе могут привести к отклонению PR и получению нулевого балла за соответствующую задачу.
39+
-->

.github/pull_request_template.md

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
<!-- Solution for PR template choice: https://stackoverflow.com/a/75030350/24543008 -->
2+
3+
Please go to the `Preview` tab and select the appropriate template:
4+
5+
* [Submit Student task (English)](?expand=1&template=task_submission_en.md)
6+
* [Submit Student task (Russian)](?expand=1&template=task_submission_ru.md)

.github/workflows/codeql.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,7 @@ jobs:
4141
run: >
4242
cmake -S . -B build
4343
-D CMAKE_C_COMPILER_LAUNCHER=ccache -D CMAKE_CXX_COMPILER_LAUNCHER=ccache
44-
-G Ninja -D USE_FUNC_TESTS=ON -D USE_PERF_TESTS=ON
44+
-G Ninja
4545
-D CMAKE_BUILD_TYPE=RELEASE
4646
env:
4747
CC: gcc-14

.github/workflows/lint.yml

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
on:
2+
workflow_call:
3+
4+
jobs:
5+
clang-format:
6+
runs-on: ubuntu-24.04
7+
steps:
8+
- uses: actions/checkout@v4
9+
- uses: DoozyX/clang-format-lint-action@v0.20
10+
with:
11+
source: '.'
12+
clangFormatVersion: 20
13+
14+
python-lint:
15+
runs-on: ubuntu-24.04
16+
steps:
17+
- uses: actions/checkout@v4
18+
- name: Install flake8
19+
run: python3 -m pip install flake8
20+
- name: Run flake8
21+
run: python3 -m flake8 .

.github/workflows/mac.yml

Lines changed: 184 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,184 @@
1+
on:
2+
workflow_call:
3+
4+
jobs:
5+
macos-clang-build:
6+
runs-on: macOS-latest
7+
steps:
8+
- uses: actions/checkout@v4
9+
with:
10+
submodules: recursive
11+
- name: Setup environment
12+
run: |
13+
brew update-reset
14+
brew install ninja mpich llvm
15+
brew install libomp
16+
brew link libomp --overwrite --force
17+
brew install openssl
18+
brew link openssl --overwrite --force
19+
- name: ccache
20+
uses: hendrikmuhs/ccache-action@v1.2
21+
with:
22+
key: ${{ runner.os }}-clang
23+
create-symlink: true
24+
max-size: 1G
25+
- name: CMake configure
26+
run: >
27+
cmake -S . -B build
28+
-D CMAKE_C_COMPILER_LAUNCHER=ccache -D CMAKE_CXX_COMPILER_LAUNCHER=ccache
29+
-G Ninja -DCMAKE_C_FLAGS="-I$(brew --prefix)/opt/libomp/include"
30+
-DCMAKE_CXX_FLAGS="-I$(brew --prefix)/opt/libomp/include"
31+
-D CMAKE_BUILD_TYPE=RELEASE
32+
-DCMAKE_INSTALL_PREFIX=install
33+
- name: Build project
34+
run: |
35+
cmake --build build --parallel
36+
- name: Install project
37+
run: |
38+
cmake --build build --target install
39+
- name: Archive installed package
40+
run: |
41+
tar -czvf macos-clang-sanitizer-install.tar.gz -C install .
42+
- name: Upload installed package
43+
uses: actions/upload-artifact@v4
44+
with:
45+
name: macos-clang-sanitizer-install
46+
path: macos-clang-sanitizer-install.tar.gz
47+
macos-clang-build-debug:
48+
runs-on: macOS-latest
49+
steps:
50+
- uses: actions/checkout@v4
51+
with:
52+
submodules: recursive
53+
- name: Setup environment
54+
run: |
55+
brew update-reset
56+
brew install ninja mpich llvm
57+
brew install libomp
58+
brew link libomp --overwrite --force
59+
brew install openssl
60+
brew link openssl --overwrite --force
61+
- name: ccache
62+
uses: hendrikmuhs/ccache-action@v1.2
63+
with:
64+
key: ${{ runner.os }}-clang
65+
create-symlink: true
66+
max-size: 1G
67+
- name: CMake configure
68+
run: >
69+
cmake -S . -B build
70+
-D CMAKE_C_COMPILER_LAUNCHER=ccache -D CMAKE_CXX_COMPILER_LAUNCHER=ccache
71+
-G Ninja -DCMAKE_C_FLAGS="-I$(brew --prefix)/opt/libomp/include"
72+
-DCMAKE_CXX_FLAGS="-I$(brew --prefix)/opt/libomp/include"
73+
-D CMAKE_BUILD_TYPE=DEBUG
74+
-DCMAKE_INSTALL_PREFIX=install
75+
- name: Build project
76+
run: |
77+
cmake --build build --parallel
78+
- name: Install project
79+
run: |
80+
cmake --build build --target install
81+
- name: Archive installed package
82+
run: |
83+
tar -czvf macos-clang-debug-install.tar.gz -C install .
84+
- name: Upload installed package
85+
uses: actions/upload-artifact@v4
86+
with:
87+
name: macos-clang-debug-install
88+
path: macos-clang-debug-install.tar.gz
89+
macos-clang-test:
90+
needs:
91+
- macos-clang-build
92+
runs-on: macOS-latest
93+
steps:
94+
- uses: actions/checkout@v4
95+
- name: Setup environment
96+
run: |
97+
brew update-reset
98+
brew install ninja mpich llvm
99+
brew install libomp
100+
brew link libomp --overwrite --force
101+
brew install openssl
102+
brew link openssl --overwrite --force
103+
- name: Download installed package
104+
uses: actions/download-artifact@v4
105+
with:
106+
name: macos-clang-sanitizer-install
107+
- name: Extract installed package
108+
run: |
109+
mkdir -p install
110+
tar -xzvf macos-clang-sanitizer-install.tar.gz -C install
111+
- name: Run func tests (MPI, num_proc=1)
112+
run: python3 scripts/run_tests.py --running-type="processes"
113+
env:
114+
PPC_NUM_PROC: 1
115+
PPC_NUM_THREADS: 3
116+
- name: Run func tests (MPI, num_proc=2)
117+
run: python3 scripts/run_tests.py --running-type="processes"
118+
env:
119+
PPC_NUM_PROC: 2
120+
PPC_NUM_THREADS: 2
121+
- name: Run func tests (MPI, num_proc=3)
122+
run: python3 scripts/run_tests.py --running-type="processes"
123+
env:
124+
PPC_NUM_PROC: 3
125+
PPC_NUM_THREADS: 1
126+
- name: Run func tests (MPI, num_proc=4)
127+
run: python3 scripts/run_tests.py --running-type="processes"
128+
env:
129+
PPC_NUM_PROC: 4
130+
PPC_NUM_THREADS: 1
131+
- name: Run tests (threads, num_threads=1)
132+
run: python3 scripts/run_tests.py --running-type="threads"
133+
env:
134+
PPC_NUM_THREADS: 1
135+
- name: Run tests (threads, num_threads=2)
136+
run: python3 scripts/run_tests.py --running-type="threads"
137+
env:
138+
PPC_NUM_THREADS: 2
139+
- name: Run tests (threads, num_threads=3)
140+
run: python3 scripts/run_tests.py --running-type="threads"
141+
env:
142+
PPC_NUM_THREADS: 3
143+
- name: Run tests (threads, num_threads=4)
144+
run: python3 scripts/run_tests.py --running-type="threads"
145+
env:
146+
PPC_NUM_THREADS: 4
147+
macos-clang-test-extended:
148+
needs:
149+
- macos-clang-test
150+
runs-on: macOS-latest
151+
steps:
152+
- uses: actions/checkout@v4
153+
- name: Setup environment
154+
run: |
155+
brew update-reset
156+
brew install ninja mpich llvm
157+
brew install libomp
158+
brew link libomp --overwrite --force
159+
brew install openssl
160+
brew link openssl --overwrite --force
161+
- name: Download installed package
162+
uses: actions/download-artifact@v4
163+
with:
164+
name: macos-clang-sanitizer-install
165+
- name: Extract installed package
166+
run: |
167+
mkdir -p install
168+
tar -xzvf macos-clang-sanitizer-install.tar.gz -C install
169+
- name: Run tests (threads, num_threads=5)
170+
run: python3 scripts/run_tests.py --running-type="threads"
171+
env:
172+
PPC_NUM_THREADS: 5
173+
- name: Run tests (threads, num_threads=7)
174+
run: python3 scripts/run_tests.py --running-type="threads"
175+
env:
176+
PPC_NUM_THREADS: 7
177+
- name: Run tests (threads, num_threads=11)
178+
run: python3 scripts/run_tests.py --running-type="threads"
179+
env:
180+
PPC_NUM_THREADS: 11
181+
- name: Run tests (threads, num_threads=13)
182+
run: python3 scripts/run_tests.py --running-type="threads"
183+
env:
184+
PPC_NUM_THREADS: 13

0 commit comments

Comments
 (0)