2013-04-29 6 views
0

Я пытаюсь оптимизировать некоторые операции с целочисленным (_int64) с помощью AVX. Однако я не могу даже просто добавить операцию. Он продолжает говорить мне незаконную инструкцию. Pls можно мне исправить, что я делаю неправильно? БлагодаряВыполнение целочисленной операции AVX

for (int i = 0; i < 1; i+=4) 
{ 
    __m256i rA, rB, rC; 
    __m256i *iu, *ju, *ku; 

    iu = (__m256i *)(MatrixAiB1 + i); 
    ju = (__m256i *)(MatrixAjB1+ i); 
    ku = (__m256i *) (store+ i); 

    rA=_mm256_load_si256(iu); 
    rB=_mm256_load_si256(ju); 
    rC=_mm256_add_epi16(rA,rB); 
    _mm256_store_si256(ku,rC); 

} 
+0

посмотрите на cpuid: [здесь] (http://msdn.microsoft.com/en-us/library/hskdteyh (v = vs.100) .aspx) или [здесь] (http: // en .wikipedia.org/wiki/CPUID) – neagoegab

ответ

5

Вы используете инструкции из набора AVX 2 команд, которые не очень широко поддерживается. Исключение незаконной инструкции указывает, что вы используете код на машине, которая не поддерживает эти инструкции.

Эти инструкции впервые представлены в процессорах Haswell в этом году, поэтому «не поддерживается широко» в настоящее время означает «не поддерживается общедоступным процессором».

+0

Thnks много. Необходимо подтвердить – FrancFine

Смежные вопросы