С наступающим Новым годом! Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Другие темы раздела
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++ Вывести имя и количество букв в фамилии.Вывести самое длинное слово Вывести имя и количество букв в фамилии.Вывести самое длинное слово и объясните по подробнее как вывести самое длинное слово подробнее
Heisenberg
44 / 45 / 15
Регистрация: 11.08.2010
Сообщений: 226
0

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

28.02.2014, 19:59. Просмотров 585. Ответов 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);
}
По скорости получилось примерно одно и то же, по результатам этот вариант даже на пару % медленнее. Возможно ли его как-то оптимизировать еще?

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

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

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

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

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

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

1
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru