Всем привет.
Как многие заметили в предзаказе книга пришла странная. Она фактически отпечатана с раннего драфта и там есть уже ставшая знаменитой страница 22, оставшаяся от той книги, какой она должна была быть. Также проблемы есть со страницами 167, 169 и 173.
Издательство отзывает бракованный тираж и останавливает продажи. Всем кто уже купил по предзаказу будет некая компенсация, например в виде бесплатной электронной копии. Ну и кроме того, если смотреть на вещи позитивно, у вас остаётся уникальный авторский экземпляр с авторской пунктуацией. При этом по смыслу книга вполне полноценная. Там есть все смысловые блоки, только не закончена корректура.
Подробности будут позже.
Пока что я, чтобы облегчить чтение тем, кому такой предзаказ пришёл, выкладываю страницы из того же черновика с которого он был напечатан.
UPD: развитие истории в https://t.me/cpp_lects_rus/221
#official
Как многие заметили в предзаказе книга пришла странная. Она фактически отпечатана с раннего драфта и там есть уже ставшая знаменитой страница 22, оставшаяся от той книги, какой она должна была быть. Также проблемы есть со страницами 167, 169 и 173.
Издательство отзывает бракованный тираж и останавливает продажи. Всем кто уже купил по предзаказу будет некая компенсация, например в виде бесплатной электронной копии. Ну и кроме того, если смотреть на вещи позитивно, у вас остаётся уникальный авторский экземпляр с авторской пунктуацией. При этом по смыслу книга вполне полноценная. Там есть все смысловые блоки, только не закончена корректура.
Подробности будут позже.
Пока что я, чтобы облегчить чтение тем, кому такой предзаказ пришёл, выкладываю страницы из того же черновика с которого он был напечатан.
UPD: развитие истории в https://t.me/cpp_lects_rus/221
#official
👍119🔥20🙏10😭8😁7😱5🙈3👎2🤡2💅2👏1
Загадка недостающих страниц (конкурс с призом)
Участники процесса: редактор Алиса и наборщик Боб (имена не настоящие, взяты сами понимаете откуда).
На этапе предзаказа Алиса посылает Бобу некий драфт, который Боб адаптирует для листалки на сайте и сохраняет у себя.
Далее перед печатью в типографии Алиса посылает Бобу финальный печатный файл.
Но в ночь перед печатью, Алиса замечает на четырёх страницах, а именно на страницах 22, 167, 169 и 173 некую проблему, которая не очевидна на этих страницах, но после печати в типографии станет очевидной и неприятной. Поэтому она пишет Бобу просьбу заменить эти четыре страницы на те, которые она прислала.
Боб заменяет, но случайно делает это не в финальном файле, а в драфте и отправляет на печать драфт с заменёнными четырьмя страницами.
Чему нас учит эта история? Не надо коммитить без CI в ночь перед релизом.
В общем в истории с моей книгой все события -- как будто бы из нашей жизни.
А теперь конкурс. Он требует много телепатии. Я прикладываю четыре страницы, выбранные под замену. Тот, кто первым догадается что именно на них общего и что смутило Алису, бесплатно получит мою книгу из числа авторских экземпляров (когда их напечатают и выдадут мне) с моим автографом.
#questions
Участники процесса: редактор Алиса и наборщик Боб (имена не настоящие, взяты сами понимаете откуда).
На этапе предзаказа Алиса посылает Бобу некий драфт, который Боб адаптирует для листалки на сайте и сохраняет у себя.
Далее перед печатью в типографии Алиса посылает Бобу финальный печатный файл.
Но в ночь перед печатью, Алиса замечает на четырёх страницах, а именно на страницах 22, 167, 169 и 173 некую проблему, которая не очевидна на этих страницах, но после печати в типографии станет очевидной и неприятной. Поэтому она пишет Бобу просьбу заменить эти четыре страницы на те, которые она прислала.
Боб заменяет, но случайно делает это не в финальном файле, а в драфте и отправляет на печать драфт с заменёнными четырьмя страницами.
Чему нас учит эта история? Не надо коммитить без CI в ночь перед релизом.
В общем в истории с моей книгой все события -- как будто бы из нашей жизни.
А теперь конкурс. Он требует много телепатии. Я прикладываю четыре страницы, выбранные под замену. Тот, кто первым догадается что именно на них общего и что смутило Алису, бесплатно получит мою книгу из числа авторских экземпляров (когда их напечатают и выдадут мне) с моим автографом.
#questions
👍62😁32🔥8❤5💯5🌭3👎1
Вторая лекция это начало погружения в компиляторную теорию. Я сознательно сделал её короче, так как она довольно плотная, далее мы вернёмся к часовому формату.
Мы начинаем с построения HIR, далее ставим задачу продвижения констант, и, для того, чтобы решить эту задачу, вводим красивую математическую структуру так называемых решёток. После чего нас ждёт первый (но не последний) алгоритм в этом курсе.
https://youtu.be/0DQOmHfPErA
https://rutube.ru/video/8efdba83efac337400af15a8c81e7dbb/
Задания размещены списком в конце лекции, будет здорово если вы их сделаете и скинете скан вашего листочка с решениями сюда в комментарии.
#compilers
Мы начинаем с построения HIR, далее ставим задачу продвижения констант, и, для того, чтобы решить эту задачу, вводим красивую математическую структуру так называемых решёток. После чего нас ждёт первый (но не последний) алгоритм в этом курсе.
https://youtu.be/0DQOmHfPErA
https://rutube.ru/video/8efdba83efac337400af15a8c81e7dbb/
Задания размещены списком в конце лекции, будет здорово если вы их сделаете и скинете скан вашего листочка с решениями сюда в комментарии.
#compilers
YouTube
Оптимизирующие компиляторы (МФТИ, 2024). Лекция 2. Поток управления и первая оптимизация.
Лекции по компиляторам для свежих интернов базовой кафедры в МФТИ.
Второй семинар начинает математическую часть компиляторной теории. Мы начинаем с построения HIR, далее ставим задачу продвижения констант, и, для того, чтобы решить эту задачу, вводим красивую…
Второй семинар начинает математическую часть компиляторной теории. Мы начинаем с построения HIR, далее ставим задачу продвижения констант, и, для того, чтобы решить эту задачу, вводим красивую…
🔥97👍9❤4🏆2🤓1
Не так давно мои МФТИ-шные контесты по C для первого курса (которые больше недоступны через ejudge) были добавлены на Яндекс контест, о чём я писал вот тут: https://t.me/cpp_lects_rus/187
Сейчас случилось ещё более радостное событие: задачи были добавлены на stepik.
https://stepik.org/209865
Громадное спасибо Артёму Ершову https://t.me/iam28th за эту замечательную работу!
#c_graduate
Сейчас случилось ещё более радостное событие: задачи были добавлены на stepik.
https://stepik.org/209865
Громадное спасибо Артёму Ершову https://t.me/iam28th за эту замечательную работу!
#c_graduate
🔥193👍35❤7👌4❤🔥1🤓1👨💻1
На третьей лекции мы познакомимся с анализом потока данных и построим фреймворк для такого рода анализа. Мы рассмотрим три базовых аналитических алгоритма: достигающие определения, доступные выражения и активные переменные. В конце мы заметим удивительную общность этих задач и сделаем выводы. В процессе мы погрузимся в невычислимые задачи и историю компиляторной теории.
https://youtu.be/fLUnJGwEmYY
https://rutube.ru/video/6753137f2fe26ea94101956c5ac2f4e4/
Задания размещены списком в конце лекции, будет здорово если вы их сделаете и скинете скан вашего листочка с решениями сюда в комментарии.
#compilers
https://youtu.be/fLUnJGwEmYY
https://rutube.ru/video/6753137f2fe26ea94101956c5ac2f4e4/
Задания размещены списком в конце лекции, будет здорово если вы их сделаете и скинете скан вашего листочка с решениями сюда в комментарии.
#compilers
YouTube
Оптимизирующие компиляторы (МФТИ, 2024). Лекция 3. Уравнения анализа данных.
Лекции по компиляторам для свежих интернов базовой кафедры в МФТИ.
На третьей лекции мы познакомимся с анализом потока данных и построим фреймворк для такого рода анализа. Мы рассмотрим три базовых аналитических алгоритма: достигающие определения, доступные…
На третьей лекции мы познакомимся с анализом потока данных и построим фреймворк для такого рода анализа. Мы рассмотрим три базовых аналитических алгоритма: достигающие определения, доступные…
🔥65👍12❤11👏4🎉1🏆1🤓1
Всем привет. Очередная лекция по компиляторам завтра в 9 утра, а сегодня вечер пятницы и небольшой брейн-тизер по C++.
https://godbolt.org/z/qfsEvxh4E
Громадное спасибо за него Владиславу Белову https://t.me/you_are_RTshnik наткнувшемуся на эту красоту во время выполнения одного из моих заданий.
Задача довольно обычная — объяснить в чём разница с детальными ссылками на C++23. Призов не будет, кроме зрительских симпатий.
P. S. книгу обещают перепечатать к 15 ноября.
UPD: Уважаемый подписчик Артём Колпаков @ddvamp развил и усилил пример до https://godbolt.org/z/ab31ah199
#questions #cpp_postgraduate
template<typename T = void>
int foo(int x) { return 1; }
int foo(...) { return 2; }
template<typename T = void>
int bar() { return 1; }
int bar(...) { return 2; }
int main() {
std::cout << foo(2) << std::endl; // ?
std::cout << bar() << std::endl; // ???
}
https://godbolt.org/z/qfsEvxh4E
Громадное спасибо за него Владиславу Белову https://t.me/you_are_RTshnik наткнувшемуся на эту красоту во время выполнения одного из моих заданий.
Задача довольно обычная — объяснить в чём разница с детальными ссылками на C++23. Призов не будет, кроме зрительских симпатий.
P. S. книгу обещают перепечатать к 15 ноября.
UPD: Уважаемый подписчик Артём Колпаков @ddvamp развил и усилил пример до https://godbolt.org/z/ab31ah199
#questions #cpp_postgraduate
godbolt.org
Compiler Explorer - C++
// many thanks to Vlad Belov https://t.me/you_are_RTshnik
// for noticing this beauty
template<typename T = void>
int foo(int x) { return 1; }
int foo(...) { return 2; }
template<typename T = void>
int bar() { return 1; }
int bar(...) { return 2; }
…
// for noticing this beauty
template<typename T = void>
int foo(int x) { return 1; }
int foo(...) { return 2; }
template<typename T = void>
int bar() { return 1; }
int bar(...) { return 2; }
…
🔥50🤪10👍8🤔2🥴1🌚1🫡1💘1
Выложил четвёртую лекцию курса по компиляторам.
На этой лекции мы наконец-то построим SSA представление, на котором в современном мире выполняется большинство компиляторных оптимизаций. По дороге мы познакомимся с такими полезными концепциями как доминаторы, фронт доминирования и дерево доминаторов.
https://youtu.be/diSnBssZ1dQ
https://rutube.ru/video/00ea76b6e9c1406fdc7814ab16ce1c8d/
Задания размещены списком в конце лекции. На этот раз большинство этих заданий предполагает основательное программирование из области алгоритмов над графами. Вам будет предложено по произвольному входному графу построить его дерево доминаторов, DJ-граф и DF-граф. Скидывайте сюда в комментарии ссылки на ваши репозитории с решениями.
#compilers
На этой лекции мы наконец-то построим SSA представление, на котором в современном мире выполняется большинство компиляторных оптимизаций. По дороге мы познакомимся с такими полезными концепциями как доминаторы, фронт доминирования и дерево доминаторов.
https://youtu.be/diSnBssZ1dQ
https://rutube.ru/video/00ea76b6e9c1406fdc7814ab16ce1c8d/
Задания размещены списком в конце лекции. На этот раз большинство этих заданий предполагает основательное программирование из области алгоритмов над графами. Вам будет предложено по произвольному входному графу построить его дерево доминаторов, DJ-граф и DF-граф. Скидывайте сюда в комментарии ссылки на ваши репозитории с решениями.
#compilers
YouTube
Оптимизирующие компиляторы (МФТИ, 2024). Лекция 4. Построение SSA.
Лекции по компиляторам для свежих интернов базовой кафедры в МФТИ.
На этой лекции мы наконец-то построим SSA представление, на котором в современном мире выполняется большинство компиляторных оптимизаций. По дороге мы познакомимся с такими полезными концепциями…
На этой лекции мы наконец-то построим SSA представление, на котором в современном мире выполняется большинство компиляторных оптимизаций. По дороге мы познакомимся с такими полезными концепциями…
🔥64❤15👍9🙏3
Выложил пятую лекцию курса по компиляторам.
Настало время познакомиться с базовыми оптимизациями и ввести фреймворк для работы с SSA-представлением. Эта лекция посвящена двум основным идеям: продвижению информации вниз по графу потока управления (constant propagation, copy propagation, value range propagation) и удалению избыточности (global value numbering, partial redundancy elimination).
https://youtu.be/6yo4ofdLRfU
https://rutube.ru/video/62a76dc317939e381df018f6a61be6e0/
Я понимаю, что сложно. Держитесь, впереди самое интересное.
#compilers
Настало время познакомиться с базовыми оптимизациями и ввести фреймворк для работы с SSA-представлением. Эта лекция посвящена двум основным идеям: продвижению информации вниз по графу потока управления (constant propagation, copy propagation, value range propagation) и удалению избыточности (global value numbering, partial redundancy elimination).
https://youtu.be/6yo4ofdLRfU
https://rutube.ru/video/62a76dc317939e381df018f6a61be6e0/
Я понимаю, что сложно. Держитесь, впереди самое интересное.
#compilers
YouTube
Оптимизирующие компиляторы (МФТИ, 2024). Лекция 5. Базовые оптимизации.
Лекции по компиляторам для свежих интернов базовой кафедры в МФТИ.
Настало время познакомится с базовыми оптимизациями и ввести фреймворк для работы с SSA-представлением. Эта лекция посвящена двум базовым идеям: продвижению информации вниз по графу потока…
Настало время познакомится с базовыми оптимизациями и ввести фреймворк для работы с SSA-представлением. Эта лекция посвящена двум базовым идеям: продвижению информации вниз по графу потока…
🔥86👍14❤8🫡2🤝1
Выложил шестую лекцию курса по компиляторам.
Вы же всегда хотели узнать в чём разница между обратными и обращёнными дугами и чем цикл в компьютерной программе отличается от цикла в графе? А чем сводимый граф отличается от не сводимого? А как насчёт поиска базовых индуктивностей и скалярной эволюции? Конечно же вы всегда хотели. В этом видео вы получите всё перечисленное и немного больше. И даже немного про алгебру цепочек рекуррентностей.
https://youtu.be/V6hWKXvUQvo
https://rutube.ru/video/74991603431c25f8d08631b6a5c8e2bf/
Мне кажется лекции снова вынырнули на тот уровень, где они становятся интересны широкой аудитории. Вряд ли вы когда-либо думали о циклах в вашей программе именно таким образом.
#compilers
Вы же всегда хотели узнать в чём разница между обратными и обращёнными дугами и чем цикл в компьютерной программе отличается от цикла в графе? А чем сводимый граф отличается от не сводимого? А как насчёт поиска базовых индуктивностей и скалярной эволюции? Конечно же вы всегда хотели. В этом видео вы получите всё перечисленное и немного больше. И даже немного про алгебру цепочек рекуррентностей.
https://youtu.be/V6hWKXvUQvo
https://rutube.ru/video/74991603431c25f8d08631b6a5c8e2bf/
Мне кажется лекции снова вынырнули на тот уровень, где они становятся интересны широкой аудитории. Вряд ли вы когда-либо думали о циклах в вашей программе именно таким образом.
#compilers
YouTube
Оптимизирующие компиляторы (МФТИ, 2024). Лекция 6. Анализ циклов.
Лекции по компиляторам для свежих интернов базовой кафедры в МФТИ.
Вы же всегда хотели узнать в чём разница между обратными и обращёнными дугами и чем цикл в компьютерной программе отличается от цикла в графе? А чем сводимый граф отличается от не сводимого?…
Вы же всегда хотели узнать в чём разница между обратными и обращёнными дугами и чем цикл в компьютерной программе отличается от цикла в графе? А чем сводимый граф отличается от не сводимого?…
👍84❤26🔥16✍3😁2
Позвали недолго поговорить во время трансляции четвертьфинала ICPC. Основная тематика разговора: чего будет ждать индустрия от тех ребят, которые сейчас увлекаются спортивным программированием, когда они вырастут и постучат в её (индустрии) двери.
https://www.youtube.com/watch?v=dfl9IYa9gPU&t=10367s
Сам я к спортивному программированию отношусь настороженно. По сути это такие соревнования по экстремально плохому коду. В процессе трансляции там показывают экраны участников, местами это грустно. Впрочем, ребят можно понять. У них нечеловеческие условия -- 5 часов на 13 задач и каждая из этих задач довольно сложна.
Но я постарался говорить мягко и выделить в основном позитивные моменты, которых там тоже много.
P. S. выступил ещё на парочке мероприятий, жду пока организаторы нарежут видео, буду скидывать сюда по мере появления.
#conference #interview
https://www.youtube.com/watch?v=dfl9IYa9gPU&t=10367s
Сам я к спортивному программированию отношусь настороженно. По сути это такие соревнования по экстремально плохому коду. В процессе трансляции там показывают экраны участников, местами это грустно. Впрочем, ребят можно понять. У них нечеловеческие условия -- 5 часов на 13 задач и каждая из этих задач довольно сложна.
Но я постарался говорить мягко и выделить в основном позитивные моменты, которых там тоже много.
P. S. выступил ещё на парочке мероприятий, жду пока организаторы нарежут видео, буду скидывать сюда по мере появления.
#conference #interview
YouTube
Moscow Regional Contest 2024
ICPC Moscow Regional Contest – четвертьфинал Международного студенческого чемпионата по программированию ICPC (International Collegiate Programming Contest) сезона 2024/2025.
Организаторами Moscow Regional Contest выступают МГУ и МФТИ.
РАСПИСАНИЕ:
0:00:00…
Организаторами Moscow Regional Contest выступают МГУ и МФТИ.
РАСПИСАНИЕ:
0:00:00…
👍95❤25😁5👨💻3⚡2🔥2💯2🏆2🤓2
Выложил лекцию по цикловым оптимизациям
Здесь мы остановимся на основных оптимизациях циклов и попробуем их уложить в некую систему. Основными осями этой системы будут обработка индуктивностей и обработка инвариантов. Мы разберём LSR, раскрутку циклов, их пилинг и многое другое.
https://www.youtube.com/watch?v=OsiqdpCXBtY
https://rutube.ru/video/339ee2a715b0bceabf22cecd3db6f9fb/
В лекции есть небольшая деталь для гурманов.
#compilers
Здесь мы остановимся на основных оптимизациях циклов и попробуем их уложить в некую систему. Основными осями этой системы будут обработка индуктивностей и обработка инвариантов. Мы разберём LSR, раскрутку циклов, их пилинг и многое другое.
https://www.youtube.com/watch?v=OsiqdpCXBtY
https://rutube.ru/video/339ee2a715b0bceabf22cecd3db6f9fb/
В лекции есть небольшая деталь для гурманов.
#compilers
YouTube
Оптимизирующие компиляторы (МФТИ, 2024). Лекция 7. Оптимизации циклов.
Лекции по компиляторам для свежих интернов базовой кафедры в МФТИ.
Здесь мы остановимся на основных оптимизациях циклов и попробуем их уложить в некую систему. Основными осями этой системы будут обработка индуктивностей и обработка инвариантов. Мы разберём…
Здесь мы остановимся на основных оптимизациях циклов и попробуем их уложить в некую систему. Основными осями этой системы будут обработка индуктивностей и обработка инвариантов. Мы разберём…
❤39🔥26👍9🤓1🫡1💅1
Продолжаю выводить в свет своих учеников. На этот раз предлагаю всеобщему вниманию наше совместное выступление с Марком Гончаровым @EverRester на RISC-V meetup в Нижнем Новгороде.
https://www.youtube.com/watch?v=9hG9pFS-O7w
В первой части я рассказываю про RISC-V и масштабируемую векторизацию, а также про цикловые оптимизации в нашем компиляторе. Это довольно обычный контент. Во второй части становится интереснее: Марк рассказывает про библиотеку SLEEF и про векторизацию циклов с математическими функциями внутри.
Мне кажется Марк проявил себя как отличный докладчик. Обязательно напишите ему что-нибудь в комментарии к видео.
#conference #riscv
https://www.youtube.com/watch?v=9hG9pFS-O7w
В первой части я рассказываю про RISC-V и масштабируемую векторизацию, а также про цикловые оптимизации в нашем компиляторе. Это довольно обычный контент. Во второй части становится интереснее: Марк рассказывает про библиотеку SLEEF и про векторизацию циклов с математическими функциями внутри.
Мне кажется Марк проявил себя как отличный докладчик. Обязательно напишите ему что-нибудь в комментарии к видео.
#conference #riscv
YouTube
Ни на что не похожая векторизация и цикловые оптимизации в RISC-V
Доклад "Цикловые оптимизации и масштабируемая векторизация в RISC-V" от Константина Владимирова и Марка Гончарова из Syntacore, прозвучавший на 4-м митапе Альянса RISC-V при поддержке YADRO.
00:00 - О докладчиках, теме выступления и пара слов об архитектуре…
00:00 - О докладчиках, теме выступления и пара слов об архитектуре…
👍87🔥25❤12🥴4💯4🏆2⚡1💅1
Поздний пятничный вечер и пиво -- хороший фон для нашего с Полухиным и Гусаровым стендапа, записанного на C++ митапе Yadro.
https://youtu.be/LcnZKLmOUVo
Мне кажется, дискуссия была неплоха. Одна из лучших шуток это 43:55 -- моя подводка, а потом идеальная добивка от Антона. Мы не репетировали, честно.
Очередная лекция по компиляторам выйдет утром.
#conference
https://youtu.be/LcnZKLmOUVo
Мне кажется, дискуссия была неплоха. Одна из лучших шуток это 43:55 -- моя подводка, а потом идеальная добивка от Антона. Мы не репетировали, честно.
Очередная лекция по компиляторам выйдет утром.
#conference
YouTube
«Стандарт живёт 3 года…» (Константин Владимиров, Антон Полухин, Игорь Гусаров, Илья Казаков)
Дискуссия: «Стандарт живёт 3 года…»
Довольны ли мы реализацией текущих стандартов? Довольны ли тем, как быстро компиляторы внедряют фичи новых стандартов? Может, стоит обратить внимание на подходы других языков в release cycle? К примеру, на Rust editions?…
Довольны ли мы реализацией текущих стандартов? Довольны ли тем, как быстро компиляторы внедряют фичи новых стандартов? Может, стоит обратить внимание на подходы других языков в release cycle? К примеру, на Rust editions?…
🔥92👍9😁9❤2💅1
Выложил лекцию по межпроцедурным оптимизациям.
На этой лекции мы выходим на вершину курса -- в смысле высокоуровневости оптимизаций. Настало время посмотреть что компиляторы делают с целыми функциями. В первую очередь это инлайн и тесно с ним связанная девиртуализация. Кроме того мы рассмотрим работу с графом вызовов, клонирование функций и межпроцедурное распространение информации.
https://youtu.be/LzIvDMvZx6w
https://rutube.ru/video/26054b88c9ae1760cfd3244a369ae7ae
Летом на школе мы не успели это пройти и я пообещал что дойдём осенью. И вот буквально в этот четверг мы его записали, срочно обработали звук и я его выкладываю, всё ради непрерывности курса.
Как вы там услышите, наконец-то приехал из типографии второй тираж, на этот раз вполне нормальный. Скоро будет пост насчёт замены и всего такого. Пока что я заблокирован тем, что издательство не сформулировало позицию, видимо они думают как это сделать аккуратнее.
#compilers
На этой лекции мы выходим на вершину курса -- в смысле высокоуровневости оптимизаций. Настало время посмотреть что компиляторы делают с целыми функциями. В первую очередь это инлайн и тесно с ним связанная девиртуализация. Кроме того мы рассмотрим работу с графом вызовов, клонирование функций и межпроцедурное распространение информации.
https://youtu.be/LzIvDMvZx6w
https://rutube.ru/video/26054b88c9ae1760cfd3244a369ae7ae
Летом на школе мы не успели это пройти и я пообещал что дойдём осенью. И вот буквально в этот четверг мы его записали, срочно обработали звук и я его выкладываю, всё ради непрерывности курса.
Как вы там услышите, наконец-то приехал из типографии второй тираж, на этот раз вполне нормальный. Скоро будет пост насчёт замены и всего такого. Пока что я заблокирован тем, что издательство не сформулировало позицию, видимо они думают как это сделать аккуратнее.
#compilers
YouTube
Оптимизирующие компиляторы (МФТИ, 2024). Лекция 8. Оптимизации функций.
Лекции по компиляторам для свежих интернов базовой кафедры в МФТИ.
На этой лекции мы выходим на вершину курса -- в смысле высокоуровневости оптимизаций. Настало время посмотреть что компиляторы делают с целыми функциями. В первую очередь это инлайн и тесно…
На этой лекции мы выходим на вершину курса -- в смысле высокоуровневости оптимизаций. Настало время посмотреть что компиляторы делают с целыми функциями. В первую очередь это инлайн и тесно…
🔥58👍21❤8🦄3🫡1
Немного заслуженных поздравлений.
У меня в магистерском курсе есть задания повышенной сложности (каждый год разные). Они построены так: есть некий замороченный код, где один компилятор работает, а другой нет и надо понять и обосновать стандартом кто прав. Я в некоторые пятницы такие брейнтизеры иногда скидываю в этот канал.
И я к таким заданиям обычно добавляю: поскольку очевидно кто-то не прав, вы получите высшую оценку за экзамен автоматом, т.е. безо всякого экзамена, если вы сделаете коммит в clang или gcc (смотря кто не прав) и его примут.
Много лет этой опцией никому не удавалось воспользовался. Люди пытались, но пройти ревью и влиться не могли. Но в этом году у нас есть первый победитель.
https://github.com/llvm/llvm-project/pull/118003
Мой студент Владислав Белов @sick_hoof со второго раза влил фикс в кланг. Первый раз его влили, но там в расширенных тестах упал assert и его откатили. Тот assert оказался ошибочным и в этом патче был торжественно удалён.
Ниже некоторые тесты, которые Владислав написал на свой коммит.
Вот тут он ожидает ошибку:
А вот тут он ошибки не ожидает, это должно работать:
Я полагаю, достойные студенты растут. Боевые. Самому иногда страшно становится.
#cpp_postgraduate
У меня в магистерском курсе есть задания повышенной сложности (каждый год разные). Они построены так: есть некий замороченный код, где один компилятор работает, а другой нет и надо понять и обосновать стандартом кто прав. Я в некоторые пятницы такие брейнтизеры иногда скидываю в этот канал.
И я к таким заданиям обычно добавляю: поскольку очевидно кто-то не прав, вы получите высшую оценку за экзамен автоматом, т.е. безо всякого экзамена, если вы сделаете коммит в clang или gcc (смотря кто не прав) и его примут.
Много лет этой опцией никому не удавалось воспользовался. Люди пытались, но пройти ревью и влиться не могли. Но в этом году у нас есть первый победитель.
https://github.com/llvm/llvm-project/pull/118003
Мой студент Владислав Белов @sick_hoof со второго раза влил фикс в кланг. Первый раз его влили, но там в расширенных тестах упал assert и его откатили. Тот assert оказался ошибочным и в этом патче был торжественно удалён.
Ниже некоторые тесты, которые Владислав написал на свой коммит.
Вот тут он ожидает ошибку:
template<typename T> struct A {
typedef int M;
struct B {
typedef void M;
struct C;
struct D;
};
};
template<typename T> struct A<T>::B::D : A<T*> {
M m;
// expected-error@-1 {{field has incomplete type 'M' (aka 'void'}}
};
А вот тут он ошибки не ожидает, это должно работать:
template<typename T> struct G {
struct B {
typedef int M;
struct C {
typedef void M;
struct D;
};
};
};
template<typename T> struct G<T>::B::C::D : B {
M m;
};
Я полагаю, достойные студенты растут. Боевые. Самому иногда страшно становится.
#cpp_postgraduate
GitHub
Reapply "[clang] Fix name lookup for dependent bases" by vbe-sc · Pull Request #118003 · llvm/llvm-project
Unlike the previous version (#114978), this patch also removes an unnecessary assert that causes Clang to crash when compiling such tests. (clang/lib/AST/DeclCXX.cpp)
https://lab.llvm.org/buildbot/...
https://lab.llvm.org/buildbot/...
🔥341🎉106👏29👍25❤10⚡4😁3🏆3
Выложил девятую (предпоследнюю лекцию) в курсе.
На этой лекции мы познакомимся с проблемой выбора инструкций -- перехода от высокоуровневого к низкоуровневому промежуточному представлению. Мы узнаем не менее четырёх NP-сложных задач (и некоторые более сложные) а также два вида низкоуровневого представления и несколько смелых алгоритмов. Самое красивое что нас ждёт это конструкция Пробстинга и внезапная связь выбора инструкций с проблемой вычислимости булевых формул.
https://www.youtube.com/watch?v=Kbv21aYCoyM
https://rutube.ru/video/000c34fb9c7107f443b0caaa7a29275b
Смотреть стоит хотя бы ради упомянутой конструкции Пробстинга. Очень красивая штука. Ну и тем, кого постоянно волновало что это за новый Global ISel в LLVM и откуда он растёт, тоже ИМХО будет полезно.
#compilers
На этой лекции мы познакомимся с проблемой выбора инструкций -- перехода от высокоуровневого к низкоуровневому промежуточному представлению. Мы узнаем не менее четырёх NP-сложных задач (и некоторые более сложные) а также два вида низкоуровневого представления и несколько смелых алгоритмов. Самое красивое что нас ждёт это конструкция Пробстинга и внезапная связь выбора инструкций с проблемой вычислимости булевых формул.
https://www.youtube.com/watch?v=Kbv21aYCoyM
https://rutube.ru/video/000c34fb9c7107f443b0caaa7a29275b
Смотреть стоит хотя бы ради упомянутой конструкции Пробстинга. Очень красивая штука. Ну и тем, кого постоянно волновало что это за новый Global ISel в LLVM и откуда он растёт, тоже ИМХО будет полезно.
#compilers
YouTube
Оптимизирующие компиляторы (МФТИ, 2024). Лекция 9. Выбор инструкций.
Лекции по компиляторам для свежих интернов базовой кафедры в МФТИ.
На этой лекции мы познакомимся с проблемой выбора инструкций -- перехода от высокоуровневого к низкоуровнему промежуточному представлению. Мы узнаем не менее четырёх NP-сложных задач (и некоторые…
На этой лекции мы познакомимся с проблемой выбора инструкций -- перехода от высокоуровневого к низкоуровнему промежуточному представлению. Мы узнаем не менее четырёх NP-сложных задач (и некоторые…
🔥75👍16👾8❤5🍓1
В продолжение https://t.me/cpp_lects_rus/199
Новости книги.
Наконец-то чистовой тираж был отпечатан и разъехался по магазинам, ищите во всех книжных.
Читатели, купившие книгу первого (бракованного) тиража, могут:
1. Либо сделать бесплатную замену в любом магазине.
2. Либо оставить себе книгу из первого тиража и для выдачи бесплатной электронной версии прислать на адрес dostuplitres@gmail.com почту, к которой привязан аккаунт литрес, а также подтверждение покупки книги (чек/скрин + фото книги). В течение недели редакция соберёт письма, после запросит промокоды и, когда их сформируют, вышлет на указанные адреса
P. S. и завтра с утра последняя лекция курса будет на youtube.
#official
Новости книги.
Наконец-то чистовой тираж был отпечатан и разъехался по магазинам, ищите во всех книжных.
Читатели, купившие книгу первого (бракованного) тиража, могут:
1. Либо сделать бесплатную замену в любом магазине.
2. Либо оставить себе книгу из первого тиража и для выдачи бесплатной электронной версии прислать на адрес dostuplitres@gmail.com почту, к которой привязан аккаунт литрес, а также подтверждение покупки книги (чек/скрин + фото книги). В течение недели редакция соберёт письма, после запросит промокоды и, когда их сформируют, вышлет на указанные адреса
P. S. и завтра с утра последняя лекция курса будет на youtube.
#official
❤68🔥37🎉5⚡3👌2🫡1