Size: a a a

Compiler Development

2020 December 13

АП

Антон Пилипчук... in Compiler Development
d t
Мощно, подозреваю рекурсии в нем не было.
В РНР рекурсия была давно.
источник

АП

Антон Пилипчук... in Compiler Development
в четвёртой версии так точно
источник
2020 December 14

KR

K R in Compiler Development
Alexander Zaitsev
Если кому-то интересны крестовые модули, то вот норм стартовые точки:
https://www.youtube.com/watch?v=iQb6EOk1RM0
https://www.youtube.com/watch?v=iE6TpS8UG_w
Ну не до такой же степени, чтобы видео смотреть.
источник

E

EgorBo in Compiler Development
https://news.ycombinator.com/item?id=24471440 интересный тред, человек отреверсинженерил и нашел что у эпол в их продакшн чипах уже давно есть матричные инструкции которые только недавно считай релизнули со спекой на arm v8.4
источник

ЗП

Зигохистоморфный Пре... in Compiler Development
источник

PS

Pavel Samolysov in Compiler Development
Про модули. Я на эти тесты вышел вот с этой статьи https://vector-of-bool.github.io/2019/01/27/modules-doa.html там у автора интересные претензии и к тому, что приняли, и к рабочей группе в целом. А по поводу параллелизма, все равно независимая компиляция, которую дают заголовки, будет масштабироваться лучше. Основная проблема с модулями, если встретил import A, то надо пойти и собрать этот модуль A, если он ещё не собран, чтобы получить bmi-файл. И это не только C++ ная проблема, питон так же работает. Clang кстати должен работать немного шустрее, так как компилирует в две стадии: сначала отдает bmi, а потом дособирает obj.
источник

PS

Pavel Samolysov in Compiler Development
K R
Это лишь означает, что либо модули сделаны неправильно, либо параллелизация. Есть методы распараллеливания, скажем, dfs алгоритма- см lvars
Один cpp-файл все равно компилируется в один поток, граф зависимостей строит билд-система, но она ничего не знает про модули. Получается, что теперь не только нужен граф зависимостей между таргетами, но и нужно учесть зависимости между модулями. Либо отдать модули на откуп компилятору, пусть он их лениво собирает.
источник

KR

K R in Compiler Development
Pavel Samolysov
Один cpp-файл все равно компилируется в один поток, граф зависимостей строит билд-система, но она ничего не знает про модули. Получается, что теперь не только нужен граф зависимостей между таргетами, но и нужно учесть зависимости между модулями. Либо отдать модули на откуп компилятору, пусть он их лениво собирает.
Ну я же говорю - косячно сделано. Сборочная система почему-то знает про заголовочные файлы.
источник

PS

Pavel Samolysov in Compiler Development
K R
Ну я же говорю - косячно сделано. Сборочная система почему-то знает про заголовочные файлы.
Она знает только какие используются, чтобы пересобирать, если кто-то изменился. Но она не строит граф зависимостей между заголовочными файлами
источник

KR

K R in Compiler Development
Pavel Samolysov
Она знает только какие используются, чтобы пересобирать, если кто-то изменился. Но она не строит граф зависимостей между заголовочными файлами
Ну как это? Строит, либо пользуется сгенерированным GCC.

Не, если мы граф зависимостей модулей строим на лету, а .depend нам построил GCC, и это не считается, то да, можно... 😀
источник

PS

Pavel Samolysov in Compiler Development
K R
Ну как это? Строит, либо пользуется сгенерированным GCC.

Не, если мы граф зависимостей модулей строим на лету, а .depend нам построил GCC, и это не считается, то да, можно... 😀
Так зачем заголовки компилировать? Насколько я знаю по неким ключам у компилятора можно попросить заголовки того или иного cpp файла и добавить их в input для цели, чтобы пересобирать при изменении заголовка. И на этом знания заканчиваются, т.к. больше ничего не надо, сами cpp файлы могут компилироваться независимо. А вводим модули и получаем зависимости между самими cpp файлами, а значит и просадку в масштабируемости. И это уже неустранимо. Остаётся только рассуждать что мы больше выиграли или потеряли и если на 8-16 ядрах на ноутбуке разработчика скорее выиграли, то на 128 ядерной билдстанции возможно и потеряли. Но учитывая тонны шаблонов в каком-нибудь eigen/tensorflow/pytorch, если сможем закешировать инстансы, то и там выиграем как минимум на счетах за электричество
источник

AT

Alexander Tchitchigi... in Compiler Development
> Так зачем заголовки компилировать?

Precompiled headers добавили в Visual C++ более 20 лет назад. И вправду -- зачем? 😉
источник

f

fldlg2 in Compiler Development
Alexander Tchitchigin
> Так зачем заголовки компилировать?

Precompiled headers добавили в Visual C++ более 20 лет назад. И вправду -- зачем? 😉
О да, и stdafx.h, содержащий всё "стабильное" и включаемый всюду. Модульность.
источник

PS

Pavel Samolysov in Compiler Development
Alexander Tchitchigin
> Так зачем заголовки компилировать?

Precompiled headers добавили в Visual C++ более 20 лет назад. И вправду -- зачем? 😉
Ну мейнстримом то это не стало возможно из-за описанных проблем с зависимостями и масштабируемостью. Плюс препроцессор, который может изменить заголовок до неузнаваемости.
источник

BD

Berkus Decker in Compiler Development
Alexander Tchitchigin
> Так зачем заголовки компилировать?

Precompiled headers добавили в Visual C++ более 20 лет назад. И вправду -- зачем? 😉
Да, когда мы выпилили прекомпилед хедеры из сорцов телеги она стала собираться заметно быстрее )
источник

DF

Dollar Føølish in Compiler Development
Смешно уже
источник

M

MrSmith in Compiler Development
источник

M

MrSmith in Compiler Development
Уходит в фриз кек
источник

M

MrSmith in Compiler Development
Ладно, завтра уже буду копать это. Вообще конечно фейл, лучше бы взял парсер комбинатор
источник

AG

Alex Gryzlov in Compiler Development
тотальный!
источник