Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 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
14-55744
vopros
2003-06-30 11:49
2003.07.17
Какую карту видео лучше купитб до 90$


14-55832
APTEMKA
2003-06-30 23:55
2003.07.17
можно ли определить сходу, принадлежит к Фибоначи


3-55386
Free_User
2003-06-23 12:17
2003.07.17
Disconnect


3-55477
Move
2003-06-23 11:08
2003.07.17
Соединение с MySQL-сервером


14-55815
Kiril
2003-07-01 00:53
2003.07.17
Можно попробовать заработать...





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский