| Commit message (Collapse) | Author | Age | Files | Lines |
| |
|
|
| |
5ebefdb42da5a6118db1c0f98f25231c63fef96e
|
| |
|
|
| |
e43ef305d767fb94adc0f4f6e3901156fc3b7939
|
| |
|
|
| |
bddf00bb1bd387adf17502c2af8be1e265c8f5a8
|
| |
|
|
|
| |
In order to get stable command regardless of platform we shall use linux way of representing commands everywhere. Happily this almost always works on Windows except direct file presence checks like in compile_cuda.py
1412fdabc2fcf1732cd2578e0c6ffe91b220aa2e
|
| |
|
|
| |
89c8f9767a1ef610f9ee050e1a5da5728bba02d7
|
| |
|
|
| |
4ef12dd52c1d38cd7a1018ec1bc40800644ea775
|
| |
|
|
| |
b7ff75f77e1a1818aac0062ec06948dad92af1bc
|
| |
|
|
| |
acd26311852d82fb81a5e57f7b5e5c67f9d89f64
|
| |
|
|
|
| |
Both `http:` and `https:` are recognized as `http` resource type
deda06fcadd25ab57d1b64d39c17349a33c1a55e
|
| |
|
|
| |
d394e1d4a37d8c9b93bc4c1feab8362a3488f41e
|
| |
|
|
| |
d587f95edf5636edfae6672d36f57c8a15f5f3e0
|
| |
|
|
|
| |
Fix patching cpp proto
af01597c047856b865c6a4e9933cfeacb0a2f39b
|
| |
|
|
| |
d9beae52f9300e65eddec8c2b865f132ea6b5833
|
| |
|
|
| |
81235399e4c6e917bcabe929f3897deeb2232bbc
|
| |
|
|
| |
da1125f4b9b5aebe87b610dd1e1a61864ba500cf
|
| |
|
|
| |
cf4738908ddc23b6c6a3e669f225bd15999a1404
|
| |
|
|
|
| |
Add encoding utf-8 for reading/writing files
12a3ca5bf28ac486a2897fd6cdf155b0bf049483
|
| |
|
|
|
| |
Remove final in cpp pb.h/cc by outputs list
1307ef1d33bab92f478e7a4d213c08bf6691ebd5
|
| |
|
|
|
|
| |
native build
0bd1ab2bb753fb9458cc5f295e94e24cf1115055
|
| |
|
|
| |
ab1a950f25a9a5f4a9ca38655f443ff23cece827
|
| |
|
|
| |
ab842fb2190e76244be2cf4d1b0e266ef141a5a1
|
| |
|
|
|
|
| |
Привет! В рамках [задачи по наведению порядка в Аркадии](https://clubs.at.yandex-team.ru/arcadia/30094) заменяем OWNER на SUBSCRIBER в ya.make, чтобы в будущем переключить ревью на a.yaml.
Этот пуллреквест приносит чисто технические изменения, правила и уведомления про ревью не меняются.
66643ef2ea3057cb2bdcd789ca7302eceeb936b1
|
| | |
|
| |
|
|
| |
2967d19c907adf59101a1f47b4208bd0b04a6186
|
| |
|
|
|
|
|
|
| |
Это откат коммита https://a.yandex-team.ru/arcadia/commit/rXXXXXX
И соответственно возврат коммитов https://a.yandex-team.ru/arcadia/commit/rXXXXXX и https://a.yandex-team.ru/arcadia/commit/rXXXXXX
Починка причины отката влилась здесь: https://a.yandex-team.ru/arcadia/commit/rXXXXXX
ae529e54d3ef7992b0e9f152373bc300061c1293
|
| |
|
|
| |
0b45139af384e67f15bbca80dd0f2d2685327c7f
|
| |
|
|
| |
480434cd022569bd885a5446b39f15db14f8a6fe
|
| |
|
|
|
|
| |
(https://docs.python.org/3.9/whatsnew/3.9.html#type-hinting-generics-in-standard-collections)..
a7fa2700711581dad0944aa9a7441af03275ec23
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
| |
Эта история про второй питон подразнесла нам графогенерацию . Нам придется этот коммит откатить.
Суть проблемы в том, что генерация для 2го и 3го раньше была одной и той же командой. Ты сделал так, что команда стала разной, но аутпут этих двух команд одинаковый. Имя результата команды является ключом и сейчас берётся какая-то рандомная команда из двух. При этом команда влияет на UID и все UIDы питонячей протогенерации мигают. От фатальных проблем нас спасает только то, что protobuf-ы на самом деле одинаковые. И даже это не факт - сейчас ты патчишь какие-то рандомные либы включая таковые для 3го питона.
Мы тут конечно редиски - мы в целом контролируем клэши аутпутов, но не в мультимодулях - там часто бывает что одна и та же команда оказывается в нескольких вариантах мультимодуля (потому что оно по дефолту сейчас так себя ведёт). Мы хотим это зачинить (сделать отдельный подмодуль под кодген и отселить всякие RUN_PROGRAM туда) - но это много работы и мы не успели.
План такой:
1. мы откатываем твой фикс
2. отдельно стабилизируем раздельные команды генерации для 2го и 3го питона
3. накатываем обратно отревеченные тут правки.
916a5456c4e901ab2cda0841b4167e16397e83c4
|
| |
|
|
|
| |
Add vanilla_protobuf attribute and logic in cmake generator
0801b280e74126103f91b5cccf0fb16bdfddc492
|
| | |
|
| |
|
|
| |
dd9870e7f209af88b971acb4ccbefd00ba3b2d4c
|
| |
|
|
| |
30830fa535b50fdecf6e211f6b7e27d9f5b41c96
|
| |
|
|
| |
9c50861068e92bb2909a62e69ca0b4f3b545a084
|
| |
|
|
| |
1e0249ff477caac2635b5972a66ff9ebeda76314
|
| |
|
|
|
|
|
| |
Добавил функцию, чтобы все библиотеки из CUDA пакетов, которые статически линкуются, гарантировано имели символы в секции `.array_init`, а не в `.ctors`, как происходит сейчас.
В противном случае некоторые библиотеки не работают в случае статической линковки (например, `nvrtc`).
1362e42f94015ba083431caa04d7ae436fd6bf99
|
| |
|
|
| |
b602177461457152031e77d2e8dcb91894576c10
|
| |
|
|
| |
c9a1d423397a49cb5e1c15a278be8e22e8ffc18d
|
| |
|
|
|
| |
Sbom is turned off by default in this PR and is going to be enabled by separate commit
9e873d00cc976a9ad58bd47615de2c1911bb77a5
|
| |
|
|
|
| |
Фикс для https://a.yandex-team.ru/review/5393734/details#comment--6406734
dec6fcab69f58174dec7b4bf87942e894196f77e
|
| |
|
|
| |
faeb2c69960c197db9fc9c5d0696d6dc0ce3d74a
|
| |
|
|
| |
f4e34ac010d78d384ad18819db18ffa2e20967b9
|
| |
|
|
| |
42477b361df98bfa4ad9fa98d79ee8c6e27a78ef
|
| |
|
|
| |
worked correctly either way but the old version produces a warning on python 3.12
|
| | |
|
| | |
|
| | |
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
~~большой~~ PR по переключению дефолтной версии CUDA с cuDNN в Аркадии
Обновляем CUDA: 10.1 -> 11.4
Обновляем cuDNN: 7.6.5 -> 8.0.5
Помимо простого обновления версий, данный PR содержит следующее:
* От перехода на CUDA 11.4 честно сломался только [один проект](https://a.yandex-team.ru/arcadia/cv/imgclassifiers/danet/backend/gpu_cuda?rev=rXXXXXX), поэтому просто там правим
* Где-то поменялись тесты на объём потребляемой памяти, поэтому их просто переканонизируем
* По поводу удаления таргетов из clang_prev_targets:
- `ld.lld` из поставки clang14 не справляется с линковкой - не может найти символы в попруненных либах, хотя они там есть
- но можно просто переключиться на автосборку, потому что те проблемы [совместимости cuDNN и clang](https://st.yandex-team.ru/#655b977f30316b33e3a5ec87), для которых gpu-шные таргеты добавляли в clang_prev_targets, в автосборке уже не существуют
* По поводу удаления таргетов из cuda11_targets - теперь cuda11_targets отличается от автосборки версией TensorRT (5 в автосборке vs 7 в cuda11) и режимом сборки (relwithdebinfo в автосборке vs release в cuda11), но есть два момента
- те, таргеты, которые я удаляю, не зависят от TensorRT, поэтому их не имеет смысла их тестить и в автосборке, и в cuda11 (про таргет `ads/quality/sis/tests/cuda11_arch80` мне сейчас ничего не известно; если что - выпилим его отдельным таргетом)
- на самом деле дублирование даже вредно - в `dict/mt/daemon/tests/gpu` есть тест на потребление памяти gpu, который имеет разные результаты в зависимости от release vs relwithdebinfo, поэтому для этого таргета мы в принципе не можем собираться одновременно и в автосборке, и в cuda11
По поводу дефолтной автосборки в принципе пришлось сделать четыре приседания:
* пишем кастомный скрипт для линкера:
- идея скрипта: переставляем большую секцию с gpu-шным кодом (`.nv_fatbin`) после `.bss` (самая дальняя секция, куда можно ожидать ссылки из кода бинаря), чтобы было меньше шансов нарваться на проблемы с relocation overflow в (`.bss`)
- замечание: в самом скрипте используем в нём только `INSERT AFTER`, чтобы [ld.ldd и дальше применял свои дефолтные правила для остальной программы](https://releases.llvm.org/16.0.0/tools/lld/docs/ELF/linker_script.html#sections-command)
- сделал замеры перфа генезисного инференса через `ml/zeliboba/libs/ynmt_lm/translate/bin` на том сценарии, который оказался под рукой - не заметил каких-то изменений
* добавляем nvcc-флаг `-Xfatbin=-compress-all`, чтобы наш fatbin сжимался и занимал меньше пространства в бинаре (далее он будет разжиматься на старте программы, так что оверхеда быть не должно)
- сделал замеры перфа генезисного инференса через `ml/zeliboba/libs/ynmt_lm/translate/bin` на том сценарии, который оказался под рукой - не заметил каких-то изменений
* добавляем флаг линкера `--no-relax`, так как опция "relaxation of relocatable symbols" (когда мы load в регистр + jump по адресу в регистре заменяем на относительный jump) уменьшает допустимый диапазон оффсетов, которые мы можем кодировать, что также приводит к relocation overflow
- больше информации можно найти в https://maskray.me/blog/2023-05-14-relocation-overflow-and-code-models
- сделал замеры перфа генезисного инференса через `ml/zeliboba/libs/ynmt_lm/translate/bin` на том сценарии, который оказался под рукой - не заметил каких-то изменений
* ещё чуть более гранулярно выпиливаем лобзиком архитектуры из либ в поставках CUDA / cuDNN - в категории "ассемблерный код" (`compute_XX`) оставляем только для последней версии поддерживаемой архитектуры (то есть `compute_86`), так как на новых GPU-шках мы будем JIT-компилироваться из него, а на старых GPU-шках мы возьмём готовый машинный код для них
Эти идеи были в основном взяты из следующих источников:
- https://maskray.me/blog/2021-07-04-sections-and-overwrite-sections#insert-before-and-insert-after и https://discourse.llvm.org/t/lld-relocation-overflows-and-nv-fatbin/58889 (про перемещение `.nv_fatbin`)
- https://docs.nvidia.com/cuda/cuda-binary-utilities/index.html#nvprune (про `nvprune`)
- https://maskray.me/blog/2023-05-14-relocation-overflow-and-code-models#relocation-overflow (`-Wl,--no-relax`)
- https://discourse.llvm.org/t/lld-relocation-overflows-and-nv-fatbin/58889/6 + https://github.com/pytorch/pytorch/pull/43074/files#diff-1e7de1ae2d059d21e1dd75d5812d5a34b0222cef273b7c3a2af62eb747f9d20aR360 (про `-Xfatbin=-compress-all`)
Дополнительные комментарии:
- можно дополнительно не выпиливать ненужные архитектуры, но этот флаг дополнительно уменьшает размеры бинарей (например, таргет `ml/zeliboba/libs/ynmt_lm/translate/bin`уменьшается на 120 MiB, что составляет примерно 5% от размера бинаря)
- кастомный скрипт для линкера позволяет не развлекаться с ещё более гранулярным выпиливанием архитектур (например, для таргетов `TENSORFLOW_WITH_CUDA`)
Оставшийся технический долг, который будет делать в других PRах
* донести функциональность из `link_exe.py` в `link_dyn_lib.py`
* перейти на TensorRT 7
* выпилить cuda11_targets
* выпилить флаг `TENSORFLOW_WITH_CUDA` в пользу `CUDA_REQUIRED` и удалить tensorflow_with_cuda_targets (??)
* поднять версию стандарта c++ для гпушного кода с 14 до 17
|
| |
|
|
|
|
| |
Чиним две проблемы, обнаруженные опытным путём:
* во-первых, cudart не содержит никакого девайсного кода, поэтому её не имеет смысла прунить
* во-вторых, нам для линковки могут передать несуществующие директории, поэтому делаем код проверок чуть более многословным
|
| | |
|