Size: a a a

Конференция C++ Russia

2021 July 16

FO

FORTRAN ONE LOVE in Конференция C++ Russia
SYCL пока просто игрушка?
источник

DK

Dmitry Kazakov in Конференция C++ Russia
Звучит прикольно, но судя по Википедии ее только Интел пока поддерживает :)
источник

TS

Timur Safin in Конференция C++ Russia
ну и, кстати, не могу не заметить, что для OneAPI есть и OpenCL и Cuda драйверы. Вроде бы.
источник

AK

Artem Khoroshev in Конференция C++ Russia
Не только, есть и для cuda
источник

DK

Dmitry Kazakov in Конференция C++ Russia
Хм, прикольно, значит нужно попробовать :)
источник

AB

Aleksandr Borgardt in Конференция C++ Russia
между cuda  и  opencl  на nvideo  перформен ходит между 2- 10 %  по моему опыту  но  opencl  работает +/- везде  оддинаково и это жирный +
источник

MK

Max Khizhinsky in Конференция C++ Russia
Позитива... Lock-free - это не серебряная пуля, к сожалению. Я надеюсь в следующий раз об этом подробно поговорить, выразить свое ИМХО (и потешить ЧСВ 😉
источник

AB

Aleksandr Borgardt in Конференция C++ Russia
источник

SP

Sergey Platonov in Конференция C++ Russia
Lock-free позитивный
источник

o

ololoshwin in Конференция C++ Russia
А wait-free?
источник

NK

Nickolay Kononov in Конференция C++ Russia
wait free вообще скорее теоретическая гарантия
источник

AF

Alexey Fyodorov in Конференция C++ Russia
Да ладно, с чего бы это
источник

MK

Max Khizhinsky in Конференция C++ Russia
коллеги, ни одно из чистых определений obstruction-free, lock-free и wait-free ничего не говорит о времени, только о той или иной гарантии окончания. То есть нельзя надеяться, что wait-free окажется быстрее, чем lock-free или locked. Более того, наберусь смелости  утверждать (эмпирически ), что wait-free будет дольше, чем lock-free.
источник

NK

Nickolay Kononov in Конференция C++ Russia
ну если мы говорим о структурах данных и wf на всех методах то это крайне сложно и обычно требует много оверхеда (потоки делают сильно больше работы чем на тех же лф и локах)
источник

AF

Alexey Fyodorov in Конференция C++ Russia
Конечно будет. Потому что для соблюдения гарантированного latency операции нужно эту операцию делать хитро. И начать например с использования ОСРВ :)
источник

MK

Max Khizhinsky in Конференция C++ Russia
ОС реального времени - это вообще отдельная песня, я с ними не работал.
Но для обычного user-space в обычной ОС очень помогло бы, например, API (кратко)временного запрета вытеснения user thread планировщиком. Такая фича была в Solaris.
источник

A

Arelav in Конференция C++ Russia
Кажется очень страшная фича с точки зрения безопасности/надежности нет?
Мне скорее интересно в каких алгоритмах можно воспользоваться rseq.
Это про то чтобы перезапустить набор инструкций, если во время их исполнения произошло переключение контекста например. Из ограничений, то что нельзя писать в память.
В tcmalloc как мне кажется очень классно заюзали, сделав per process кеши.
источник

MK

Max Khizhinsky in Конференция C++ Russia
rseq - интересная вещь, прошла мимо меня, спасибо за наводку.
(BTW, в комментах кто-то спросил то же самое, что и я - "а почему бы просто не сделать API запрета preemption потока"? Конечно, это очень опасное API при бездумном применении, но каждая фича потенциально опасна, если ее использовать не по назначению. Например, с футексами можно натворить черт-те чего)
Но тут у меня есть одно даже не возражение, а предупреждение. Использование новых kernel-specific feature хорошо, когда ваш продукт рассчитан на определенную платформу. Например, Linux kernel = 4.18.
Но когда вы пишете какую-то кросс-платформенную open-source либу, учет таких возможностей превращается в кошмар для разработчика (то есть вас).
Например, для линукса было бы здорово, чтобы ld при запуске процесса учитывал версию ядра и линковал именно ту функцию, которая рассчитана под это ядро, если таковая есть. Кстати, может такого рода фичи уже есть?.. Я знаю, что можно писать разные реализации под разную архитектуру (например, Sandy Bridge, Zen2, armv7...), а ld при загрузке выберет именно ту, на чем сейчас запускается процесс. Но учет версии ядра... такого не знаю.
источник

DK

Dmitry Kazakov in Конференция C++ Russia
Я не слышал про автоматический выбор оптимизации под архитектуру от ld. Мы это вручную делаем.
источник

DK

Dmitry Kazakov in Конференция C++ Russia
Насколько я понимаю, там основная проблема - это гранулярность этих оптимизированных кусков. Если на каждую функцию делать виртуальный вызов, будет дорого очень. Хотя, может, на уровне ld ещё какие-то способы переключения есть.
источник