Conversation
| "priority": int | ||
| "fallback": (???) # Нужен ли fallback | ||
|
|
||
| "device": |
There was a problem hiding this comment.
А почму устройство никак не свзянос оптимизациями? Предположим, я хочу сранвить, как разные параметры влияют на производительность.
gsvgit
left a comment
There was a problem hiding this comment.
Не вполне опнятне сценарий использования конфига. Кажется, один из возможных такой. В файле (или в нескольких) описываются списки со сконфигурированными устройствами. При зввпуске пользовательского приложения ему передаётся конфиг и (опционально) идентификатор конфигурации, на которой запутиться. Если конфигурация не указана, выбирается дефолтная (решить, как её выбирать).
|
|
||
|
|
||
| ## Итог: | ||
| По результатам сравнения, вероятно, лучшим вариантом будет использование `CLI11` и `nlohmann/json`, так как они, в отличие от `Boost.program_options`, не требуют зависимостей и являются header-only. |
There was a problem hiding this comment.
Меньше issues и как будто активность поменьше. Я помню, Вы говорнили, что это дискуссионная характеристика. Всетаки config-cxx взять?
| config: | ||
|
|
||
| "platform": | ||
| "selection": |
There was a problem hiding this comment.
Не понимаю по названию, что это за блок и почему он так назван.
There was a problem hiding this comment.
способ выбора платформы: можно по названию пользователя, по официальному имени и по вендору. Мне кажется, это естественные поля
| "priority": int | ||
| "fallback": (???) # Нужен ли fallback | ||
| "device": | ||
| "selection": |
| "official_name": string | ||
| "type": "gpu" | "cpu" | ||
| "index": int | ||
| "priority": int |
There was a problem hiding this comment.
Кажется, про очериди ничего нету.
There was a problem hiding this comment.
Я вот про эти очереди: Количество очередей: сейчас создается только 1 очередь При чём тут priority?
There was a problem hiding this comment.
тогда я не очень понимаю, что в контексте спла значит очередь и какие у нее параметры
| allocator_size = 1048576 | ||
| ``` | ||
|
|
||
| Формата ini. |
There was a problem hiding this comment.
Откуда тут ini. Ещё и на линуксах. Ещё и в 26 году...
There was a problem hiding this comment.
Сейчас здесь примеры того, как могут выглядеть конфигурационные файлы в разных форматах. Исходный формат зависит от того, какую библиотеку для парсинга файлов выберем
Кроме этого все впорядке?
Можно уже начать писать сам механизм?
Если комментарии выше больше не актуальны, пометьте, пожалуйста, их как resolved
gsvgit
left a comment
There was a problem hiding this comment.
У Вас в документе отсутствует описание важных сценариев, которые мы обсуждали. Соответстсвенно, отсутстует описени того, как эти сценарии реализовать пользователю. Ну и сильное подозрение, что в коде это, по понятным причинам, тоже не подержано.
| Файл конфигурации, предоставляющийся библиотекой, имеет следующую структуру: | ||
| ```json | ||
| { | ||
| "current_config": "default", |
There was a problem hiding this comment.
Strange name. Current will be selected by user at the start.
There was a problem hiding this comment.
Почему странное? Пользователь может и не выбирать конфигурацию, но чтобы программа не падала этот параметр имеет дефолтное значение. Если пользователь выберет конфигурацию явно, то оно переопределится значением пользователя
Если пользователь не выбрал конфигурацию, то "текущая конфигурация" - дефолтная, если выбрал, "текущая конфигурация" - выбранная пользоватеоем. На мой взгляд название отражает смысл
| }, | ||
|
|
||
| "debug_gpu0": { | ||
| "extends": ["debug", "gpu0"] |
There was a problem hiding this comment.
Can extends be used not for list of configurations, but to redefine fields for particular configuration? As a way to say "I want to set profiling = true for gpu0 config".
There was a problem hiding this comment.
Да.
Можно сделать так:
"current_config": "gpu_profiling_true",
"gpu0": {
"backend": "by_index",
"platform_index": 0,
"device_index": 0,
"if_gpu_unavailable": "abort",
"queues_count": 1,
"profiling": false
"allocator_type": "general",
"verbosity": 3
},
"gpu_profiling_true": {
"extends": ["gpu0"],
"profiling": true
}
В этом случае параметры конфигурации "gpu0" переопределятся параметрами конфигурации "gpu_profiling_true" ( "profiling": false станет true)
|
|
||
| "configs": { | ||
| "default": { | ||
| "backend": "gpu", // переопределен |
There was a problem hiding this comment.
Why? I see only one configuration in the file.
There was a problem hiding this comment.
Конфигурация "gpu0" включает конфигурацию "default", как базовую. Ее параметры будут переопределены параметрами конфигурации "gpu0". Поэтому "backend": "gpu" переопределяется "backend": "by_index". В extends можно записывать конфигурации, которые находятся в конфигурационных файлах с меньшим приоритетом. (в системном файле пользователь может указать конфигурацию из дефолтного файла, в юзер файле - конфигурацию из системного)
Например:
1 Файл, который идет с библиотекой имеет конфигурацию "default"
2 Файл, созданный пользователем имеет конфигурацию "gpu0"
В поле extends конфигурации "gpu0" пользователь может добавить конфигурацию "default", несмотря на то, что она в дефолтном файле бибилиотеки, а не в файле, который создал пользователь
Это сделано для того, чтобы не нудно было дублировать параметры
DONE: Comparing C++ libraries to create a library configuration mechanism
ADDED: A manual for the configuration mechanism. The manuals for git and the GCC compiler served as examples.
At the last meeting, we concluded that the default behavior should be to fail and request an explicit user configuration.
TODO: Create a configuration mechanism