Привет всем. Существует ли алгоритм сортировки для CPU, который может использовать не только многопоточность но и его младшие SIMD инструкции?
Из таковых я думаю есть масса: swizzle, shuffle, сравнение сразу 4 и более значений и т.д.
Я рассматриваю в основном две категории: SSE4.2 и AVX2. Наверное это возможно на ARM, прочем это немного другая история... И да - заданные типы Int, Uint.
viennahd,
Что вы хотите сортировать ?
SIMD набор регистров для быстрой - параллельной математики с векторами и матрицами.
bykabak
> Что вы хотите сортировать ?
заданные типы же
bykabak
> SIMD набор регистров
инструкций вообще-то :)
SIMD набор регистров / инструкций для быстрой - параллельной математики с векторами, матрицами и float.
Да и регистров и инструкций. Я неправильно выразился.
viennahd,
Вопрос , как достучаться до Asm из С++ ? ( VS2015 не позволяет делать asm вставки. или я не разобрался )
Вроде что-то есть по вашему вопросу http://docs.oracle.com/cd/E36784_01/html/E36859/epmpn.html
Посмотрите SIMD начиная с 1-го SSE. Какие там есть инструкции ? -И вы поймёте, можно ли вашу задачу выполнить на SIMD.
viennahd
Я хз за отдельный алгоритм... Но radix sort у меня сортирует по 4 элемента... Юзая вектора. Т.е. SIMD определённо можно заюзать но не для всего
Ну каждую новую версию SIMD становится все возможнее.
Я ещё не просто интересуюсь. Толк есть в JS, в CPU трассировках...
Что надо сортировать? Разумеется массивы!
bykabak
> Вопрос , как достучаться до Asm из С++ ? ( VS2015 не позволяет делать asm
> вставки. или я не разобрался )
Зачем асм, когда есть интринсики?
_mm_load_ps, _mm_add_ps и т.п.
mr.DIMAS,
Ну конечно, зачем прямые вставки ASM ? Давайте через %?: делать ассемблер. А давайте if и while, for сделаем тоже как-нибудь так ?
Чем "интринсики" лучше чистого asm ?
__asm
{
...
}
Зачем через "интринсики" сделали ?
Интринсики портируемы, в отличие от асма
Встроенный код на ассемблере не поддерживается в процессорах ARM и x64.
Для x86 __asm вставки поддерживаются и в vs2017rc.
Только это всего лишь legacy кусок Майковского compiler'а, о нем давно пора забыть.
Но что же заменит эти вставки?
mr.DIMAS
> Интринсики портируемы, в отличие от асма
Хочешь сказать, _mm_load_ps будет на арме работать?
kipar
Хз, но у aрма свой SIMD - https://www.arm.com/products/processors/technologies/neon.php
так что может быть
Тема в архиве.