Производительность AVX MaskLoad/MaskStoreC#

Место общения программистов C#
Ответить
Anonymous
 Производительность AVX MaskLoad/MaskStore

Сообщение Anonymous »

Обычно при написании функции, подобной SIMD, для большого массива данных, которые не могут быть четко разделены по размерам регистров, вы можете выполнить основную часть с помощью SIMD, а затем сделать последнюю часть, используя скалярный код.Однако для кода, который я сейчас пишу, это не простой цикл массива от начала до конца. Вместо этого операции чтения/записи памяти являются в некоторой степени случайными, так что в любой точке цикла мне может потребоваться чтение/запись по адресу, что может привести к чтению/записи за пределами конца массива.
Проведя небольшое исследование, я понял, что могу использовать MaskLoad и MaskStore. Хотя это решает мою проблему с невозможностью чтения/записи за пределами границ, это также снижает производительность.
MaskStore, кажется, увеличивает затрачиваемое время примерно на 30%.
Мне интересно, есть ли альтернатива, которую я могу использовать?
Я читал о BlendVariable, но не думаю, что помогает, так как у вас все еще есть проблема чтения/записи за пределами массива.

Подробнее здесь: https://stackoverflow.com/questions/788 ... erformance
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»