Текущий архив: 2003.07.17;
Скачать: CL | DM;
ВнизПоддержка SIMD Найти похожие ветки
← →
VMcL (2003-05-07 13:53) [0]Предисловие:
Насколько мне известно, для того, чтобы определить поддержку SIMD инструкций (MMX, 3DNow!, SSE и т. д.) нужно проверить соответствующие флаги процессора. Но: поскольку такие инструкции, как SSE, SSE2, появились относительно недавно, в мультизадачных средах, которые работают в Protected Mode, нужно проверять ещё поддержку данных инструкций операционной системой, то есть применяя try/except. Пробовал и в Win2K, и в WinXP протестировать таким образом поддержку SSE (команды movups, addps) (на соответствующих CPU, естественно :) — везде Exception.
Собственно вопросы:
Есть ли в этих ОС поддержка SSE, может я что-то неверно сделал? Если нет, можно ли их как-то пропатчить (Service Pack и т. п.), чтобы оная появилась.
← →
Digitman (2003-05-07 14:14) [1]
> проверять ещё поддержку данных инструкций операционной системой,
> то есть применяя try/except
при чем здесь ОС ? если какая-либо инструкция из какого-либо (потенциально присутствующего) расширения системы команд не может быть выполнена процессором, то генерируется прерывание, и его обработка - стандартна для ОС, вне зависимости от инструкции.
try..except же - лишь Паскаль-"оболочка" механизма низкоуровневого перехвата/обработки/раскрутки исключения
возможно, тебе следует обратить более серьезное внимание на существующие библиотеки (например, от Intel), которые реализуют достаточно серьезные и сложные алгоритмы с высокоэффективным использованием тех или иных расширений системы команд процессора. Например, Intel MKL (math kernel library), Intel SPL (signal processing library). Все , что от тебя потребуется в дан.случае для реализации проверки - вызов экспортируемых этими библ-ками ф-ций, отвечающих за инициализацию. В ходе инициализации как правило и выполняется проверка на доступность того или иного расширенного набора инструкций, и, если инициализация не выполнена успешно, тебе об этом будет сообщено кодом отказа, в т.ч. - и отказа по невозможности задействовать конкретные расширения системы команд.
← →
VMcL (2003-05-07 14:57) [2]Мне нужно написать это самому, не используя внешние библиотеки.
Поэтому:
1. "Intel MKL" не конает :(
2. try/except я использую, потому что хочу в своей программе узнать, есть ли поддержка SSE (например), и в зависимости от этого или использовать SSE или нет, а не тупо получать "SomeProgram.exe generated an error"
3. Метод с try/except описан в документации как необходимый после проверки процессора, и приведенные библиотеки, IMHO, делают то же самое.
← →
Digitman (2003-05-08 09:29) [3]зайди-ка ты на сайт к Intel"у да скачай себе PDF-мануал
"Intel Architecture Software developer"s Manual. Volume 2: Instruction Set Reference"
в разделе 3.1.10 ("SIMD Floating-Point Exceptions) подробно описаны исключения, генерируемые ЦП при работе с инструкциями расширения
← →
VMcL (2003-05-08 13:58) [4]Digitman,
именно про ЭТУ документацию я и писал (07.05.03 14:57).
А также у меня есть часть 1 и 3 плюс рекомендации по оптимизации.
Так вот. Я уже сам разобрался сегодня утром (за 10 минут:)
Проблема была только в том, что я не выровнял данные по границе 16 байт в команде addps. А SSE, как оказалось, понимаеь даже :) Win98 SE
← →
Digitman (2003-05-08 15:06) [5]ну а почему бы Маздаю и не "уметь" обрабатывать как минимум такие исключения ? не понимаю ... что в этом - нонсенс ?
← →
VMcL (2003-05-08 18:20) [6]При чём здесь УМЕТЬ обрабатывать исключения?
Было бы неплохо, Digitman, сначала внимательно прочитать мои посты, а потом писать ответы. А то получается, я говорю об арифметике, а Вы о геометрии :)
← →
?! (2003-05-09 09:26) [7]Удалено модератором
Страницы: 1 вся ветка
Текущий архив: 2003.07.17;
Скачать: CL | DM;
Память: 0.46 MB
Время: 0.007 c