2015-03-04 6 views
2

L'utilisation de la fonction folle dans la bibliothèque C++ AMP m'a procuré un grand avantage de performance. Je me demandais s'il existe une fonction similaire pour C++ 11 régulière? Tout ce que j'ai trouvé sur googling était des trucs sur AVX intrinsèques mais je préfère les éviter car ils ne sont pas supportés universellement.Existe-t-il un moyen simple d'utiliser multiplier accumuler en C++?

En outre, ils semblent tous être faits pour traiter 4+ opérations folles en même temps et je ne suis pas sûr que la construction d'un environnement pour que cela se produise alors qu'en utilisant seulement 1 d'entre eux est même efficace.

+1

Voulez-vous dire quelque chose comme [inner_product] (http://en.cppreference.com/w/cpp/algorithm/inner_product)? – SirGuy

+2

Cela dépend de votre CPU et de votre compilateur, mais si votre CPU prend en charge FMA (par exemple Haswell) et que votre compilateur est à moitié décent, alors vous pouvez déjà être fusionné multiplier-accumuler. –

+2

Qu'attendez-vous? Une façon _portable_? Ne voyez-vous pas que c'est fortement dépendant de l'architecture? – Matt

Répondre