Когда я бегу простой цикл нагрузки, вычитать и умножать с помощью встроенных функций AVX Я постоянно получаю следующее сообщение об ошибке,Intel AVX ошибка умножения в C,
Process terminating with default action of signal 11 (SIGSEGV)
==2995== General Protection Fault
из кода C,
double res[4] = {0.0, 0.0, 0.0, 0.0};
for(int i = 0; i < 10; i++){
ymm0 = _mm256_loadu_pd(vector_a);
ymm1 = _mm256_loadu_pd(vector_b);
ymm2 = _mm256_sub_pd(ymm0, ymm1);
ymm4 = _mm256_mul_pd(ymm2, ymm2); <--- Valgrind terminated
_mm256_store_pd((double*)res, ymm4);
}
Может ли кто-нибудь помочь?
в настоящее время используют лязг с #include <immintrin.h>
==== ==== EDIT
Для уточнения, я загружая follwing значения,
double vector_a[4] = {0.145000, 1.145000, 2.145000, 3.145000};
double vector_b[4] = {0.145000, 1.145000, 2.145000, 3.145000};
Это грохот в магазине, а не размножается. – Mysticial
Убедитесь, что 'res' указывает правильное местоположение в памяти. –
double res [4] = {0,0,0,0,0,0,0,0}; <- будет ли это проблемой? – lukieleetronic