J'ai fouillé le web en vain. p>
Y a-t-il un moyen pour Xcode et Visual C ++ pour traiter des nombres dénormalisés comme 0? J'aurais pensé qu'il y a une option dans les préférences de l'IDE pour activer cette option mais ne peut sembler le trouver. P>
Je fais des trucs audio de plate-forme inter-plate-forme et je dois arrêter certains processeurs Hogging Resources. P>
acclamations p>
3 Réponses :
Vous recherchez un moyen défini par la plate-forme de définir FTZ et / ou Daz dans le registre MXCSR (sur X86 avec SSE ou X86-64); Voir https://stackoverflow.com/a/2487733/567292 p>
Habituellement, cela s'appelle quelque chose comme Vous pouvez également utiliser le _controlfp code>; Microsoft Documentation est chez http://msdn.microsoft.com/en-us/ Bibliothèque / E9B52CEH.ASPX P>
_mm_set_flush_zero_mode code> macro: http://msdn.microsoft.com/en-us/library/a8b5ts9s (v = vs.71) .aspx - Il s'agit probablement de la méthode portable la plus plate-forme. < / p>
Vous devez également définir des drapeaux de compilateur Visual Studio pour utiliser SSE: "/ arc: SSE2"
Pour désactiver les dénormaux mondiaux, j'utilise ces 2 macros: J'appelle le premier au début du processus et le second à la fin.
Malheureusement, cela semble ne pas fonctionner bien sur Windows. P> Pour flush Denormals localement, j'utilise ce p>
Pour ce faire, utilisez les macros Intel intrinsics pendant le démarrage du programme. Par exemple: dans ma version de MSVC, ceci émit le code d'assemblage suivant: p> MXCSR est le contrôle et le registre d'état, Et ce code est un bit de réglage 15, qui tourne flush zéro mode em> allumé. p> une chose à noter: cela n'affecte que les disormaux résultant d'un calcul. Si vous souhaitez également définir des denormals à zéro si elles sont utilisées comme Entrée em>, vous devez également définir le drapeau DAZ (Denormals est zéro), à l'aide de la commande suivante: P> _MM_SET_DENORMALS_ZERO_MODE(_MM_DENORMALS_ZERO_ON);