ПрограммированиеФорумОбщее

Есть ли способ сортировки на SIMD? (2 стр)

Страницы: 1 2
#15
21:18, 19 фев 2017

mr.DIMAS
у армовского неона свои интринсики, которые не работают на интеле. Поэтому портируемость к плюсам интринсиков не отнести.

#16
21:19, 19 фев 2017

kipar
> Хочешь сказать, _mm_load_ps будет на арме работать?
На ARM'е есть NEON который сильно похож на SIMD и с портированием
проблем куда меньше чем с flat asm.
SSE-to-NEON

#17
21:25, 19 фев 2017

TheLightWay
Судя по описанию хидера - это костыль и все равно придется переписывать руками. Насчет простоты этого переписывания - не пробовал, так что поверю эксперту.

#18
21:38, 19 фев 2017

kipar
Именно это да, костыль. Просто на эту теме хрен кто что-то внятное покажет поскольку лицензия не даст или NDA.

#19
1:26, 20 фев 2017

viennahd
Используй intrinsics функции, те которые с префиксом "_mm_*", __asm не используй - не поддерживается в x64 системах. SSE 4 версии позволяет немного уменьшить необходимость в велосипедах. С многопоточностью аккуратней, т. к. кэш-промахи заставят простаивать процессор. Разделяй массив на несколько смежных частей и используй prefetch, если без асинхронного выполнения никак нельзя. В принципе, на современных процессорах что с префетчом, что без - сильно большой разницы быть не должно. Это надо проверять на конкретной платформе.

https://software.intel.com/sites/landingpage/IntrinsicsGuide/

Лучше, как по мне, использовать OpenCL (или другие подобные языки), если есть возможность.

#20
9:57, 20 фев 2017

bykabak
> Чем "интринсики" лучше чистого asm ?

Тем, что ничего не ломают, в основном.

Уберегают от всякой гомосятины с потерянными адресами возврата, потерянным указателем стека и прочими переписанными регистрами с последующей порчей данных в оных.

#21
9:59, 20 фев 2017

Алмаз
> Используй intrinsics функции, те которые с префиксом "_mm_*", __asm не
> используй - не поддерживается в x64 системах. SSE 4 версии позволяет немного
> уменьшить необходимость в велосипедах. С многопоточностью аккуратней, т. к.
> кэш-промахи заставят простаивать процессор. Разделяй массив на несколько
> смежных частей и используй prefetch, если без асинхронного выполнения никак
> нельзя. В принципе, на современных процессорах что с префетчом, что без -
> сильно большой разницы быть не должно. Это надо проверять на конкретной
> платформе.

про выравнивание еще забыл, нужно что бы вырванены были по границе 16 байт (в адресе массива последняя шестнадцатиричная цифра должна быть 0)

#22
11:58, 20 фев 2017

nonamezerox
Да, точно.

#23
13:19, 20 фев 2017

Выравнивание и префетчинг,  например на моем цпу коре 2 интел,  не дают ничего,  или почти ничего.  Это я про использование выровненных команд и невыровненных.  Напримнр movups,  movaps

#24
14:47, 21 фев 2017

Я хотел спросить про OpenCL - будет ли float4 и float8 работать как SIMD?

#25
16:27, 21 фев 2017

viennahd
> Я хотел спросить про OpenCL - будет ли float4 и float8 работать как SIMD?

От компилятора зависит. Вообще он обычно да, старается по максимуму SIMD использовать.

#26
19:31, 21 фев 2017

Плавающая арифметика на PC все параллельная. Где ты другую то найдешь? Она такая еще со времен отдельного сопроцессора для этих команд.
Другое дело, что параллельность использовать с умом надо, не ждать результат сразу после команды, заняться чем-то еще.

Страницы: 1 2
ПрограммированиеФорумОбщее

Тема в архиве.