Russian Qt Forum
Ноябрь 23, 2024, 02:30
Добро пожаловать,
Гость
. Пожалуйста,
войдите
или
зарегистрируйтесь
.
Вам не пришло
письмо с кодом активации?
1 час
1 день
1 неделя
1 месяц
Навсегда
Войти
Начало
Форум
WIKI (Вики)
FAQ
Помощь
Поиск
Войти
Регистрация
Russian Qt Forum
>
Forum
>
Программирование
>
Общий
>
SSE
Страниц: [
1
]
Вниз
« предыдущая тема
следующая тема »
Печать
Автор
Тема: SSE (Прочитано 5938 раз)
Igors
Джедай : наставник для всех
Offline
Сообщений: 11445
SSE
«
:
Июнь 06, 2013, 16:22 »
Добрый день
Есть open-source приложение исходники которого решено задействовать. Приложение действительно показывает чудеса скорости за счет использования инструкций SSE. Однако при этом не видно никаких попыток разрулить SSE автоматом, при установке (ccmake) пользователю предлагается самому ввести. Напр по умолчанию SSE4.2, но собранное с ним приложение не работает на моей машине - нужно SSSE3, тогда все норм.
Можно накомпилить либов (по 1 на каждый тип SSE) и потом в runtime подсовывать нужную, но грамотно ли так делать? Вероятно проблема типовая, кто сталкивался - поделитесь опытом.
Спасибо
Записан
Serr500
Гость
Re: SSE
«
Ответ #1 :
Июнь 07, 2013, 19:46 »
Сам такое не писал,но часто работал с мультимедийными программами (типа рипперов, кодеков и т.п.). Там часта ситуация, когда SSE и MMX дают существенное (а то и многократное) ускорение. Для таких программ вполне нормальное явление - несколько библиотек, закомпиленных под разные наборы инструкций (MMX, SSE, 3DNow, SSE3, SSE4 и т.п). Программа при запуске получает флаги поддерживаемых инструкций и выбирает нужную библиотеку. Некоторые позволяют выбирать либы вручную (например, EncWAVtoAC3). А кодек h.264, насколько я понял, тащит внутри себя несколько вариантов функций с разными наборами инструкций и определив тип процессора, заполняет таблицу их адресов.
Записан
Igors
Джедай : наставник для всех
Offline
Сообщений: 11445
Re: SSE
«
Ответ #2 :
Июнь 16, 2013, 17:06 »
Поспрашивал на др форумах - ничего нового, да, надо иметь код "под каждый". Хорошо, тогда как лучше эту батарею компилить? Очевиден такой вариант:
- создать новую статик либу и насовать в нее таргетов (по 1 на каждый SSE), отличаются именами либы, экспортируемых ф-ций (через макро) и установкой SSE компилятора. Компилить это батчем, получится куча либов.
- из приложения определиться "какой SSE" в runtime и присвоить указатели на вызываемые ф-ции
Может как-то лучше, чтобы удобнее редактировать/отлаживать?
Записан
Old
Джедай : наставник для всех
Offline
Сообщений: 4350
Re: SSE
«
Ответ #3 :
Июнь 16, 2013, 19:43 »
Цитата: Igors от Июнь 16, 2013, 17:06
- создать новую статик либу
Зачем статик?
Лучше шаред сделать для каждого из SSE и загружать нужную. Символы будут одинаковые, загрузил, разрезолвил и пользуйся.
Записан
alex312
Хакер
Offline
Сообщений: 606
Re: SSE
«
Ответ #4 :
Июнь 16, 2013, 19:54 »
Единицей трансляции является *cpp файл, соответственно, каждый файл может быть скомпилирован со своими настройками.
И таким образом в одну библиотеку можно запихнуть все варианты.
Записан
Old
Джедай : наставник для всех
Offline
Сообщений: 4350
Re: SSE
«
Ответ #5 :
Июнь 16, 2013, 19:59 »
Цитата: alex312 от Июнь 16, 2013, 19:54
Единицей трансляции является *cpp файл, соответственно, каждый файл может быть скомпилирован со своими настройками.
И таким образом в одну библиотеку можно запихнуть все варианты.
А для чего?
Записан
alex312
Хакер
Offline
Сообщений: 606
Re: SSE
«
Ответ #6 :
Июнь 16, 2013, 20:25 »
Цитата: Old от Июнь 16, 2013, 19:59
А для чего?
Просто мне больше нравится вариант с одной библиотекой, в которой много функций на все случаи, чем с кучей библиотек, с одной функцией
Записан
Old
Джедай : наставник для всех
Offline
Сообщений: 4350
Re: SSE
«
Ответ #7 :
Июнь 16, 2013, 20:32 »
Цитата: alex312 от Июнь 16, 2013, 20:25
Просто мне больше нравится вариант с одной библиотекой, в которой много функций на все случаи, чем с кучей библиотек, с одной функцией
Для чего держать в памяти функции, которые никогда не будут выполняться на данной машине?
Записан
Igors
Джедай : наставник для всех
Offline
Сообщений: 11445
Re: SSE
«
Ответ #8 :
Июнь 17, 2013, 10:09 »
Цитата: Old от Июнь 16, 2013, 19:43
Зачем статик?
Лучше шаред сделать для каждого из SSE и загружать нужную. Символы будут одинаковые, загрузил, разрезолвил и пользуйся.
Разумно, но набегает 4-5 вариантов * 2 (под 32 и 64) и еще * 2 (OSX и Вындоуз). Для каждой беты перекомпилировать эту толпу... И постоянно переключать release/debug
Цитата: alex312 от Июнь 16, 2013, 19:54
Единицей трансляции является *cpp файл, соответственно, каждый файл может быть скомпилирован со своими настройками.
И таким образом в одну библиотеку можно запихнуть все варианты.
Лучше вообще "в одно приложение". Но я пока не нашел как сделать это в Xcode 4.6
Записан
Old
Джедай : наставник для всех
Offline
Сообщений: 4350
Re: SSE
«
Ответ #9 :
Июнь 17, 2013, 11:38 »
Цитата: Igors от Июнь 17, 2013, 10:09
Разумно, но набегает 4-5 вариантов * 2 (под 32 и 64) и еще * 2 (OSX и Вындоуз). Для каждой беты перекомпилировать эту толпу... И постоянно переключать release/debug
Печально, вы автоматическую сборку еще не освоили?
Тогда да, лучшее решение в одно приложение.
Записан
Igors
Джедай : наставник для всех
Offline
Сообщений: 11445
Re: SSE
«
Ответ #10 :
Июнь 17, 2013, 11:57 »
Цитата: Old от Июнь 17, 2013, 11:38
Печально, вы автоматическую сборку еще не освоили?
Я и на 4.6 пересел недавно с 3.2.6 и многие педали еще путаю. Если расскажете что то за "автоматическая" и как ее сделать в Xcode - буду признателен. Пока я не вижу как компилить серию файлов с разными установками кроме как создавать новый target(ы), что имеет свои минусы
Записан
Old
Джедай : наставник для всех
Offline
Сообщений: 4350
Re: SSE
«
Ответ #11 :
Июнь 17, 2013, 12:24 »
Цитата: Igors от Июнь 17, 2013, 11:57
Я и на 4.6 пересел недавно с 3.2.6 и многие педали еще путаю. Если расскажете что то за "автоматическая" и как ее сделать в Xcode - буду признателен. Пока я не вижу как компилить серию файлов с разными установками кроме как создавать новый target(ы), что имеет свои минусы
CMake & make
И вы сможете не то что разные файлы собирать с разными параметрами, а целые сборки получать всего одной командой: сказали make all и получили - демо версию, лайт версию, дебаг версию, личную версию, версию для друга Сени и т.д. Все будет красиво разложено по своим деревьям, архитектурам и чему надо.
Записан
Igors
Джедай : наставник для всех
Offline
Сообщений: 11445
Re: SSE
«
Ответ #12 :
Июнь 17, 2013, 12:33 »
Это я могу и с IDE получить (создав N таргетов), но так ли уж это удобно, особенно для повседневного редактирования?
Записан
Old
Джедай : наставник для всех
Offline
Сообщений: 4350
Re: SSE
«
Ответ #13 :
Июнь 17, 2013, 12:42 »
Цитата: Igors от Июнь 17, 2013, 12:33
Это я могу и с IDE получить (создав N таргетов), но так ли уж это удобно, особенно для повседневного редактирования?
Повседневного редактирования чего?
И тогда непонятна эта "проблема":
Цитата: Igors от Июнь 17, 2013, 10:09
Разумно, но набегает 4-5 вариантов * 2 (под 32 и 64) и еще * 2 (OSX и Вындоуз). Для каждой беты перекомпилировать эту толпу... И постоянно переключать release/debug
Записан
Страниц: [
1
]
Вверх
Печать
« предыдущая тема
следующая тема »
Перейти в:
Пожалуйста, выберите назначение:
-----------------------------
Qt
-----------------------------
=> Вопросы новичков
=> Уроки и статьи
=> Установка, сборка, отладка, тестирование
=> Общие вопросы
=> Пользовательский интерфейс (GUI)
=> Qt Quick
=> Model-View (MV)
=> Базы данных
=> Работа с сетью
=> Многопоточное программирование, процессы
=> Мультимедиа
=> 2D и 3D графика
=> OpenGL
=> Печать
=> Интернационализация, локализация
=> QSS
=> XML
=> Qt Script, QtWebKit
=> ActiveX
=> Qt Embedded
=> Дополнительные компоненты
=> Кладовая готовых решений
=> Вклад сообщества в Qt
=> Qt-инструментарий
-----------------------------
Программирование
-----------------------------
=> Общий
=> С/C++
=> Python
=> Алгоритмы
=> Базы данных
=> Разработка игр
-----------------------------
Компиляторы и платформы
-----------------------------
=> Linux
=> Windows
=> Mac OS X
=> Компиляторы
===> Visual C++
-----------------------------
Разное
-----------------------------
=> Новости
===> Новости Qt сообщества
===> Новости IT сферы
=> Говорилка
=> Юмор
=> Объявления
Загружается...