Форум программистов, компьютерный форум CyberForum.ru

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

Войти
Регистрация
Восстановить пароль
Другие темы раздела
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
Что-то никак не могу разобраться с виртуальными методами классов. В учебниках пишут, что они нужны при наследовании для определения одной и той же функции в классах-наследниках со своим алгоритмом выполнения чего-либо. Вот у меня есть код: #include <iostream> using namespace std; class Object { public: virtual void TextVirtual() { cout << "Objects Virtual!" << endl; } void Text() { cout...
C++ Вывести имя и количество букв в фамилии.Вывести самое длинное слово Вывести имя и количество букв в фамилии.Вывести самое длинное слово и объясните по подробнее как вывести самое длинное слово подробнее

Показать сообщение отдельно
Heisenberg
44 / 45 / 3
Регистрация: 11.08.2010
Сообщений: 226

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

28.02.2014, 19:59. Просмотров 499. Ответов 1
Метки (Все метки)

Есть код

C++
1
2
3
4
inline double dot(const float* v1, const float* v2)
{
    return v1[0] * v2[0] + v1[1] * v2[1] + v1[2] * v2[2];
}
Переписал его вот так

C++
1
2
3
4
5
6
7
8
#define GET(res, i) _res.m128_f32[i]
inline double dot(const float* v1, const float* v2)
{
__m128 _one = {v1[0], v1[1], v1[2], 0.0f };
__m128 _two = {v2[0], v2[1], v2[2], 0.0f };
__m128 _res = _mm_mul_ps(_one, _two);
return GET(_res, 0) + GET(_res, 1) + GET(_res, 2);
}
По скорости получилось примерно одно и то же, по результатам этот вариант даже на пару % медленнее. Возможно ли его как-то оптимизировать еще?
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru