Size: a a a

Compiler Development

2020 February 24

AS

Aleksey Shipilev in Compiler Development
Нет, у нас была прикладная задача разогнать наше собственное. Сравниваться с TBB, Cilk и проч. было без пользы.
источник

I

Ioann_V in Compiler Development
окей, спасибо что ответил в столь поздний час. Надеюсь, не сильно побеспокоил. U are rock man! Остальным участникам чатика - простите за оффтопик, просто я не знаю, где Алексея застать еще. Но, наверное, где то в Java недрах!
источник

AS

Aleksey Shipilev in Compiler Development
Важную штуку про FJP надо понять, если я непонятно объяснил. В обычном пуле предполагается, что время деления на задачи и обмен задачами между сабмиттером и воркерами несущественно по отношению ко времени собственно исполнения листовых задач. А в FJP делением задачи на подзадачи "на месте" можно распараллелить и эту хрень! Чем надо нагло пользоваться.
источник

AS

Aleksey Shipilev in Compiler Development
...Поэтому чем более жирными на каждом уровне делишь, тем больше эта работа размазывается по пулу, и каждый поток может поучаствовать. Если задача просто тупо делится на k очень жирных далее не делимых подзадач и всё, то можно и в обычный пул засамбитить и подождать результата. Смысла совать это в FJP в таком случае особенно нет.
источник

I

Ioann_V in Compiler Development
Aleksey Shipilev
Важную штуку про FJP надо понять, если я непонятно объяснил. В обычном пуле предполагается, что время деления на задачи и обмен задачами между сабмиттером и воркерами несущественно по отношению ко времени собственно исполнения листовых задач. А в FJP делением задачи на подзадачи "на месте" можно распараллелить и эту хрень! Чем надо нагло пользоваться.
а как, оно ждет результата? Я так понимаю, на ожидающие подзадачи, мы вешаем колбек. А внутри, у подзадач, есть некий счетчик, атомарный, который если равен числу ожидающих задач - выполняет колбек? Ну не счетчик выполняет колбек, а тот кто его контроллирует.
источник

I

Ioann_V in Compiler Development
так ведь? Ну, я вот других подходов просто придумать не могу.
источник

AS

Aleksey Shipilev in Compiler Development
Нет, "счастливый путь" в реализации полностью асинхронный. Если поток джойнит задачу из своей локальной очереди, то он её тупо исполняет. Если задачу кто-то украл и исполняет, ну тогда откладываем её в сторонку, берём следующую задачу из нашей локальной очереди, исполняем. В локальной очереди пусто? Ну пойдём украдём у кого-нибудь. И только если всё совсем плохо, то это почти наверняка означает, то работы в пуле больше нет, и мы а-ля-wait-notify-ждём, пока укравший у нас поток даст нам результат.
источник

I

Ioann_V in Compiler Development
Aleksey Shipilev
Нет, "счастливый путь" в реализации полностью асинхронный. Если поток джойнит задачу из своей локальной очереди, то он её тупо исполняет. Если задачу кто-то украл и исполняет, ну тогда откладываем её в сторонку, берём следующую задачу из нашей локальной очереди, исполняем. В локальной очереди пусто? Ну пойдём украдём у кого-нибудь. И только если всё совсем плохо, то это почти наверняка означает, то работы в пуле больше нет, и мы а-ля-wait-notify-ждём, пока укравший у нас поток даст нам результат.
то есть, мы ждем крутясь в цикле? Я про последний кейс, когда кто то украл, у нас, а нам украсть не у кого.
источник

AS

Aleksey Shipilev in Compiler Development
Нет, почему, ожидание на локе/мониторе, как обычно. В Cilk-е, емнип, как раз busy wait, потому что им суперкомпьютерного времени не жалко :)
источник

AS

Aleksey Shipilev in Compiler Development
Вот слайды моего древнего доклада на ночь глядя, а я спать пойду: https://shipilev.net/talks/jeeconf-May2013-forkjoin.pdf
источник

I

Ioann_V in Compiler Development
окей. Спасибо еще раз!
источник

AS

Aλexander Syrotenko in Compiler Development
Илья Чистяков
мы тут с коллегами за кофейком выяснили что каждый высокогрейдовый разработчик должен написать асинхронный фреймворк, но не смогли определиться что это значит

главный вопрос - фреймворк обязан содержать в себе сокеты/select/poll/epoll или это уже потребительская часть?
Значит, я его уже в своей жизни написал :)
источник

ИЧ

Илья Чистяков in Compiler Development
Aλexander Syrotenko
Значит, я его уже в своей жизни написал :)
высокогрейдовый теперь?)
источник

AS

Aλexander Syrotenko in Compiler Development
Илья Чистяков
высокогрейдовый теперь?)
🙈
источник

ИЧ

Илья Чистяков in Compiler Development
источник
2020 February 25

BD

Berkus Decker in Compiler Development
Ioann_V
но при этом каких то проблем с асинхронным ожиданием подзадач - нету? Ну в моем случае, просто скажем сначала создать в методе экзекат все подзадачи, а затем их запустить и по завершении вызвать колбек - по перфомансу выгоднее.
Почему у тебя метод называется execut а не execute?
источник

AT

Alexander Tchitchigin in Compiler Development
Berkus Decker
Почему у тебя метод называется execut а не execute?
Наверное, потому же, почему сисколл creat, а не create. 😂
источник

IJ

Igor 🐱 Jirkov in Compiler Development
Berkus Decker
Почему у тебя метод называется execut а не execute?
Когда имена символов меньше, разрешение быстрее происходит!
источник

YS

Yuriy Syrovetskiy in Compiler Development
Alexander Tchitchigin
Наверное, потому же, почему сисколл creat, а не create. 😂
то есть потому что Кен Томпсон опечатался?
источник

AT

Alexander Tchitchigin in Compiler Development
Yuriy Syrovetskiy
то есть потому что Кен Томпсон опечатался?
Не думаю, что он опечатался и не замечал этого неделями и месяцами. 😊
источник