|
Как использовать SSE I-III под Visual C++ 6.0, ускорить функцию с помощью всяких MMX |
|
|
|
Jun 28 2005, 10:58
|
Местный
  
Группа: Свой
Сообщений: 216
Регистрация: 31-03-05
Из: Зеленоград
Пользователь №: 3 839

|
Помогите, плз, ссылкой или советом. Поставили задачу ускорить до безобразия функцию одну. Причем оптимизация должна быть произведена под P-IV и под Athlon. Говорят, используй технологии SSE-I, SSE-II, SSE-III, 3DNow! и т.п.
Можно ли это дело, все эти технологии, как-то в Visual C ++ 6.0 использовать? Так понимаю, нужно какой-н. ASM прикручивать к Visual особый. Встроенного асм-а ведь недостаточно будет. Подскажите, что и где взять и как начать. Нуно!!!!!!!
|
|
|
|
|
 |
Ответов
|
Jun 28 2005, 12:01
|
Знающий
   
Группа: Свой
Сообщений: 693
Регистрация: 21-06-05
Из: Санкт-Петербург
Пользователь №: 6 184

|
Цитата(Fast @ Jun 28 2005, 14:58) ...Подскажите, что и где взять и как начать. Нуно!!!!!!! для начала нужно разбить оптимизируемую функцию на простейшие (сложение, умножение, вычитание... и распараллерить. MMX и SSE позволяет производить обработку над несколькими байтами одновременно (напр. перемножить несколько байт, слов, удв. слов на константу) пример: Есть поток данных. Требуется уменьшить значения всех в два раза (если поток звука, мы уменьшаем громкость) -обычный проц будет принимать каждый байт и делить на два; -если исп. MMX, потребуется принять блок данных, а затем все это разделить (что делается одной командой). Кстати, какая функция? Может ее не возможно оптимизировать...
|
|
|
|
|
Jun 28 2005, 12:17
|
Местный
  
Группа: Свой
Сообщений: 216
Регистрация: 31-03-05
Из: Зеленоград
Пользователь №: 3 839

|
Цитата(bav @ Jun 28 2005, 15:01) для начала нужно разбить оптимизируемую функцию на простейшие (сложение, умножение, вычитание... и распараллерить... Это-то понятно. Мне нужно сделать, чтобы компилятор Visual C++ 6.0 понимал SSE инструкции - я их ручками писать собираюсь. А функция сегодня одна, завтра другая - сам голову буду ломать, как параллелить. В Инете копаюсь, вот что нашел: нужен Visual C++ 6.0 Processor Pack какой-то и там *.h определенные подключить в проекте. Правда, закачать пока не удается. Этот Processor Pack нужный MASM ставит. Во как. Или взять Visual.NET, там втроенная поддержка SSEI-II, говорят.
|
|
|
|
|
Jun 28 2005, 12:47
|
Местный
  
Группа: Свой
Сообщений: 216
Регистрация: 31-03-05
Из: Зеленоград
Пользователь №: 3 839

|
Цитата(bav @ Jun 28 2005, 15:27) можно и ее (Visual.NET)... там есть опции оптимизации под P4. попробуй. у меня такая стоит. вроде никаих проблем не возникало Эхехе. Оптимизация это хорошо, боюсь меня не спасет. Нужно будет все ручками и на ASM - скорость нужна, чтоб до безобразия быстро работала. Если у него (компилятора) быстрее выйдет, то конечно, сдамся, а сейчас помучаюсь пока... Выяснил, что нужен Service Pack 5 for Visual C++ 6.0 и Processor Pack for Service Pack 5. Вот как закручено. Что ж, сегодня попробую раздобыть и поставить, что получилось - завтра скажу.
|
|
|
|
|
Jul 1 2005, 12:47
|
Участник

Группа: Свой
Сообщений: 19
Регистрация: 12-04-05
Из: Таганрог, Ростовской обл.
Пользователь №: 4 048

|
Цитата(RVlad @ Jun 28 2005, 19:28) Думаю , что подойдет Intel C\C++ компилер. Он ,вроде-бы , умеет работать с inline -asm , который поддерживает расширенные наборы инструкции (во всяком случае для Intel проц-в). Intel-овский компилятор очень успешно работает с SSE. Можно заоптимизировать цикл близко к оптимальному используя лишь разные pragm-ы и написав цикл особым образом. Сам компилятор можно настроить, что б выдавал рекомендации и замечания к циклу, это помогает не гадать, почему он плохо компилирует, а сразу идти к результату. Есть интеловская библиотека работы с матрицами. Поэлементное умножение, солжение с умножением одного слагаемого на константу и т.п., FFT и т.п. - всё это сделано и очень круто заоптимизировано под любые SSE и MMX (можно настроить библиотеку, чтоб выбирала нужный вариант динамически при запуске или линковались версии жёстко на нужный варант процессора). Этот путь мне кажется более перспективным. Надо очень неплохо знать архитектуру современных процессоров, что б обставить компилятор (при условии того, что компилятор тебя понял).
|
|
|
|
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|