Size: a a a

Compiler Development

2020 May 18

M

MaxGraey in Compiler Development
Pavel Kazakov
Вроде расстановки барьеров lfence/mfence по коду
SIMD инструкции требуют синхронизации?)
источник

PK

Pavel Kazakov in Compiler Development
MaxGraey
SIMD инструкции требуют синхронизации?)
При чем тут симд и параллелизм уровня повыше? В одном треде можно как угодно симдом пользоваться, тут же не про это речь?
источник

AS

Aleksey Shipilev in Compiler Development
М. x86 (и все остальные, емнип) гарантирует отсутствие word tearing только на уровне байтов. Если нужно писать отдельные биты в байте без word tearing'a, то придётся синхронизироваться.
источник

PK

Pavel Kazakov in Compiler Development
Aleksey Shipilev
М. x86 (и все остальные, емнип) гарантирует отсутствие word tearing только на уровне байтов. Если нужно писать отдельные биты в байте без word tearing'a, то придётся синхронизироваться.
Ага!
источник

AS

Aleksey Shipilev in Compiler Development
Это довольно частое недоумение, поэтому я давеча целую врезку написал вот здесь: https://shipilev.net/jvm/objects-inside-out/#_data_types_and_their_representation
источник

МБ

Михаил Бахтерев... in Compiler Development
Aleksey Shipilev
М. x86 (и все остальные, емнип) гарантирует отсутствие word tearing только на уровне байтов. Если нужно писать отдельные биты в байте без word tearing'a, то придётся синхронизироваться.
Так данные так разложены в памяти, что биты лежат отдельно. Например, первые биты лежат в одном массиве, а вторые в другом.
источник

AS

Aleksey Shipilev in Compiler Development
Кхм. Ну, при таком определении "битов", да, конечно. Я-то думал, разговор про доступ к "первым"/"вторым" битам в конкретном машинном слове.
источник

AD

Artyom Drozdov in Compiler Development
Михаил Бахтерев
Так данные так разложены в памяти, что биты лежат отдельно. Например, первые биты лежат в одном массиве, а вторые в другом.
тогда достаточно посчитать число нулевых бит в первом массиве, во втором и т.д.
источник

AD

Artyom Drozdov in Compiler Development
вырожденный случай сортировки подсчётом же, не?
источник

AD

Artyom Drozdov in Compiler Development
если я не ошибаюсь, тогда даже хранить сами биты не нужно
источник

PK

Pavel Kazakov in Compiler Development
Artyom Drozdov
тогда достаточно посчитать число нулевых бит в первом массиве, во втором и т.д.
Это в одну инструкцию делается, кстати
источник

AD

Artyom Drozdov in Compiler Development
Pavel Kazakov
Это в одну инструкцию делается, кстати
не везде есть эта инструкция
источник

PK

Pavel Kazakov in Compiler Development
Artyom Drozdov
не везде есть эта инструкция
Не везде и float есть)
источник

PK

Pavel Kazakov in Compiler Development
Михаил Бахтерев
Так данные так разложены в памяти, что биты лежат отдельно. Например, первые биты лежат в одном массиве, а вторые в другом.
Ну и чтобы избегать false sharing, надо будет читать в память кешлайн, в котором ничего кроме этих "битов" нет, -- это неэффективно, когда тут разговоры о таком алгоритме
источник

МБ

Михаил Бахтерев... in Compiler Development
Artyom Drozdov
тогда достаточно посчитать число нулевых бит в первом массиве, во втором и т.д.
Ну... Это ж примитивный пример. В обработке сигналов есть более хитрые представления. Я, правда, не энаю, этотли самое имел в виду Пётр.
источник

PK

Pavel Kazakov in Compiler Development
Ну или к данными клеить их, разбивать их на buckets... Чем дальше в лес, тем толще партизаны
источник

AD

Artyom Drozdov in Compiler Development
Михаил Бахтерев
Ну... Это ж примитивный пример. В обработке сигналов есть более хитрые представления. Я, правда, не энаю, этотли самое имел в виду Пётр.
не, ну так не честно) почти всегда есть случай, когда контр-интуитивный вариант будет оптимальным)
источник

МБ

Михаил Бахтерев... in Compiler Development
Pavel Kazakov
Ну и чтобы избегать false sharing, надо будет читать в память кешлайн, в котором ничего кроме этих "битов" нет, -- это неэффективно, когда тут разговоры о таком алгоритме
Ну и закэшлайните Вы себе сразу 512 битов. Хорошо же.
источник

AD

Artyom Drozdov in Compiler Development
Михаил Бахтерев
Ну и закэшлайните Вы себе сразу 512 битов. Хорошо же.
видимо речь о том, где результаты подсчета хранить
источник

PK

Pavel Kazakov in Compiler Development
Но я так понял, реализацию этих алгоритмов никто не продумывает серьезно, и это чисто теоретические выкладки?
источник