Официальный форум СВД Встраиваемые Системы
10 Декабря, 2016, 07:59:38 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.

Войти
 
 
 Сайт СВД ВС  Начало   Помощь Поиск Войти Регистрация  
Страниц: [1]   Вниз
  Печать  
Автор Тема: Как использовать Intel AVX на QNX 6.5.0?  (Прочитано 1062 раз)
Игорь Никитин
Интересующийся

Сообщений: 3


« : 05 Июня, 2013, 15:50:40 »

версия QNX 650;
версия QNX Momentics IDE 650SP1 для платформы Win32;

Всем привет!

Я с QNX не так давно знаком, в общем установил QNX Momentics IDE 650SP1 с компилятором GCC 4.4.2.

Написал минимальную программу для работы c Intel AVX:

Код:
#include <iostream>
#include <immintrin.h> // AVX instrinsics

int main( int argc, char** argv )
{
  __m256 var;
__m256 var2;
__m256 result;

var = _mm256_set1_ps(1.f);
var2 = _mm256_set1_ps(3.f);
result = _mm256_add_ps(var,var2);

return 0;
}

Программа выполняет сложение двух векторов AVX в вектор result.
При сборке программы QNX Momentics IDE выдает в логах следующие ошибки:

error: immitnrin.h: No such file or directory
In function 'int main(int, char**)':
error: '__m256' was not declared in this scope
error: expected ';' before 'var'
error: expected ';' before 'var2'
error: expected ';' before 'result'
error: 'var' was not declared in this scope
error: '_mm256_set1_ps' was not declared in this scope
error: 'var2' was not declared in this scope
error: 'result' was not declared in this scope
error: '_mm256_add_ps' was not declared in this scope


В чем может быть проблема, где можно прочитать о том, как работать с набором инструкций Intel AVX на QNX?
Записан
Олег Большаков
Администратор
Житель форума

Сообщений: 2934



WWW
« Ответ #1 : 05 Июня, 2013, 16:45:03 »

Здравствуйте!

Обратите внимание на первую строчку с ошибкой. Компилятор не может найти заголовочный файл immitnrin.h.

Насколько я знаю, для поддержки AVX требуется GCC 4.6. Также я не нашёл упоминания QNX в списке поддерживаемых платформ.
Записан

Игорь Никитин
Интересующийся

Сообщений: 3


« Ответ #2 : 05 Июня, 2013, 17:15:32 »

Здравствуйте!

Обратите внимание на первую строчку с ошибкой. Компилятор не может найти заголовочный файл immitnrin.h.

Насколько я знаю, для поддержки AVX требуется GCC 4.6. Также я не нашёл упоминания QNX в списке поддерживаемых платформ.


С заголовочным файлом, да, промашка вышла, корректно он называется "immintrin.h".
Я вот тоже думал раньше, что поддержка Intel AVX в GCC включена с версии 4.6, покапавшись в папках QNX Momentic IDE 650SP1 я нашел заголовочные файлы immintrin.h и предыдущих версий наборов инструкций в папке "C:\QNX650\host\win32\x86\usr\lib\gcc\i486-pc-nto-qnx6.5.0\4.4.2\include". Так же нашел пост на форуме Foundry27, в котором обсуждали проблему поддержки Intel AVX в QNX и вроде бы у них получилось скомпилировать программу с поддержкой AVX.

Пытался указать компилятору с помощью флага -I путь к заголовочным файлам, тоже ничего не вышло.

Спасибо за ответ!
Записан
Олег Большаков
Администратор
Житель форума

Сообщений: 2934



WWW
« Ответ #3 : 05 Июня, 2013, 19:41:57 »

Игорь, для компиляции Вашего кода укажите ключ -mavx.
Записан

Игорь Никитин
Интересующийся

Сообщений: 3


« Ответ #4 : 06 Июня, 2013, 11:28:21 »

Игорь, для компиляции Вашего кода укажите ключ -mavx.


Указал ключ -mavx, все собралось, но при выполнении программы отладчик выдает сообщение (SIGILL "illegal instruction") при выполнении первой инструкции Intel AVX.
Видимо придется сконфигурировать ядро системы для работы с SIMD инструкциями...
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  

Powered by MySQL Powered by PHP © 2002-2016 СВД Встраиваемые Системы.
При использовании материалов сайта ссылка на forum.kpda.ru обязательна.

Powered by SMF 1.1.21 | SMF © 2015, Simple Machines | © Aiwan. Kolobok smiles | Sitemap
Valid XHTML 1.0! Valid CSS!
Сайт СВД ВС

В последний раз google посещал эту страницу 02 Декабря, 2016, 15:13:29