Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Показать сообщение отдельно
murderer
3318 / 1465 / 133
Регистрация: 06.10.2010
Сообщений: 3,217
28.07.2014, 15:50

Оптимизация кода с использование SIMD

28.07.2014, 15:50. Просмотров 574. Ответов 1
Метки (Все метки)

Ответ

На SSE 4.1 это вычисляется одной инструкцией dpps, вектора нужно выравнивать по границе 16 байт.

Добавлено через 1 час 44 минуты
Что-то вроде
C
1
2
3
4
5
6
7
8
9
10
11
#include <stdio.h>
#include <smmintrin.h>
 
void main(){
    #define dot(x,y)_mm_dp_ps(x,y,0x71).m128_f32[0]
 
    __m128 a={1.0f, 2.0f, 3.0f, 4.0f};
    __m128 b={2.0f, 2.0f, 3.0f, 4.0f};
 
    printf("%f",dot(a,b));
}
На выходе у MSVC вполне кошерный код
Assembler
1
2
3
movaps xmm0,[a]
movaps xmm1,[b]
dpps   xmm1,xmm0,71h
Хотя руками можно и проще записать
Assembler
1
2
movaps xmm0,[a]
dpps   xmm0,[b],71h


Вернуться к обсуждению:
Оптимизация кода с использование SIMD
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
28.07.2014, 15:50
Готовые ответы и решения:

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

Оптимизация кода
Покритикуйте, если не сложно. А еще очень интересно, как теперь это сделать в виде приложения на...

Оптимизация кода
Нужно очень сильно оптимизировать код, даже пусть с использованием потоков, если это возможно! ...

Оптимизация кода
Есть вот такой кусочек кода integer h (integer k,n) {return k–n*3 ;} . . . . . z = h (k1, n2) ;...

Оптимизация кода
Помогите оптимизировать код. суть программы такая, принимает на вход колличество бегунов и в...

1
Другие темы раздела
C++ Есть класс двусвязного списка(head,tail),как разделить его на два списка http://www.cyberforum.ru/cpp-beginners/thread1107932.html
Есть класс двусвязного списка(head,tail),как разделить его на два списка(отрицательные и положительные элементы) Как это сделать без выделения памяти?как я понимаю с указателями надо поработать.
C++ Вычислить сумму ряда, состоящего из N слагаемых, и вывести результат с M знаками после запятой Вычислить сумму ряда, состоящего из N слагаемых, и вывести результат с M знаками после запятой. http://www.cyberforum.ru/cpp-beginners/thread1107924.html
Биномиальные коэффициенты C++
Мне задали создать программу в которой Вводится 2 числа - n и k. И Необходимо вывести биномиальные коэффициенты. Но к сожалению Я не понял что такое "Биномиальные коэффициенты".
Сортировка по ключу одномерных массивов структур C++
Ключ: код детали. Методы сортировки: QuickSort и сортировка выбором.
C++ Назначение виртуальных методов класса http://www.cyberforum.ru/cpp-beginners/thread1107889.html
Что-то никак не могу разобраться с виртуальными методами классов. В учебниках пишут, что они нужны при наследовании для определения одной и той же функции в классах-наследниках со своим алгоритмом...
C++ Вывести имя и количество букв в фамилии.Вывести самое длинное слово Вывести имя и количество букв в фамилии.Вывести самое длинное слово и объясните по подробнее как вывести самое длинное слово подробнее
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru