From 88c57b41cd53a2ec7268a6c8b33713d1f8004855 Mon Sep 17 00:00:00 2001 From: Gitubrr Date: Tue, 21 Apr 2026 19:40:02 +0300 Subject: [PATCH 01/13] made lib compare --- src/opencl/Compare.md | 109 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 109 insertions(+) create mode 100644 src/opencl/Compare.md diff --git a/src/opencl/Compare.md b/src/opencl/Compare.md new file mode 100644 index 000000000..17c9a5e07 --- /dev/null +++ b/src/opencl/Compare.md @@ -0,0 +1,109 @@ +# Сравнение библиотек для создания механизма конфигурирования +Вся информация взята из репозиториев соответствующих проектов. Дата обращения: 21.04.26. + +## Критерии сравнения + +| Критерий | Метрика | Единицы измерения | +|:---|:---|:---| +| **Зависимости** | количество, суммарный размер | n, MiB | +| **Источники** | CLI (argv) / env / файлы | +/-, форматы | +| **Стандарт C++** | минимальная версия | C++хх | +| **Пакетные менеджеры** | vcpkg / Conan / Conda / apt / brew / pacman | +/- | +| **Способ распространения** | header-only / статическая / динамическая | — | +| **ОС** | Linux / Windows / macOS | +/-, компиляторы | +| **Активность** | среднее число коммитов | коммитов/мес (за последний мес) | +| **Issues** | open, closed/open | n, коэффициент | +| **Сообщество** | GitHub Stars | n | + + + +## Сравнение парсеров командной строки (CLI) + +| Критерий | CLI11 | cxxopts | +|:---|:---:|:---:| +| Зависимости (n, MiB) | 0, 0 | 0, 0 | +| **Источники** | | | +|  CLI (argv) | + | + | +|  env | + | - | +|  Файлы | INI, TOML¹ | - | +| Стандарт C++ | ≥ C++11 | ≥ C++11 | +| **Пакетные менеджеры** | | | +|  vcpkg | + | + | +|  Conan | + | + | +|  Conda | + | ? | +|  apt | ? | ? | +|  brew | ? | + | +|  pacman | ? | ? | +| Способ распространения | header-only | header-only +| **ОС** | | | +|  Linux | + (GCC 4.8+, Clang 3.5+) | + (GCC ≥ 4.9, Clang ≥ 3.1) | +|  Windows | + (MSVC ≥ 2015) | + (MSVC ≥ 2015) | +|  macOS | + (AppleClang 7+) | + (Clang ≥ 3.1 с libc++) | +| **Сообщество** | | | +|  Активность (коммитов/мес) | 4 | 1 | +|  Issues всего | 506 | 307 | +|  Issues closed/open | 9 | 6 | +|  Stars | 4.3k | 4.7k | + + +> ¹ CLI11 поддерживает env с версии 2.4.0, файлы INI/TOML читает как опции командной строки. + +## Парсеры файлов + +| Критерий | nlohmann/json | yaml-cpp | toml++ | toml11 | +|:---|:---:|:---:|:---:|:---:| +| Зависимости (n, MiB) | 0, 0 | 0, 0 | 0, 0 | 0, 0 +| **Источники** | | | +|  CLI (argv) | - | - | - | - +|  env | - | - | - | - +|  Файлы | JSON | YAML | TOML | TOML +| Стандарт C++ | ≥ C++11 | ≥ C++11 | ≥ C++17 | ≥ C++11 +| **Пакетные менеджеры** | | | +|  vcpkg | + | + | + | + +|  Conan | + | + | + | ? +|  Conda | + | + | ? | ? +|  apt | + | + | ? | ? +|  brew | + | + | ? | ? +|  pacman | + | + | ? | ? | +| Способ распространения | header-only | статическая/динамическая¹ | header-only/статическая/динамическая¹ | header-only/статическая/динамическая¹ +| **ОС** | | | +|  Linux | + (GCC 4.8–14.2, Clang 3.4–21.0) | + (GCC, Clang) | + (Clang 8+, GCC 8+) | + (GCC, Clang) +|  Windows | + (MSVC 2015–2022) | + (MSVC) | + (MSVC VS2019+) | + (MSVC, MinGW) +|  macOS | + (AppleClang 9.1–16.0) | + (Xcode, AppleClang) | + (AppleClang) | + (AppleClang) +| **Сообщество** | | | +|  Активность (коммитов/мес) | 2 | 9 | 2 | 4 +|  Issues всего | 3271 | 905 | 193 | 194 +|  Issues closed/open | 68 | 3 | 8 | 5 +|  Stars | 49.4k | 15k | 2k | 1.3k + +> ¹ Опционально. + +## Сравнение универсальных инструментов + +| Критерий | Boost +|:---|:---:| +| Зависимости (n, MiB) | 0, ~192 | +| **Источники** | | | +|  CLI (argv) | + | + | +|  env | + | + | +|  Файлы | INI, JSON, XML, TOML | +| Стандарт C++ | ≥ C++11 | ≥ C++11 | +| **Пакетные менеджеры** | | | +|  vcpkg | + | +|  Conan | + | +|  Conda | + | +|  apt | + | +|  brew | + | +|  pacman | + | +| Способ распространения | header-only/статическая/динамическая¹ | +| **ОС** | | | +|  Linux | + (GCC 5+, Clang 3.6+) | +|  Windows | + (MSVC 2015 (vc140)) | +|  macOS | + (AppleClang) | +| **Сообщество** | | | +|  Активность (коммитов/мес) | 12 | +|  Issues всего | 400 | +|  Issues closed/open | 1 | +|  Stars | 9.4k | + +> ¹ Опционально. \ No newline at end of file From f6c9ff12a39f5bf03d106c10295243a238c529da Mon Sep 17 00:00:00 2001 From: Gitubrr Date: Sat, 25 Apr 2026 22:59:16 +0300 Subject: [PATCH 02/13] added more comparison points --- src/opencl/Compare.md | 43 +++++++++++++++++++++++++++++-------------- 1 file changed, 29 insertions(+), 14 deletions(-) diff --git a/src/opencl/Compare.md b/src/opencl/Compare.md index 17c9a5e07..7a6634642 100644 --- a/src/opencl/Compare.md +++ b/src/opencl/Compare.md @@ -5,9 +5,10 @@ | Критерий | Метрика | Единицы измерения | |:---|:---|:---| -| **Зависимости** | количество, суммарный размер | n, MiB | +| **Зависимости** | наличие | +/- | | **Источники** | CLI (argv) / env / файлы | +/-, форматы | | **Стандарт C++** | минимальная версия | C++хх | +| **Поддерживает стандарт иерархии** | Linux/Windows/MacOS | +/- | | **Пакетные менеджеры** | vcpkg / Conan / Conda / apt / brew / pacman | +/- | | **Способ распространения** | header-only / статическая / динамическая | — | | **ОС** | Linux / Windows / macOS | +/-, компиляторы | @@ -19,14 +20,18 @@ ## Сравнение парсеров командной строки (CLI) -| Критерий | CLI11 | cxxopts | +| Критерий | CLI11 | cxxopts | |:---|:---:|:---:| -| Зависимости (n, MiB) | 0, 0 | 0, 0 | +| Зависимости | - | - | | **Источники** | | | |  CLI (argv) | + | + | |  env | + | - | -|  Файлы | INI, TOML¹ | - | +|  Файлы | - | - | | Стандарт C++ | ≥ C++11 | ≥ C++11 | +| **Поддерживает стандарт иерархии** | | | +|  Linux | + | + | +|  Windows | + | + | +|  MacOS | + | + | | **Пакетные менеджеры** | | | |  vcpkg | + | + | |  Conan | + | + | @@ -46,18 +51,20 @@ |  Stars | 4.3k | 4.7k | -> ¹ CLI11 поддерживает env с версии 2.4.0, файлы INI/TOML читает как опции командной строки. - ## Парсеры файлов | Критерий | nlohmann/json | yaml-cpp | toml++ | toml11 | |:---|:---:|:---:|:---:|:---:| -| Зависимости (n, MiB) | 0, 0 | 0, 0 | 0, 0 | 0, 0 +| Зависимости | - | - | - | - | **Источники** | | | |  CLI (argv) | - | - | - | - |  env | - | - | - | - |  Файлы | JSON | YAML | TOML | TOML | Стандарт C++ | ≥ C++11 | ≥ C++11 | ≥ C++17 | ≥ C++11 +| **Поддерживает стандарт иерархии** | | | +|  Linux | + | + | + | + | +|  Windows | + | + | + | + | +|  MacOS | + | + | + | + | | **Пакетные менеджеры** | | | |  vcpkg | + | + | + | + |  Conan | + | + | + | ? @@ -80,14 +87,18 @@ ## Сравнение универсальных инструментов -| Критерий | Boost +| Критерий | Boost.Program_options |:---|:---:| -| Зависимости (n, MiB) | 0, ~192 | +| Зависимости | + | | **Источники** | | | |  CLI (argv) | + | + | |  env | + | + | -|  Файлы | INI, JSON, XML, TOML | -| Стандарт C++ | ≥ C++11 | ≥ C++11 | +|  Файлы | INI | +| Стандарт C++ | ≥ C++3 | +| **Поддерживает стандарт иерархии** | | | +|  Linux | + | +|  Windows | + | +|  MacOS | + | | **Пакетные менеджеры** | | | |  vcpkg | + | |  Conan | + | @@ -95,10 +106,10 @@ |  apt | + | |  brew | + | |  pacman | + | -| Способ распространения | header-only/статическая/динамическая¹ | +| Способ распространения | статическая/динамическая¹ | | **ОС** | | | |  Linux | + (GCC 5+, Clang 3.6+) | -|  Windows | + (MSVC 2015 (vc140)) | +|  Windows | + (MSVC 2015 (vc140)+) | |  macOS | + (AppleClang) | | **Сообщество** | | | |  Активность (коммитов/мес) | 12 | @@ -106,4 +117,8 @@ |  Issues closed/open | 1 | |  Stars | 9.4k | -> ¹ Опционально. \ No newline at end of file +> ¹ Опционально. + + +## Итог: +По результатам сравнения, вероятно, лучшим вариантом будет использование `CLI11` и `nlohmann/json`, так как они, в отличие от Boost.program_options, не требуют зависимостей и являются header-only. \ No newline at end of file From 7419e1637cad00d327c0e9a8ac596258d115be37 Mon Sep 17 00:00:00 2001 From: Gitubrr Date: Tue, 28 Apr 2026 17:03:26 +0300 Subject: [PATCH 03/13] added list of dependences --- src/opencl/Compare.md | 24 +++++++++++++++++++++--- 1 file changed, 21 insertions(+), 3 deletions(-) diff --git a/src/opencl/Compare.md b/src/opencl/Compare.md index 7a6634642..705b1dbca 100644 --- a/src/opencl/Compare.md +++ b/src/opencl/Compare.md @@ -15,6 +15,7 @@ | **Активность** | среднее число коммитов | коммитов/мес (за последний мес) | | **Issues** | open, closed/open | n, коэффициент | | **Сообщество** | GitHub Stars | n | +| **Проходит ли CI** | CI | +/- | @@ -49,6 +50,7 @@ |  Issues всего | 506 | 307 | |  Issues closed/open | 9 | 6 | |  Stars | 4.3k | 4.7k | +| **Проходит ли CI** | CI | + | + | ## Парсеры файлов @@ -82,6 +84,7 @@ |  Issues всего | 3271 | 905 | 193 | 194 |  Issues closed/open | 68 | 3 | 8 | 5 |  Stars | 49.4k | 15k | 2k | 1.3k +| **Проходит ли CI** | CI | + | + | - | + | > ¹ Опционально. @@ -89,7 +92,7 @@ | Критерий | Boost.Program_options |:---|:---:| -| Зависимости | + | +| Зависимости | +¹ | | **Источники** | | | |  CLI (argv) | + | + | |  env | + | + | @@ -106,7 +109,7 @@ |  apt | + | |  brew | + | |  pacman | + | -| Способ распространения | статическая/динамическая¹ | +| Способ распространения | статическая/динамическая² | | **ОС** | | | |  Linux | + (GCC 5+, Clang 3.6+) | |  Windows | + (MSVC 2015 (vc140)+) | @@ -116,8 +119,23 @@ |  Issues всего | 400 | |  Issues closed/open | 1 | |  Stars | 9.4k | +| **Проходит ли CI** | CI | + | -> ¹ Опционально. +> ¹ Список зависимостей: +1. Boost.Any +2. Boost.Bind +3. Boost.Config +4. Boost.Core +5. Boost.Detail +6. Boost.Function +7. Boost.Iterator +8. Boost.Lexical Cast +9. Boost.Smart Ptr +10. Boost.ThrowException +11. Boost.Tokenizer +12. Boost.Type Traits + +> ² Опционально. ## Итог: From 21279b013f3d124a579a75f786f3cc7dcd1f36bf Mon Sep 17 00:00:00 2001 From: Gitubrr Date: Wed, 29 Apr 2026 03:48:13 +0300 Subject: [PATCH 04/13] CI -> + --- src/opencl/Compare.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/opencl/Compare.md b/src/opencl/Compare.md index 705b1dbca..e0d144d1e 100644 --- a/src/opencl/Compare.md +++ b/src/opencl/Compare.md @@ -50,7 +50,7 @@ |  Issues всего | 506 | 307 | |  Issues closed/open | 9 | 6 | |  Stars | 4.3k | 4.7k | -| **Проходит ли CI** | CI | + | + | +| **Проходит ли CI** | + | + | + | ## Парсеры файлов @@ -84,7 +84,7 @@ |  Issues всего | 3271 | 905 | 193 | 194 |  Issues closed/open | 68 | 3 | 8 | 5 |  Stars | 49.4k | 15k | 2k | 1.3k -| **Проходит ли CI** | CI | + | + | - | + | +| **Проходит ли CI** | + | + | + | - | + | > ¹ Опционально. @@ -119,7 +119,7 @@ |  Issues всего | 400 | |  Issues closed/open | 1 | |  Stars | 9.4k | -| **Проходит ли CI** | CI | + | +| **Проходит ли CI** | + | + | > ¹ Список зависимостей: 1. Boost.Any From e2a2ad1a96cb9c3a8984f296e292818ed903e9ca Mon Sep 17 00:00:00 2001 From: Gitubrr Date: Wed, 29 Apr 2026 03:53:50 +0300 Subject: [PATCH 05/13] Just formatting changes to README --- src/opencl/Compare.md | 26 +++++++++++++------------- 1 file changed, 13 insertions(+), 13 deletions(-) diff --git a/src/opencl/Compare.md b/src/opencl/Compare.md index e0d144d1e..96bfff750 100644 --- a/src/opencl/Compare.md +++ b/src/opencl/Compare.md @@ -122,21 +122,21 @@ | **Проходит ли CI** | + | + | > ¹ Список зависимостей: -1. Boost.Any -2. Boost.Bind -3. Boost.Config -4. Boost.Core -5. Boost.Detail -6. Boost.Function -7. Boost.Iterator -8. Boost.Lexical Cast -9. Boost.Smart Ptr -10. Boost.ThrowException -11. Boost.Tokenizer -12. Boost.Type Traits +> 1. Boost.Any +> 2. Boost.Bind +> 3. Boost.Config +> 4. Boost.Core +> 5. Boost.Detail +> 6. Boost.Function +> 7. Boost.Iterator +> 8. Boost.Lexical Cast +> 9. Boost.Smart Ptr +> 10. Boost.ThrowException +> 11. Boost.Tokenizer +> 12. Boost.Type Traits > ² Опционально. ## Итог: -По результатам сравнения, вероятно, лучшим вариантом будет использование `CLI11` и `nlohmann/json`, так как они, в отличие от Boost.program_options, не требуют зависимостей и являются header-only. \ No newline at end of file +По результатам сравнения, вероятно, лучшим вариантом будет использование `CLI11` и `nlohmann/json`, так как они, в отличие от `Boost.program_options`, не требуют зависимостей и являются header-only. \ No newline at end of file From 2ed3b039ffa9ef2d16b59aa24961341eb70642b1 Mon Sep 17 00:00:00 2001 From: Gitubrr Date: Mon, 4 May 2026 05:53:20 +0300 Subject: [PATCH 06/13] added config params info --- src/opencl/Compare.md | 31 ++++++++++++++++++++++++++++++- 1 file changed, 30 insertions(+), 1 deletion(-) diff --git a/src/opencl/Compare.md b/src/opencl/Compare.md index 96bfff750..77ff795ee 100644 --- a/src/opencl/Compare.md +++ b/src/opencl/Compare.md @@ -139,4 +139,33 @@ ## Итог: -По результатам сравнения, вероятно, лучшим вариантом будет использование `CLI11` и `nlohmann/json`, так как они, в отличие от `Boost.program_options`, не требуют зависимостей и являются header-only. \ No newline at end of file +По результатам сравнения, вероятно, лучшим вариантом будет использование `CLI11` и `nlohmann/json`, так как они, в отличие от `Boost.program_options`, не требуют зависимостей и являются header-only. + + +# Что нужно конфигурировать +1. Выбор платформы +2. Выбор устройства +3. Количество очередей: сейчас создается только 1 очередь +4. Приоритеты очередей +5. Размер линейного аллокатора `DEFAULT_SIZE` +6. Стратегия выбора аллокатора: \ + NVIDIA используют общий аллокатор \ + Все остальные используем линейный аллокатор +7. Характеристики устройтсв:\ + `m_vendor_id` \ + `m_max_cu` \ + `m_default_wgs` \ + `m_max_local_mem` \ + `m_addr_align` \ + пороги `m_max_wgs`, `m_max_cu`, `m_wave_size` +8. Строковые паттерны проверки девайса: возможно только 3 вариаета `m_vendor_name` +6. Дефолтные значения характеристик \ + `m_addr_align` \ + `m_default_wgs` \ + `uint m_wave_size` \ + `uint m_num_of_mem_banks` +7. Суффикс и имя \ + `m_name` \ + `m_suffix ` +8. Тип устройства (чтобы можно было использовать CPU) + `getDevices` \ No newline at end of file From fc33885d6d39fed790e25d6d9a1e7ed27748ed13 Mon Sep 17 00:00:00 2001 From: Gitubrr Date: Mon, 4 May 2026 22:18:32 +0300 Subject: [PATCH 07/13] added config structure --- src/opencl/Compare.md | 34 +++++++++++++++++++++++++++++++++- 1 file changed, 33 insertions(+), 1 deletion(-) diff --git a/src/opencl/Compare.md b/src/opencl/Compare.md index 77ff795ee..7eaf8c6d3 100644 --- a/src/opencl/Compare.md +++ b/src/opencl/Compare.md @@ -168,4 +168,36 @@ `m_name` \ `m_suffix ` 8. Тип устройства (чтобы можно было использовать CPU) - `getDevices` \ No newline at end of file + `getDevices` + +# Структура конфига (JSON) + +```bash +config: + + "platform": + "selection": + "user_alias": string + "official_name": string + "vendor": "nvidia" | "amd" | "intel" | "img" | "" + "index": int + "priority": int + "fallback": (???) # Нужен ли fallback + + "device": { + "selection": + "user_alias": string + "official_name": string + "type": "gpu" | "cpu" | "accelerator" | "all" + "index": int + "priority": int + "naming": + "accelerator_name" # m_name + "cache_suffix" # m_suffix + "tuning": + "default_work_group_size": int # m_default_wgs + "wave_size": int # m_wave_size + "memory_banks": int # m_num_of_mem_banks + "memory_alignment": int # m_addr_align + "fallback": (???) # Нужен ли fallback +``` \ No newline at end of file From d6809498459635cc7f34f5a24fb0a62e01258776 Mon Sep 17 00:00:00 2001 From: Gitubrr Date: Mon, 4 May 2026 22:23:01 +0300 Subject: [PATCH 08/13] formatting only --- src/opencl/Compare.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/opencl/Compare.md b/src/opencl/Compare.md index 7eaf8c6d3..6145cccf4 100644 --- a/src/opencl/Compare.md +++ b/src/opencl/Compare.md @@ -188,7 +188,7 @@ config: "selection": "user_alias": string "official_name": string - "type": "gpu" | "cpu" | "accelerator" | "all" + "type": "gpu" | "cpu" "index": int "priority": int "naming": From de27aa71c3eee3f402d965257db681f20fb51b84 Mon Sep 17 00:00:00 2001 From: Gitubrr Date: Mon, 4 May 2026 22:36:23 +0300 Subject: [PATCH 09/13] added performance parameter --- src/opencl/Compare.md | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/src/opencl/Compare.md b/src/opencl/Compare.md index 6145cccf4..3d063e800 100644 --- a/src/opencl/Compare.md +++ b/src/opencl/Compare.md @@ -184,7 +184,7 @@ config: "priority": int "fallback": (???) # Нужен ли fallback - "device": { + "device": "selection": "user_alias": string "official_name": string @@ -200,4 +200,14 @@ config: "memory_banks": int # m_num_of_mem_banks "memory_alignment": int # m_addr_align "fallback": (???) # Нужен ли fallback + + "performance" + "memory" + "linear_allocator_size_mb": int # DEFAULT_SIZE + "allocator_strategy": string # "auto" | "linear" | "general" | "vendor" + "vendor_strategy": + "nvidia": string # "linear" | "general" + "amd": string # "linear" | "general" + "intel": string # "linear" | "general" + "img": strings # "linear" | "general" ``` \ No newline at end of file From e0c9b47137ba531a84748e1924946c31ce71cc6f Mon Sep 17 00:00:00 2001 From: Gitubrr Date: Mon, 4 May 2026 22:38:09 +0300 Subject: [PATCH 10/13] formatting only --- src/opencl/Compare.md | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/src/opencl/Compare.md b/src/opencl/Compare.md index 3d063e800..0763f1590 100644 --- a/src/opencl/Compare.md +++ b/src/opencl/Compare.md @@ -204,10 +204,10 @@ config: "performance" "memory" "linear_allocator_size_mb": int # DEFAULT_SIZE - "allocator_strategy": string # "auto" | "linear" | "general" | "vendor" + "allocator_strategy": "auto" | "linear" | "general" | "vendor" "vendor_strategy": - "nvidia": string # "linear" | "general" - "amd": string # "linear" | "general" - "intel": string # "linear" | "general" - "img": strings # "linear" | "general" + "nvidia": "linear" | "general" + "amd": "linear" | "general" + "intel": "linear" | "general" + "img": "linear" | "general" ``` \ No newline at end of file From 0b8ca4945d2a6e3b944b098e171bd02a368930fe Mon Sep 17 00:00:00 2001 From: Gitubrr Date: Tue, 5 May 2026 18:35:26 +0300 Subject: [PATCH 11/13] formatting --- src/opencl/Compare.md | 52 +++++++++++++++++++++---------------------- 1 file changed, 25 insertions(+), 27 deletions(-) diff --git a/src/opencl/Compare.md b/src/opencl/Compare.md index 0763f1590..d5ff3481e 100644 --- a/src/opencl/Compare.md +++ b/src/opencl/Compare.md @@ -183,31 +183,29 @@ config: "index": int "priority": int "fallback": (???) # Нужен ли fallback - - "device": - "selection": - "user_alias": string - "official_name": string - "type": "gpu" | "cpu" - "index": int - "priority": int - "naming": - "accelerator_name" # m_name - "cache_suffix" # m_suffix - "tuning": - "default_work_group_size": int # m_default_wgs - "wave_size": int # m_wave_size - "memory_banks": int # m_num_of_mem_banks - "memory_alignment": int # m_addr_align - "fallback": (???) # Нужен ли fallback - - "performance" - "memory" - "linear_allocator_size_mb": int # DEFAULT_SIZE - "allocator_strategy": "auto" | "linear" | "general" | "vendor" - "vendor_strategy": - "nvidia": "linear" | "general" - "amd": "linear" | "general" - "intel": "linear" | "general" - "img": "linear" | "general" + "device": + "selection": + "user_alias": string + "official_name": string + "type": "gpu" | "cpu" + "index": int + "priority": int + "naming": + "accelerator_name" # m_name + "cache_suffix" # m_suffix + "tuning": + "default_work_group_size": int # m_default_wgs + "wave_size": int # m_wave_size + "memory_banks": int # m_num_of_mem_banks + "memory_alignment": int # m_addr_align + "fallback": (???) # Нужен ли fallback + "performance" + "memory" + "linear_allocator_size_mb": int # DEFAULT_SIZE + "allocator_strategy": "auto" | "linear" | "general" | "vendor" + "vendor_strategy": + "nvidia": "linear" | "general" + "amd": "linear" | "general" + "intel": "linear" | "general" + "img": "linear" | "general" ``` \ No newline at end of file From b880e9eb83a28485a7efa538c78f950c518bf754 Mon Sep 17 00:00:00 2001 From: Gitubrr Date: Tue, 5 May 2026 22:04:53 +0300 Subject: [PATCH 12/13] =?UTF-8?q?added=202=20libs,=20removed=20'=D0=9F?= =?UTF-8?q?=D0=B0=D0=BA=D0=B5=D1=82=D0=BD=D1=8B=D0=B5=20=D0=BC=D0=B5=D0=BD?= =?UTF-8?q?=D0=B5=D0=B4=D0=B6=D0=B5=D1=80=D1=8B'?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/opencl/Compare.md | 69 +++++++++++++++---------------------------- 1 file changed, 24 insertions(+), 45 deletions(-) diff --git a/src/opencl/Compare.md b/src/opencl/Compare.md index d5ff3481e..f8bad3444 100644 --- a/src/opencl/Compare.md +++ b/src/opencl/Compare.md @@ -9,7 +9,6 @@ | **Источники** | CLI (argv) / env / файлы | +/-, форматы | | **Стандарт C++** | минимальная версия | C++хх | | **Поддерживает стандарт иерархии** | Linux/Windows/MacOS | +/- | -| **Пакетные менеджеры** | vcpkg / Conan / Conda / apt / brew / pacman | +/- | | **Способ распространения** | header-only / статическая / динамическая | — | | **ОС** | Linux / Windows / macOS | +/-, компиляторы | | **Активность** | среднее число коммитов | коммитов/мес (за последний мес) | @@ -17,6 +16,7 @@ | **Сообщество** | GitHub Stars | n | | **Проходит ли CI** | CI | +/- | +> ? - не указано в README. ## Сравнение парсеров командной строки (CLI) @@ -33,13 +33,6 @@ |  Linux | + | + | |  Windows | + | + | |  MacOS | + | + | -| **Пакетные менеджеры** | | | -|  vcpkg | + | + | -|  Conan | + | + | -|  Conda | + | ? | -|  apt | ? | ? | -|  brew | ? | + | -|  pacman | ? | ? | | Способ распространения | header-only | header-only | **ОС** | | | |  Linux | + (GCC 4.8+, Clang 3.5+) | + (GCC ≥ 4.9, Clang ≥ 3.1) | @@ -50,41 +43,34 @@ |  Issues всего | 506 | 307 | |  Issues closed/open | 9 | 6 | |  Stars | 4.3k | 4.7k | -| **Проходит ли CI** | + | + | + | +| Проходит ли CI | + | + | + | ## Парсеры файлов -| Критерий | nlohmann/json | yaml-cpp | toml++ | toml11 | -|:---|:---:|:---:|:---:|:---:| -| Зависимости | - | - | - | - -| **Источники** | | | -|  CLI (argv) | - | - | - | - -|  env | - | - | - | - -|  Файлы | JSON | YAML | TOML | TOML -| Стандарт C++ | ≥ C++11 | ≥ C++11 | ≥ C++17 | ≥ C++11 -| **Поддерживает стандарт иерархии** | | | -|  Linux | + | + | + | + | -|  Windows | + | + | + | + | -|  MacOS | + | + | + | + | -| **Пакетные менеджеры** | | | -|  vcpkg | + | + | + | + -|  Conan | + | + | + | ? -|  Conda | + | + | ? | ? -|  apt | + | + | ? | ? -|  brew | + | + | ? | ? -|  pacman | + | + | ? | ? | -| Способ распространения | header-only | статическая/динамическая¹ | header-only/статическая/динамическая¹ | header-only/статическая/динамическая¹ +| Критерий | nlohmann/json | yaml-cpp | toml++ | toml11 | config-cxx | taocpp/config +|:---|:---:|:---:|:---:|:---:|:---:|:---:| +| Зависимости | - | - | - | - | - | - | +| **Источники** | +|  CLI (argv) | - | - | - | - | - | - | +|  env | - | - | - | - | + | + | +|  Файлы | JSON | YAML | TOML | TOML | JSON, YAML, XML | JSON, JAXN | +| Стандарт C++ | ≥ C++11 | ≥ C++11 | ≥ C++17 | ≥ C++11 | ≥ C++20 | ≥ C++17 | +| **Поддерживает стандарт иерархии** | +|  Linux | + | + | + | + | + | + | +|  Windows | + | + | + | + | + | + | +|  MacOS | + | + | + | + | + | + | +| Способ распространения | header-only | статическая/динамическая¹ | header-only/статическая/динамическая¹ | header-only/статическая/динамическая¹ | header-only | header-only | | **ОС** | | | -|  Linux | + (GCC 4.8–14.2, Clang 3.4–21.0) | + (GCC, Clang) | + (Clang 8+, GCC 8+) | + (GCC, Clang) -|  Windows | + (MSVC 2015–2022) | + (MSVC) | + (MSVC VS2019+) | + (MSVC, MinGW) -|  macOS | + (AppleClang 9.1–16.0) | + (Xcode, AppleClang) | + (AppleClang) | + (AppleClang) +|  Linux | + (GCC 4.8–14.2, Clang 3.4–21.0) | + (GCC, Clang) | + (Clang 8+, GCC 8+) | + (GCC, Clang) | + (GCC 13+, Clang 16+) | + +|  Windows | + (MSVC 2015–2022) | + (MSVC) | + (MSVC VS2019+) | + (MSVC, MinGW) | + (MSVC 143+ (VS 2022)) | + +|  macOS | + (AppleClang 9.1–16.0) | + (Xcode, AppleClang) | + (AppleClang) | + (AppleClang) | + (AppleClang 16+) | + | **Сообщество** | | | -|  Активность (коммитов/мес) | 2 | 9 | 2 | 4 -|  Issues всего | 3271 | 905 | 193 | 194 -|  Issues closed/open | 68 | 3 | 8 | 5 -|  Stars | 49.4k | 15k | 2k | 1.3k -| **Проходит ли CI** | + | + | + | - | + | +|  Активность (коммитов/мес) | 2 | 9 | 2 | 4 | 2 | 13 | +|  Issues всего | 3271 | 905 | 193 | 194 | 24 | 5 | +|  Issues closed/open | 68 | 3 | 8 | 5 | 0 open | 0 open | +|  Stars | 49.4k | 15k | 2k | 1.3k | 31 | 194 | +| Проходит ли CI | + | + | + | - | + | ? | > ¹ Опционально. @@ -102,13 +88,6 @@ |  Linux | + | |  Windows | + | |  MacOS | + | -| **Пакетные менеджеры** | | | -|  vcpkg | + | -|  Conan | + | -|  Conda | + | -|  apt | + | -|  brew | + | -|  pacman | + | | Способ распространения | статическая/динамическая² | | **ОС** | | | |  Linux | + (GCC 5+, Clang 3.6+) | @@ -119,7 +98,7 @@ |  Issues всего | 400 | |  Issues closed/open | 1 | |  Stars | 9.4k | -| **Проходит ли CI** | + | + | +| Проходит ли CI | + | + | > ¹ Список зависимостей: > 1. Boost.Any From e0c730b9044224d95e85fb3ac15fb9306fd8721f Mon Sep 17 00:00:00 2001 From: Gitubrr Date: Mon, 11 May 2026 16:17:12 +0300 Subject: [PATCH 13/13] added SPLA usage scenarios --- src/opencl/Compare.md | 61 ++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 60 insertions(+), 1 deletion(-) diff --git a/src/opencl/Compare.md b/src/opencl/Compare.md index f8bad3444..2850c0048 100644 --- a/src/opencl/Compare.md +++ b/src/opencl/Compare.md @@ -120,6 +120,61 @@ ## Итог: По результатам сравнения, вероятно, лучшим вариантом будет использование `CLI11` и `nlohmann/json`, так как они, в отличие от `Boost.program_options`, не требуют зависимостей и являются header-only. +# Сценарии использования spla: +**Что важно всем:** возможность выбрать платформу и устройство + +1. Пользователь хочет решить свою задачу + - Неподготовленный пользователь + - важно: + - быстрая настройка через флаги + - что конфигурировать: + - уменьшить количество отладочной информации + - остальное - дефолтные параметры + - Опытный пользователь: + - важно: + - детальная ручная конфигурация параметров через конфигурационный файл + - ускорение вычислений с разреженными данными + - что конфигурировать: + - управление кэшем + - кастомные аллокаторы для разных форматов данных + - управление очередями команд + - Wave size override + - Work-group size + - оптимизация доступа к глобальной памяти + - управление логированием +2. Разработчик spla + - Отладчик, тестировик + - важно: + - верификация корректности работы на разных устройствах + - воспроизводимость ошибок + - что конфигурировать: + - возможность работать только на 1 гпу + - подробное логирование + - отключение кэша для принудительной перекомпиляции + - тестирование на неподдерживаемых вендорах без падения с ошибкой + - Бенчмаркер + - важно: + - минимизация шума при измерениях + - воспроизводимость результатов + - сравнение разных конфигураций + - что конфигурировать: + - профайлинг очередей `CL_QUEUE_PROFILING_ENABLE` + - сбор статистики и уменьшение шума `CLCounterPool` + - количество очередей для измерения параллелизма + - линейный аллокатор для предсказуемости памяти + - Wave size override + - Work-group size + - оптимизация доступа к глобальной памяти + - Расширяющий функциональность + - важно: + - возможность встроить код в существующую инфраструктуру + - чтобы новый код работал на всех устройтсвах + - что конфигурировать: + - включение кэша + - кастомные аллокаторы для разных форматов данных + - управление очередями + - Wave size override + - Work-group size # Что нужно конфигурировать 1. Выбор платформы @@ -187,4 +242,8 @@ config: "amd": "linear" | "general" "intel": "linear" | "general" "img": "linear" | "general" -``` \ No newline at end of file + "queues": + "count": int + +``` +