J’essaie d’effacer l’indicateur de division par virgule flottante par zéro pour ignorer cette exception. J’attends qu’avec le drapeau défini (aucun changement du comportement par défaut je crois, et commenté ci-dessous), mon gestionnaire d’erreurs se déclenche. Cependant, _mm_div_ss ne semble pas élever SIGFPE. Des idées? #include #include #include #include static void sigaction_sfpe(int signal, siginfo_t *si, void […]
J’ai implémenté une fonction inline ( _mm256_concat_epi16 ). Il concatène deux vecteurs AVX2 contenant des valeurs 16 bits. Cela fonctionne bien pour les 8 premiers chiffres. Si je veux l’utiliser pour le rest du vecteur, je devrais changer d’implémentation. Mais il serait préférable d’utiliser une seule fonction inline dans mon programme principal. La question qui […]
Résumé rapide: J’ai un tableau de valeurs 24 bits. Avez-vous des suggestions pour développer rapidement les éléments de tableau individuels 24 bits en éléments 32 bits? Détails: Je traite les images vidéo entrantes en temps réel à l’aide de Pixel Shaders dans DirectX 10. Un problème est que mes images proviennent du matériel de capture […]
J’essaye de comstackr un programme C en utilisant cmake qui utilise les composants insortingnsèques de SIMD. Quand j’essaye de le comstackr, j’obtiens deux erreurs / usr / lib / gcc / x86_64-linux-gnu / 5 / include / smminsortingn.h : 326: 1: erreur: l’inlining a échoué dans l’appel à always_inline ‘_mm_mullo_epi32’: déséquilibre d’option spécifique à la […]
Ceci est une vue plus simple de mon problème. Je souhaite convertir une valeur float en type défini v4si (je souhaite utiliser l’opération SIMD pour l’optimisation.) Veuillez aider à convertir les valeurs float / double en un type défini. #include typedef double v4si __atsortingbute__ ((vector_size (16))); int main() { double stoptime=36000; float x =0.5*stoptime; float […]
Je dois effectuer une élimination gaussienne à l’aide de SSE et je ne sais pas comment accéder à chaque élément (32 bits) à partir des registres de 128 bits (chacun d’entre eux stockant 4 éléments). C’est le code original (sans utiliser SSE): unsigned int i, j, k; for (i = 0; i < num_elements; i […]
Pourquoi _mm_extract_ps renvoie-t-il un int au lieu d’un float ? Quelle est la bonne façon de lire un seul float partir d’un registre XMM en C? Ou plutôt, une autre façon de demander est la suivante: quel est le contraire de l’instruction _mm_set_ps ?
Si j’ai un registre AVX contenant 4 doublons et que je souhaite stocker l’inverse de celui-ci dans un autre registre, est-il possible de le faire avec une seule commande insortingnsèque? Par exemple: si j’avais 4 flotteurs dans un registre SSE, je pourrais utiliser: _mm_shuffle_ps(A,A,_MM_SHUFFLE(0,1,2,3)); Puis-je faire cela en utilisant, peut-être _mm256_permute2f128_pd() ? Je ne pense […]
J’essaie d’optimiser mon code en utilisant les éléments insortingnsèques de SSE, mais je rencontre un problème pour lequel je ne connais pas de moyen d’extraire les valeurs entières d’un vecteur après avoir effectué les opérations insortingnsèques de SSE pour obtenir ce que je veux. Est-ce que quelqu’un connaît un bon moyen de faire cela? Je […]
Comment puis-je écrire une version portable de vecteurs intégrés GNU C , qui ne dépend pas de l’insortingnsèque x86 set1? typedef uint16_t v8su __atsortingbute__((vector_size(16))); v8su set1_u16_x86(uint16_t scalar) { return (v8su)_mm_set1_epi16(scalar); // cast needed for gcc } Il doit sûrement y avoir un meilleur moyen que v8su set1_u16(uint16_t s) { return (v8su){s,s,s,s, s,s,s,s}; } Je ne […]