Публикации по теме 'simd'


Так важно, нужно сделать! (СИМД)
Вы занимаетесь оптимизацией кода? Читайте дальше. не так ли? Вы должны быть. Читайте также дальше. Это лучший из найденных мной примеров оптимизации кода с использованием безответственного и SIMD программирования, и он может изменить все для вас — всякий раз, когда вам нужна реальная производительность. ~12 минут на просмотр (или 20 на все видео):

Мой SIMD быстрее вашего
Нерассказанная история о том, как мы делаем векторный поиск в LanceDB быстрым. В январе команда инженеров Eto приняла решение переписать колоночный формат Lance на Rust . Хотя это решение может показаться обычной тенденцией Rewrite-X-In-Rust , за ним стоит нерассказанная история: нашей целью было добиться отличной производительности в недавно анонсировали SSD-устойчивый векторный поиск в LanceDB . Родная генерация кода Rust, отличный набор инструментов для настройки..

4-кратное ускорение с помощью встроенных функций SIMD .NET Core 3.0
Несколько недель назад у нас с Ден Расковаловым состоялся модный разговор о производительности C #, который превратился в небольшое, но увлекательное упражнение по кодированию. Заявление о доказательстве или опровержении было следующим: «Перечисленный ниже код C ++, переведенный на C #, никогда не будет близок к C ++ с точки зрения скорости». При условии, что: Мы сохраняем однопоточность Предположительно, файл, который он читает, достаточно короткий (~ 1 ГБ или меньше),..

Использование SIMD / SSE в Unity3D (.NET 2.0)
Мотивация Прежде всего, что на самом деле означает SIMD? Я определенно не слышал об этом до тех пор, пока не изучал информатику несколько лет назад. Это сокращение от Одна инструкция, несколько данных (SIMD) и связано с архитектурой ЦП и ГП. Другой акроним, часто встречающийся рядом с SIMD, - Streaming SIMD Extensions (SSE) . Вы можете прочитать теоретические подробности об этом в различных публикациях и по всему Интернету, но я постараюсь сформулировать его упрощенно и практично:..

Внутренняя документация VSX
Я недавно написал Внутренний патч VSX для Chroma from Luma (CfL) в AV1 и решил, что могу написать об этом опыте. Самой большой проблемой, с которой я столкнулся при работе с внутренними функциями VSX, была документация. Информация о встроенных функциях VSX распространяется из нескольких источников, что затрудняет определение документов, которым следует следовать. В этом посте мы рассмотрим самые полезные ресурсы, с которыми мне приходилось сталкиваться (пока что). Встроенные..

Как эффективно округлить (усечь) двойное без приведения типов
Магическое число 2⁵² вам очень поможет Языки - это не то, о чем мы здесь заботимся, но для простоты предположим, что мы используем C в следующем контексте. Вопрос, на который будет отвечать эта статья: Как округлить (обрезать) двойник без приведения типов? Вопрос может звучать как-то глупо. Кому нужно заботиться о способе усечения или округления двойника без приведения типов? Приведение типов так легко решить проблему, и для этой цели служат некоторые инструкции по сборке..

Вопросы по теме 'simd'

Быстрое насыщение и сдвиг двух полуслов в ARM asm
У меня есть два 16-битных значения со знаком в 32-битном слове, и мне нужно сдвинуть их вправо (разделить) на постоянное значение (оно может быть от 1 до 6) и довести до байта (0..0xFF). Например, 0x FFE1 00AA с shift = 5 должен стать 0x...
1560 просмотров

Как определить, выровнена ли память?
Я новичок в оптимизации кода с помощью инструкций SSE / SSE2, и до сих пор я не очень далеко продвинулся. Насколько мне известно, обычная функция, оптимизированная для SSE, будет выглядеть так: void sse_func(const float* const ptr, int len){...
47757 просмотров
schedule 03.07.2022

SIMD или не SIMD — кроссплатформенность
Мне нужна идея, как написать кросс-платформенную реализацию нескольких параллелизуемых задач на С++ таким образом, чтобы я мог использовать преимущества SIMD (SSE, SPU и т. д.), если они доступны. А также я хочу иметь возможность во время выполнения...
3068 просмотров
schedule 18.01.2024

Можно ли векторизовать myNum += a[b[i]] * c[i]; на х86_64?
Какие внутренние функции я бы использовал для векторизации следующего (если это вообще возможно) на x86_64? double myNum = 0; for(int i=0;i<n;i++){ myNum += a[b[i]] * c[i]; //b[i] = int, a[b[i]] = double, c[i] = double }
1173 просмотров
schedule 29.08.2023

Как изменить порядок векторных данных с помощью встроенных функций ARM Neon?
Это особенно связано с кодированием ARM Neon SIMD. Я использую инстринсики ARM Neon для определенного модуля в видеодекодере. У меня есть векторизованные данные: В регистре Neon есть четыре 32-битных элемента, скажем, Q0, размер которых...
6681 просмотров
schedule 06.06.2022

Как включить набор инструкций SSE3 / SSE4.1 в Visual Studio 2008?
Я пытался следить: Проект> Свойства> Свойства конфигурации> C / C ++> Создание кода> Включить расширенный набор команд Но у меня были только варианты - SSE или SSE2. Спасибо.
4164 просмотров
schedule 28.03.2024

Как использовать встроенные функции умножения и накопления в ARM Cortex-a8?
как использовать встроенные функции Multiply-Accumulate, предоставляемые GCC? float32x4_t vmlaq_f32 (float32x4_t , float32x4_t , float32x4_t); Кто-нибудь может объяснить, какие три параметра я должен передать этой функции. Я имею в виду...
14486 просмотров
schedule 12.03.2022

Как использовать Eigen, библиотеку шаблонов C ++ для линейной алгебры?
У меня есть алгоритм обработки изображений, состоящий из матриц, у меня есть собственные коды операций с матрицами (умножение, обратное ...). Но я использую процессор ARM Cortex-A8 с сопроцессором NEON для векторизации, поскольку матричные операции -...
14180 просмотров
schedule 26.05.2022

Переворачивающий знак на упакованных поплавках SSE
Я ищу наиболее эффективный метод переворота знака на всех четырех поплавках, упакованных в регистр SSE. Я не нашел встроенной функции для этого в руководстве по разработке программного обеспечения для архитектуры Intel. Ниже приведены вещи,...
3301 просмотров
schedule 06.06.2023

Каков предел оптимизации с использованием SIMD?
Мне нужно оптимизировать некоторый код C, который выполняет множество физических вычислений, используя расширения SIMD на SPE процессора Cell. Каждый векторный оператор может обрабатывать 4 числа с плавающей запятой одновременно. Так что в идеале я...
823 просмотров
schedule 05.06.2022

Программирование SIMD
Я использую расширения SSE, доступные в процессоре Core2Duo (компилятор gcc 4.4.1). Я вижу, что доступно 16 регистров, каждый из которых имеет длину 128 бит. Теперь я могу разместить 4 целочисленных значения в одном регистре и 4 в другом регистре и,...
1563 просмотров
schedule 10.10.2022

c ++ как написать код, который компилятор может легко оптимизировать для SIMD?
Я работаю в Visual Studio 2008, и в настройках проекта я вижу параметр «активировать расширенный набор инструкций», который я могу установить на None, SSE или SSE2 Значит, компилятор попытается объединить инструкции вместе, чтобы использовать...
3130 просмотров
schedule 23.07.2022

64-битный встроенный SIMD
Я использую следующее объявление объединения в SSE2. typedef unsigned long uli; typedef uli v4si __attribute__ ((vector_size(16))); typedef union { v4si v; uli data[2]; } uliv; uliv a, b, c; Идея состоит в том, чтобы...
1532 просмотров
schedule 13.01.2023

SIMD-код работает медленнее, чем скалярный код
elma и elmc оба unsigned long массивы. Таковы res1 и res2 . unsigned long simdstore[2]; __m128i *p, simda, simdb, simdc; p = (__m128i *) simdstore; for (i = 0; i < _polylen; i++) { u1 = (elma[i] >> l) & 15;...
3821 просмотров
schedule 15.03.2024

Помогите мне улучшить код SSE2
Я ищу помощь, чтобы улучшить этот код билинейного масштабирования sse2 на процессоре core2. На моем Atom N270 и i7 этот код примерно в 2 раза быстрее, чем код mmx. Но под процессором core2 он равен только коду mmx. Код следует void...
1031 просмотров
schedule 20.04.2023

потолок/пол в sse simd
Может ли кто-нибудь предложить быстрый способ вычисления float пола/потолка с использованием SIMD до SSE4.1? Мне нужно правильно обрабатывать все угловые случаи, например. когда у меня есть значение float , которое не может быть представлено...
2242 просмотров
schedule 07.05.2024

Есть ли хорошая SIMD-библиотека с малой матрицей двойной точности для x86?
Я ищу библиотеку SIMD, ориентированную на небольшие (4x4) матричные операции для графики. Там много одинарной точности, но мне нужно поддерживать как одинарную, так и двойную точность. Я посмотрел библиотеку Intel IPP MX, но я бы предпочел...
2926 просмотров
schedule 23.12.2022

Количество волновых фронтов, которые могут поместиться на SIMD
Я читаю статью о графическом процессоре AMD и меня смущает конкретный пример. Учитывая модуль SIMD с количеством регистров, сколько волновых фронтов может занимать SIMD, если для них требуется x количество регистров? В частности, если блок SIMD...
1424 просмотров
schedule 31.03.2022

Библиотека SIMD С++
Я использую Visual Studio с математической библиотекой DiretX XNA. Теперь я использую коллекцию компиляторов GNU. Посоветуйте SIMD математическую библиотеку с хорошей документацией.
2061 просмотров
schedule 06.12.2022

Пример реалистичной взаимоблокировки в CUDA/OpenCL
Для учебника, который я пишу, я ищу «реалистичный» и простой пример взаимоблокировки, вызванной незнанием SIMT/SIMD. Я придумал этот фрагмент, который кажется хорошим примером. Мы будем признательны за любой вклад. … int x = threadID / 2; if...
2944 просмотров