169 похожих чатов

Добрый! Кто-нибудь знает почему запись в массив кортежей медленее чем

в кортеж массивов. Сейчас думаю как структуру памяти оптимизировать в CUDA - получается одно и тоже ядро в первом случае 70.440 μs, а во втором 56.152 μs - не кисло так... Как правильно-то? 🧐

6 ответов

24 просмотра

Грубо говоря из-за более эффективного использования кеша процессора. Ключевые слова для Гугла: memory alignment

Vladimir- Автор вопроса
Artem Korzhimanov
Грубо говоря из-за более эффективного использовани...

понятно, спасибо, получается что координаты надо хранить разными векторами 🤦‍♂

Vladimir
понятно, спасибо, получается что координаты надо х...

если только вектора координат, то это просто матрица.

Vladimir
понятно, спасибо, получается что координаты надо х...

Да. Причём нередко бывает, что данные выгоднее переупаковать перед вычислениями, если вы их используете в двух разных циклах по разному

Vladimir- Автор вопроса
Artem Korzhimanov
Да. Причём нередко бывает, что данные выгоднее пер...

получается со структурами в CUDA невыгодно работать...

Vladimir
получается со структурами в CUDA невыгодно работат...

Это в целом общий принцип. Про него даже в документации Julia написано в разделе про Performance, там, где про порядок прохода по индексам матрицы

Похожие вопросы

Обсуждают сегодня

а через ESC-код ?
Alexey Kulakov
29
30500 за редактор? )
Владимир
47
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
13
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
program test; {$mode delphi} procedure proc(v: int32); overload; begin end; procedure proc(v: int64); overload; begin end; var x: uint64; begin proc(x); end. Уж не знаю...
notme
6
Как передать управляющий символ в открытую через CreateProcess консоль? Собсна, есть процедура: procedure TRedirectThread.WriteData(Data: OEMString); var Written: Cardinal;...
Serjone
6
вы делали что-то подобное и как? может есть либы готовые? увидел картинку нокода, где всё линиями соединено и стало интересно попробовать то же в ddl на lua сделать. решил с ч...
Victor
8
Ребят в СИ можно реализовать ООП?
Николай
33
Подскажите пожалуйста, как в CustomDrawCell(Sender: TcxCustomGridTableView; ACanvas: TcxCanvas; AViewInfo: TcxGridTableDataCellViewInfo; var ADone: Boolean); получить наз...
A Z
7
Карта сайта