<feed xmlns='http://www.w3.org/2005/Atom'>
<title>ydb/build/scripts, branch 24.1.1</title>
<subtitle>Mirror of YDB github repos</subtitle>
<id>https://code.mastervirt.ru/ydb/atom?h=24.1.1</id>
<link rel='self' href='https://code.mastervirt.ru/ydb/atom?h=24.1.1'/>
<link rel='alternate' type='text/html' href='https://code.mastervirt.ru/ydb/'/>
<updated>2024-01-31T11:24:04Z</updated>
<entry>
<title>Fix bugs in CUDA libs pruning</title>
<updated>2024-01-31T11:24:04Z</updated>
<author>
<name>kickbutt</name>
<email>kickbutt@yandex-team.com</email>
</author>
<published>2024-01-29T08:27:41Z</published>
<link rel='alternate' type='text/html' href='https://code.mastervirt.ru/ydb/commit/?id=e930e1b57b89a44338092ca427e2a56d3e978b48'/>
<id>urn:sha1:e930e1b57b89a44338092ca427e2a56d3e978b48</id>
<content type='text'>
Чиним две проблемы, обнаруженные опытным путём:
* во-первых, cudart не содержит никакого девайсного кода, поэтому её не имеет смысла прунить
* во-вторых, нам для линковки могут передать несуществующие директории, поэтому делаем код проверок чуть более многословным
</content>
</entry>
<entry>
<title>Fix separator in CUDA_ARCHITECTURES</title>
<updated>2024-01-24T12:02:13Z</updated>
<author>
<name>kickbutt</name>
<email>kickbutt@yandex-team.com</email>
</author>
<published>2024-01-23T20:36:43Z</published>
<link rel='alternate' type='text/html' href='https://code.mastervirt.ru/ydb/commit/?id=299dc21a6f70a16b00e1d564fa56961331552415'/>
<id>urn:sha1:299dc21a6f70a16b00e1d564fa56961331552415</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Use `CUDA_ARCHITECTURES` flag to prune architectures</title>
<updated>2024-01-24T12:02:01Z</updated>
<author>
<name>kickbutt</name>
<email>kickbutt@yandex-team.com</email>
</author>
<published>2024-01-22T16:27:20Z</published>
<link rel='alternate' type='text/html' href='https://code.mastervirt.ru/ydb/commit/?id=9eb56282e0a7f138a5cb9b9b1ebe7ee4ecf7b0fb'/>
<id>urn:sha1:9eb56282e0a7f138a5cb9b9b1ebe7ee4ecf7b0fb</id>
<content type='text'>
* Добавляю переменную `CUDA_ARCHITECTURES`, в которых указываю, для каких архитектур оставлять device-код в гпушных либах CUDA / cuDNN
* Выставляю для неё разумные дефолты для тех архитектур, которые потенциально страдают от избыточного размера кода (сейчас это 11.4, потом можно будет расширить для других архитектур)
* Пробрасываю эту переменную и путь до бинарника `nvprune` в скрипт линковки
* Ищу и пруню гпушные либы

Как проверить, что работает:
* например, успешно собирается `ya make --build=release -DTENSORFLOW_WITH_CUDA -DCUDA_VERSION=11.4 -DCUDNN_VERSION=8.0.5 -DCUDA_ARCHITECTURES=sm_70 yweb/webdaemons/ocrdaemon` (с дефолтным `-DCUDA_ARCHITECTURES` падает по relocation overflow)
* елси хочется посмотреть на изменение размеров, то можно собрать `ya make ml/zeliboba/libs/ynmt_lm/score/bin/ --build=relwithdebinfo -DCUDA_VERSION=11.4 -DCUDNN_VERSION=8.0.5` один раз с дефолтным значением, другой раз с `-DCUDA_ARCHITECTURES=sm_70,sm_80,compute_80` - размер бинаря уменьшится

Особенности:
* ~~Сейчас дефолт для каждой новой версии куды содержит в себе тупо все поддерживаемые архитектуры. Имеет смысл его порезать до чего-то более разумного~~ - порезал
* Обход аргументов в обратном порядке сделан для того, чтобы эмулировать поведение линкера (для линкера важен порядок пробрасывания между либами для линковки и директориями, в которых их нужно искать)
* ~~Сейчас артефакты прунинга кладутся рядом с оригинальными либами; возможно, стоит их складывать в отдельное место в build-директории, но я пока не разобрался как это делать; буду рад, если кто-то подскажет~~ уже неактуально - кладу в build_root
* nvprune имеет свойство мусорить варнингом в stderr, когда прунит `libcudart_static.a` (это норма - там нет кода, который можно было бы попрунить); как вариант можно закостылить и не прунить `libcudart_static.a`, но я открыт к предложениям
</content>
</entry>
<entry>
<title>Library import 8 (#1074)</title>
<updated>2024-01-18T10:28:56Z</updated>
<author>
<name>AlexSm</name>
<email>alex@ydb.tech</email>
</author>
<published>2024-01-18T10:28:56Z</published>
<link rel='alternate' type='text/html' href='https://code.mastervirt.ru/ydb/commit/?id=9d0a3761b3201e0d9db879a7adf91876ebdb0564'/>
<id>urn:sha1:9d0a3761b3201e0d9db879a7adf91876ebdb0564</id>
<content type='text'>
* Library import 8

* Add contrib/libs/cxxsupp/libcxx/include/__verbose_abort</content>
</entry>
<entry>
<title>Library import 7 (#937)</title>
<updated>2024-01-11T13:49:03Z</updated>
<author>
<name>AlexSm</name>
<email>alex@ydb.tech</email>
</author>
<published>2024-01-11T13:49:03Z</published>
<link rel='alternate' type='text/html' href='https://code.mastervirt.ru/ydb/commit/?id=2e180154bd6a38b90a128ba0463d0dd2706a5ccf'/>
<id>urn:sha1:2e180154bd6a38b90a128ba0463d0dd2706a5ccf</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Library import 5, delete go dependencies (#832)</title>
<updated>2024-01-04T14:09:05Z</updated>
<author>
<name>AlexSm</name>
<email>alex@ydb.tech</email>
</author>
<published>2024-01-04T14:09:05Z</published>
<link rel='alternate' type='text/html' href='https://code.mastervirt.ru/ydb/commit/?id=dab291146f6cd7d35684e3a1150e5bb1c412982c'/>
<id>urn:sha1:dab291146f6cd7d35684e3a1150e5bb1c412982c</id>
<content type='text'>
* Library import 5, delete go dependencies

* Fix yt client</content>
</entry>
<entry>
<title>Import libs 1 (#590)</title>
<updated>2023-12-21T14:05:38Z</updated>
<author>
<name>AlexSm</name>
<email>alex@ydb.tech</email>
</author>
<published>2023-12-21T14:05:38Z</published>
<link rel='alternate' type='text/html' href='https://code.mastervirt.ru/ydb/commit/?id=e98bcbc74422492351c51646dba3849a138a8ffc'/>
<id>urn:sha1:e98bcbc74422492351c51646dba3849a138a8ffc</id>
<content type='text'>
* Import libs 1

* Add new file without extension

* Add file missed in export config</content>
</entry>
<entry>
<title></title>
<updated>2023-12-15T18:31:04Z</updated>
<author>
<name>pg</name>
<email>pg@yandex-team.com</email>
</author>
<published>2023-12-15T14:40:21Z</published>
<link rel='alternate' type='text/html' href='https://code.mastervirt.ru/ydb/commit/?id=d10591e58abc60d4b0f66d6a830149a15a7cf6ea'/>
<id>urn:sha1:d10591e58abc60d4b0f66d6a830149a15a7cf6ea</id>
<content type='text'>
</content>
</entry>
<entry>
<title>External build system generator release 65</title>
<updated>2023-12-05T09:25:06Z</updated>
<author>
<name>robot-ya-builder</name>
<email>robot-ya-builder@yandex-team.com</email>
</author>
<published>2023-12-05T08:10:55Z</published>
<link rel='alternate' type='text/html' href='https://code.mastervirt.ru/ydb/commit/?id=96458ea3c773a8a3edb707f73db0cdedbfcfad90'/>
<id>urn:sha1:96458ea3c773a8a3edb707f73db0cdedbfcfad90</id>
<content type='text'>
Update tools: yexport, os-yexport
</content>
</entry>
<entry>
<title>Revert commit rXXXXXX, External build system generator release 64</title>
<updated>2023-12-01T17:20:19Z</updated>
<author>
<name>snermolaev</name>
<email>snermolaev@yandex-team.com</email>
</author>
<published>2023-12-01T14:00:42Z</published>
<link rel='alternate' type='text/html' href='https://code.mastervirt.ru/ydb/commit/?id=9d6ed73b3b3df2a751aaf1379f2e24742799d29c'/>
<id>urn:sha1:9d6ed73b3b3df2a751aaf1379f2e24742799d29c</id>
<content type='text'>
</content>
</entry>
</feed>
