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

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

Страницы: 1 2 Следующая »
#0
13:15, 19 фев 2017

Привет всем. Существует ли алгоритм сортировки для CPU, который может использовать не только многопоточность но и его младшие SIMD инструкции?
Из таковых я думаю есть масса: swizzle, shuffle, сравнение сразу 4 и более значений и т.д.

Я рассматриваю в основном две категории: SSE4.2 и AVX2. Наверное это возможно на ARM, прочем это немного другая история... И да - заданные типы Int, Uint.

#1
13:52, 19 фев 2017

viennahd,

Что вы хотите сортировать ?

SIMD набор регистров для быстрой - параллельной математики с векторами и матрицами.

#2
13:55, 19 фев 2017

bykabak
> Что вы хотите сортировать ?
заданные типы же

#3
13:56, 19 фев 2017

bykabak
> SIMD набор регистров
инструкций вообще-то :)

#4
13:58, 19 фев 2017

SIMD набор регистров / инструкций для быстрой - параллельной математики с векторами, матрицами и float.

Да и регистров и инструкций.  Я неправильно выразился.

https://en.wikipedia.org/wiki/Streaming_SIMD_Extensions

#5
14:04, 19 фев 2017

viennahd,
Вопрос , как достучаться до Asm из С++ ?  ( VS2015 не позволяет делать asm вставки.  или я не разобрался )

Вроде что-то есть по вашему вопросу http://docs.oracle.com/cd/E36784_01/html/E36859/epmpn.html

Посмотрите SIMD  начиная с 1-го SSE.  Какие там есть инструкции ? -И вы поймёте, можно ли вашу задачу выполнить на SIMD.

#6
14:52, 19 фев 2017

viennahd
Я хз за отдельный алгоритм... Но radix sort у меня сортирует по 4 элемента... Юзая вектора. Т.е. SIMD определённо можно заюзать но не для всего

#7
15:22, 19 фев 2017

Ну каждую новую версию SIMD становится все возможнее.
Я ещё не просто интересуюсь. Толк есть в JS, в CPU трассировках...

Что надо сортировать? Разумеется массивы!

#8
17:35, 19 фев 2017

bykabak
> Вопрос , как достучаться до Asm из С++ ? ( VS2015 не позволяет делать asm
> вставки. или я не разобрался )
Зачем асм, когда есть интринсики?
_mm_load_ps, _mm_add_ps и т.п.

#9
18:25, 19 фев 2017

mr.DIMAS,

Ну конечно, зачем прямые вставки ASM ?  Давайте через %?: делать ассемблер.  А давайте if и while, for сделаем тоже как-нибудь так ?

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

__asm
{
...
}


Зачем через "интринсики"  сделали ?

#10
19:30, 19 фев 2017

Интринсики портируемы, в отличие от асма

#11
20:00, 19 фев 2017

Встроенный код на ассемблере не поддерживается в процессорах ARM и x64.
Для x86 __asm вставки поддерживаются и в vs2017rc.
Только это всего лишь legacy кусок Майковского compiler'а, о нем давно пора забыть.

#12
20:53, 19 фев 2017

Но что же заменит эти вставки?

#13
21:13, 19 фев 2017

mr.DIMAS
> Интринсики портируемы, в отличие от асма
Хочешь сказать, _mm_load_ps будет на арме работать?

#14
21:16, 19 фев 2017

kipar
Хз, но у aрма свой SIMD - https://www.arm.com/products/processors/technologies/neon.php
так что может быть

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

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