Size: a a a

Compiler Development

2020 January 13

E

EgorBo in Compiler Development
Alexander Tchitchigin
Компиляторы эмитят подходящие барьеры чтобы гарантировать специфицированное языком поведение.
в любой непонятной ситуации эмить барьер
источник

MS

Mikola Summer Duck in Compiler Development
Всегда так делаю.
источник

AT

Alexander Tchitchigin in Compiler Development
EgorBo
в любой непонятной ситуации эмить барьер
У такого гайдлайна на самом деле только 2 возможных исхода: 1) пользователи недоумевают откуда берутся неведомые баги, потому что гарантии не выполняются; 2) пользователи ноют про низкую производительность программ. 😉
источник

E

EgorBo in Compiler Development
корректность > производительность
источник

AT

Alexander Tchitchigin in Compiler Development
Точнее, линейная комбинация этих вариантов. 😂
источник

AT

Alexander Tchitchigin in Compiler Development
EgorBo
корректность > производительность
Так гайдлайн ни того, ни другого не гарантирует. 🤷‍♀️
источник

M

MaxGraey in Compiler Development
Nikita Lipskiy
Если вас интенрсует "хоть какой-то бенчмарк", то вот есть non-vendor biased, но очень старый бенчмарк от независмого деятеля — https://www.stefankrause.net/wp/?p=9 . Мы там обогнали на одном из бенчей GCC, и вровень с llvm. Но бенчмарк очень специфический и очень старый, поэтому в общем-то не о чем.
«JET 6.4 on the other hand managed to improve such that it runs even a little bit faster than GCC. This is really remarkable since JET runs with bounds checks enabled and fannkuch has quite a few indirect array access operations».

Вот это действительно чудеса, даже с bounds checks обогнал GCC на тривиальных числодробилках.

А LLVM там вообще гонялся в JIT режиме. В общем то да, очень странный бенчмарк

Но спасибо хоть за такой ответ!
источник

E

EgorBo in Compiler Development
не то чтобы ллвм в джите сильно от аот отличается для числодробилок
источник

МБ

Михаил Бахтерев in Compiler Development
EgorBo
корректность > производительность
В данном случае со всеми этими lockfree структурами, вроде же, всё наоборот. Гоняются за мифическим снижением задержек
источник

AT

Alexander Tchitchigin in Compiler Development
Михаил Бахтерев
В данном случае со всеми этими lockfree структурами, вроде же, всё наоборот. Гоняются за мифическим снижением задержек
Гм, на практике, безусловно, используются "некорректные" алгоритмы, в смысле, например, алгоритмов с гонками, которые теряют некоторую часть событий, где это не критично, и прочие вероятностные и нечёткие алгоритмы, но окромя этих специальных случаев, вроде бы, никто не ставит под вопрос необходимость корректной реализации алгоритмов и структур общего назначения? В том числе и lock-free.
источник

AT

Alexander Tchitchigin in Compiler Development
Более того, ставят вопросы не только корректности, но и всякой там fairness и прочих тонких материй.
источник

МБ

Михаил Бахтерев in Compiler Development
Alexander Tchitchigin
Более того, ставят вопросы не только корректности, но и всякой там fairness и прочих тонких материй.
Ну так это решается семафорами. А когда говорят о свободе от блокировок, то стремятся прежде всего к скорости
источник

AT

Alexander Tchitchigin in Compiler Development
Михаил Бахтерев
Ну так это решается семафорами. А когда говорят о свободе от блокировок, то стремятся прежде всего к скорости
Не в ущерб корректности, тем не менее - нет?
источник

EM

Evgenii Moiseenko in Compiler Development
Alexander Tchitchigin
Не в ущерб корректности, тем не менее - нет?
тут вопрос в том, что значит "корректность" в контексте lock-free
источник

AT

Alexander Tchitchigin in Compiler Development
Evgenii Moiseenko
тут вопрос в том, что значит "корректность" в контексте lock-free
Да, вроде, то же самое, что и для "lock-full" - отсутствие гонок и дедлоков (лайвлоков). Нет?
источник

МБ

Михаил Бахтерев in Compiler Development
Alexander Tchitchigin
Не в ущерб корректности, тем не менее - нет?
Ну. Ущерба никто не хочет, конечно. Но эти все алгоритмы сильно привязаны к особенностям железа: на одном CPU всё отлично, на другом лезут невоспроизводимые баги. Поэтому, к таким средствам прибегают, по моему опыту, только тогда, когда нужна именно производительность
источник

EM

Evgenii Moiseenko in Compiler Development
Alexander Tchitchigin
Да, вроде, то же самое, что и для "lock-full" - отсутствие гонок и дедлоков (лайвлоков). Нет?
гонки на атомарных переменных в lock-free алгоритмах это норма
источник

AT

Alexander Tchitchigin in Compiler Development
Evgenii Moiseenko
гонки на атомарных переменных в lock-free алгоритмах это норма
"гонки на атомарных переменных" - это не оксюморон ли? 😃
источник

K

Konstantin in Compiler Development
Я думаю имеется в виду контроль гонок
источник

МБ

Михаил Бахтерев in Compiler Development
Alexander Tchitchigin
"гонки на атомарных переменных" - это не оксюморон ли? 😃
Ну. Нет. Во всех этих алгоритмах есть гонки. Иначе не выбрать победителя
источник