powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / C++ [игнор отключен] [закрыт для гостей] / Есть аналоги классов для векторизации типа Intel C++ Class Libraries?
8 сообщений из 8, страница 1 из 1
Есть аналоги классов для векторизации типа Intel C++ Class Libraries?
    #39609942
AlekseySQL
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Посмотрел текущее положение дел с векторизацией:
1. Автовекторизация накладывает большое количество ограничений на циклы (заранее известное количество итераций + запрет на break и вызов функций).
2. Интринсики- слишком сложно и очень много кода.

А по середине между ними есть написанные компанией Intel классы, которые позволяют легко работать с векторами (есть перегруженные арифметические / логические операции вместо вызовов процедур со странными названиями). К сожалению, работает эта библиотека только с платным компилятором Intel.

Есть что-то подобное в мультиплатформенном исполнении?
...
Рейтинг: 0 / 0
Есть аналоги классов для векторизации типа Intel C++ Class Libraries?
    #39610496
Leonid Kudryavtsev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AlekseySQL...К сожалению, работает эта библиотека только с платным компилятором Intel...
Точно?

Мне всегда казалось, что Intel'овские библиотеки обычные .DLL.

Собственно мат. библиотеками не пользовался, но ряд оптимизированных библиотек (jpeg, zip) из этого комплекта раньше использовал с MS VC, проблем не было.
...
Рейтинг: 0 / 0
Есть аналоги классов для векторизации типа Intel C++ Class Libraries?
    #39610518
Leonid Kudryavtsev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Похоже наврал. Сейчас поискал по Инету, вроде C++ Library это действительно часть компилятора

Но только зачем этот C++ нужен ))) ? А С-ные библиотеки вроде под любые компиляторы (сейчас не проверял, последний раз пользовался несколько лет назад)

https://software.intel.com/en-us/performance-libraries
...
Рейтинг: 0 / 0
Есть аналоги классов для векторизации типа Intel C++ Class Libraries?
    #39610520
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
OpenMP ?

Microsoft parallel STL?
...
Рейтинг: 0 / 0
Есть аналоги классов для векторизации типа Intel C++ Class Libraries?
    #39611231
AlekseySQL
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
MasterZivOpenMP ?

Microsoft parallel STL?

Насколько я понимаю у OpenMP такие же ограничения, что у автовекторизатора.
STL нужен как вместилище чего-то ,а если перемалывание цифр, то как бы не в тему.
...
Рейтинг: 0 / 0
Есть аналоги классов для векторизации типа Intel C++ Class Libraries?
    #39611269
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Перемалывание цифр чаще всего гораздо эффективнее ускоряется изменением алгоритма.
Например, используя интринсики и/или ассемблер, я ускорил деление по модулю процентов на
20. Но на этом форуме мне подсказали посмотреть на деление умножением и оно ускорило
процесс на порядок, а местами и на два (да, в 10-100 раз).
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Есть аналоги классов для векторизации типа Intel C++ Class Libraries?
    #39611293
Вася Уткин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
AlekseySQLПосмотрел текущее положение дел с векторизацией:
1. Автовекторизация накладывает большое количество ограничений на циклы (заранее известное количество итераций + запрет на break и вызов функций).

Ну насчет "заранее известное количество итераций" это вроде не обязательно.
Компилятор с -O3 или с -fopenmp -lgomp и #pragma omp parallel for simd по идее сам выполнит итерации кратные 8 используя 128-битный paddd, а все оставшиеся (менее 8 итераций) через обычный add.
https://godbolt.org/g/19QRy8 movdqu xmm0, XMMWORD PTR [rbx+rdx]
add esi, 1
paddd xmm0, XMMWORD PTR [r12+rdx]
movups XMMWORD PTR [rcx+rdx], xmm0

А вот с запретом на вызов break, так это и с Intel C++ Class Libraries проблема, как вы вызовете break посредине SIMD-операции?
Ну а так по изгаляться можно и с -O3 или openmp: https://godbolt.org/g/EHHHQJ
...
Рейтинг: 0 / 0
Есть аналоги классов для векторизации типа Intel C++ Class Libraries?
    #39612507
AlekseySQL
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Вася УткинAlekseySQLПосмотрел текущее положение дел с векторизацией:
1. Автовекторизация накладывает большое количество ограничений на циклы (заранее известное количество итераций + запрет на break и вызов функций).

Ну насчет "заранее известное количество итераций" это вроде не обязательно.

К сожалению, обязательно: https://habrahabr.ru/company/intel/blog/162831/

Вася УткинА вот с запретом на вызов break, так это и с Intel C++ Class Libraries проблема, как вы вызовете break посредине SIMD-операции?

Например, можно хранить промежуточные значения цикла и иметь возможность откатиться или выполнить цикл дважды, первый раз узнав итерацию выхода. Конечно, это накладные расходы, но статический анализатор может принять решение о том, что эти накладные расходы меньше потенциальной выгоды.
...
Рейтинг: 0 / 0
8 сообщений из 8, страница 1 из 1
Форумы / C++ [игнор отключен] [закрыт для гостей] / Есть аналоги классов для векторизации типа Intel C++ Class Libraries?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]