реклама на сайте
подробности

 
 
> Как использовать SSE I-III под Visual C++ 6.0, ускорить функцию с помощью всяких MMX
Fast
сообщение Jun 28 2005, 10:58
Сообщение #1


Местный
***

Группа: Свой
Сообщений: 216
Регистрация: 31-03-05
Из: Зеленоград
Пользователь №: 3 839



Помогите, плз, ссылкой или советом.
Поставили задачу ускорить до безобразия функцию одну.
Причем оптимизация должна быть произведена под P-IV и под Athlon.
Говорят, используй технологии SSE-I, SSE-II, SSE-III, 3DNow! и т.п.

Можно ли это дело, все эти технологии, как-то в Visual C ++ 6.0 использовать? Так понимаю, нужно какой-н. ASM прикручивать к Visual особый. Встроенного асм-а ведь недостаточно будет.
Подскажите, что и где взять и как начать. Нуно!!!!!!!
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
bav
сообщение Jun 28 2005, 12:01
Сообщение #2


Знающий
****

Группа: Свой
Сообщений: 693
Регистрация: 21-06-05
Из: Санкт-Петербург
Пользователь №: 6 184



Цитата(Fast @ Jun 28 2005, 14:58)
...Подскажите, что и где взять и как начать. Нуно!!!!!!!
*


для начала нужно разбить оптимизируемую функцию на простейшие (сложение, умножение, вычитание... и распараллерить.
MMX и SSE позволяет производить обработку над несколькими байтами одновременно (напр. перемножить несколько байт, слов, удв. слов на константу)

пример:
Есть поток данных. Требуется уменьшить значения всех в два раза (если поток звука, мы уменьшаем громкость)
-обычный проц будет принимать каждый байт и делить на два;
-если исп. MMX, потребуется принять блок данных, а затем все это разделить (что делается одной командой).

Кстати, какая функция? Может ее не возможно оптимизировать... blush.gif
Go to the top of the page
 
+Quote Post
Fast
сообщение Jun 28 2005, 12:17
Сообщение #3


Местный
***

Группа: Свой
Сообщений: 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, говорят.
Go to the top of the page
 
+Quote Post
bav
сообщение Jun 28 2005, 12:27
Сообщение #4


Знающий
****

Группа: Свой
Сообщений: 693
Регистрация: 21-06-05
Из: Санкт-Петербург
Пользователь №: 6 184



можно и ее (Visual.NET)... там есть опции оптимизации под P4. попробуй. у меня такая стоит. вроде никаих проблем не возникало
Go to the top of the page
 
+Quote Post
Fast
сообщение Jun 28 2005, 12:47
Сообщение #5


Местный
***

Группа: Свой
Сообщений: 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. Вот как закручено. Что ж, сегодня попробую раздобыть и поставить, что получилось - завтра скажу.
Go to the top of the page
 
+Quote Post
RVlad
сообщение Jun 28 2005, 16:28
Сообщение #6


Частый гость
**

Группа: Свой
Сообщений: 135
Регистрация: 15-03-05
Пользователь №: 3 378



Думаю , что подойдет Intel C\C++ компилер. Он ,вроде-бы , умеет работать с
inline -asm , который поддерживает расширенные наборы инструкции (во всяком случае для Intel проц-в).
Go to the top of the page
 
+Quote Post
Eugeno
сообщение Jul 1 2005, 12:47
Сообщение #7


Участник
*

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



Цитата(RVlad @ Jun 28 2005, 19:28)
Думаю , что подойдет Intel C\C++ компилер. Он ,вроде-бы , умеет работать с
inline -asm , который поддерживает расширенные наборы инструкции (во всяком случае для Intel проц-в).
*

Intel-овский компилятор очень успешно работает с SSE. Можно заоптимизировать цикл близко к оптимальному используя лишь разные pragm-ы и написав цикл особым образом. Сам компилятор можно настроить, что б выдавал рекомендации и замечания к циклу, это помогает не гадать, почему он плохо компилирует, а сразу идти к результату.

Есть интеловская библиотека работы с матрицами. Поэлементное умножение, солжение с умножением одного слагаемого на константу и т.п., FFT и т.п. - всё это сделано и очень круто заоптимизировано под любые SSE и MMX (можно настроить библиотеку, чтоб выбирала нужный вариант динамически при запуске или линковались версии жёстко на нужный варант процессора).

Этот путь мне кажется более перспективным. Надо очень неплохо знать архитектуру современных процессоров, что б обставить компилятор (при условии того, что компилятор тебя понял).
Go to the top of the page
 
+Quote Post



Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 11th August 2025 - 21:28
Рейтинг@Mail.ru


Страница сгенерированна за 0.01591 секунд с 7
ELECTRONIX ©2004-2016