Какие оптимизации использовать в релизе?
От: icezone  
Дата: 29.07.14 00:58
Оценка:
Собственно говоря, речь пойдет о SIMD инструкциях.

Раньше в проекте делал несколько реализаций вручную и проверял какую версию поддерживает CPU,
потом просто компилировал с разными ключами DLL и таскал несколько версий за собой.

Сейчас надоело поддерживать весь этот зоопарк. Никак не решу, собирать с поддержкой SSE или SSE2?
Вроде как SSE у нас еще с Pentium3 идет и должен быть у всех?
Re: Какие оптимизации использовать в релизе?
От: Олег К.  
Дата: 29.07.14 03:03
Оценка: 2 (1) :)
I>Собственно говоря, речь пойдет о SIMD инструкциях.

I>Раньше в проекте делал несколько реализаций вручную и проверял какую версию поддерживает CPU,

I>потом просто компилировал с разными ключами DLL и таскал несколько версий за собой.

I>Сейчас надоело поддерживать весь этот зоопарк. Никак не решу, собирать с поддержкой SSE или SSE2?

I>Вроде как SSE у нас еще с Pentium3 идет и должен быть у всех?

Тебе так важна скорость? Некоторые ставят холостые задержки, чтобы показать, что программа что-то делает (читай: клиент не зря платит деньги), а ты разные билды делаешь.
Re[2]: Какие оптимизации использовать в релизе?
От: icezone  
Дата: 29.07.14 03:26
Оценка:
Здравствуйте, Олег К., Вы писали:

ОК>Тебе так важна скорость? Некоторые ставят холостые задержки, чтобы показать, что программа что-то делает (читай: клиент не зря платит деньги), а ты разные билды делаешь.


В данном, конкретном случае — важна. SSE2 дает ускорение в 3-4 раза, с AVX еще не тестировал.
Собственно говоря — скорость как раз и является маркетинговым преимуществом. Я уже об OpenCL задумываюсь.
Re: Какие оптимизации использовать в релизе?
От: ov  
Дата: 29.07.14 03:38
Оценка: +1
I>Сейчас надоело поддерживать весь этот зоопарк. Никак не решу, собирать с поддержкой SSE или SSE2?

если все так серьезно, то лучше не советы спрашивать, а собирать статистику. например, если программа проверяет обновления на сайте, то можно одним из параметров передать тип процессора, а на сайте собрать статистику и сделать выводы. статистику можно пихать сразу в google analytics, чтобы с БД не заморачиваться.
Re: Какие оптимизации использовать в релизе?
От: CyberDemon Россия  
Дата: 29.07.14 04:06
Оценка: 3 (1)
Здравствуйте, icezone, Вы писали:

I>Собственно говоря, речь пойдет о SIMD инструкциях.


I>Раньше в проекте делал несколько реализаций вручную и проверял какую версию поддерживает CPU,

I>потом просто компилировал с разными ключами DLL и таскал несколько версий за собой.

I>Сейчас надоело поддерживать весь этот зоопарк. Никак не решу, собирать с поддержкой SSE или SSE2?

I>Вроде как SSE у нас еще с Pentium3 идет и должен быть у всех?

Использую SSE/SSE2 и мозг себе не парю (ну и до кучи, Windows Vista SP1 как минимум). Не помню, чтобы кто-то за последние год-два жаловался.
Re[2]: Какие оптимизации использовать в релизе?
От: icezone  
Дата: 29.07.14 05:19
Оценка:
Здравствуйте, ov, Вы писали:

ov>если все так серьезно, то лучше не советы спрашивать, а собирать статистику. например, если программа проверяет обновления на сайте, то можно одним из параметров передать тип процессора, а на сайте собрать статистику и сделать выводы. статистику можно пихать сразу в google analytics, чтобы с БД не заморачиваться.


Собирать статистику и делать выводы — на это надо время. Плюс надо учитывать динамику — через год все может поменяться.

Пока рассуждения такие — владелец компа со вторым пнем скорее всего денег не принесет.
На компе с Win7/8 проц не ниже P4, значит можно использовать SSE2 и забить на FPU/MMX.
Юзерам с WinXP предлагать старую версию.
Re[3]: Какие оптимизации использовать в релизе?
От: ov  
Дата: 29.07.14 05:40
Оценка: 6 (1)
I>Собирать статистику и делать выводы — на это надо время. Плюс надо учитывать динамику — через год все может поменяться.

оно того стоит, на самом деле. во всех отношениях, не только в плане про процессоры узнать. и насчет динамики ты правильно подметил — нужны актуальные свежие данные по конкретно твоим пользователям. если есть код проверки обновлений, то добавить сбор статистики можно где-то минут за 20 без особого программирования, что на клиенте, что на сервере.

I>На компе с Win7/8 проц не ниже P4, значит можно использовать SSE2 и забить на FPU/MMX.


а чем компилируешь? а то в msdn вот интересные вещи пишут про VS2012:

Because the x86 compiler generates code that uses SSE2 instructions by default, you must specify /arch:IA32 to disable generation of SSE and SSE2 instructions for x86 processors.


оказывается я уже тоже давно юзаю SSE2 и тоже проблем не было

в свое время, кстати, получил прирост скорости порядка 30% в числодроблении просто пересборкой под 64 бита.

I>Юзерам с WinXP предлагать старую версию.


у тебя шифрование или мультимедиа? если второе, то наверное на XP можно начинать забивать. я все жду когда у меня юзеров на ХР станет меньше пяти процентов. пора бабушку закапывать...
Re[4]: Какие оптимизации использовать в релизе?
От: Lazytech Ниоткуда  
Дата: 29.07.14 06:21
Оценка:
Здравствуйте, ov, Вы писали:

ov>в свое время, кстати, получил прирост скорости порядка 30% в числодроблении просто пересборкой под 64 бита.


Вот это да! Не будучи программистом, думал, что разница между 32-битной и 64-битной версиями программы на 64-битной версии ОС — всего лишь единицы процентов. А оно вон как, оказывается...
Re[4]: Какие оптимизации использовать в релизе?
От: icezone  
Дата: 29.07.14 10:26
Оценка:
Здравствуйте, ov, Вы писали:

ov>оно того стоит, на самом деле. во всех отношениях, не только в плане про процессоры узнать. и насчет динамики ты правильно подметил — нужны актуальные свежие данные по конкретно твоим пользователям. если есть код проверки обновлений, то добавить сбор статистики можно где-то минут за 20 без особого программирования, что на клиенте, что на сервере.


Я же говорю — идея возникла спонтанно. Код проверки уже поправил, в юзер-агент запихнул тип процессора.

ov>а чем компилируешь? а то в msdn вот интересные вещи пишут про VS2012:

ov>оказывается я уже тоже давно юзаю SSE2 и тоже проблем не было

Delphi 2007 (вручную оптимизирую), VS2010(отключаю расширенные наборы).

ov>в свое время, кстати, получил прирост скорости порядка 30% в числодроблении просто пересборкой под 64 бита.


Ради 30% я бы дергаться не стал. Разница болжна быть заметной, раза в 2-3.

ov>у тебя шифрование или мультимедиа? если второе, то наверное на XP можно начинать забивать. я все жду когда у меня юзеров на ХР станет меньше пяти процентов. пора бабушку закапывать...


Всего помаленьку. Сейчас речь об обработке больших массивов и их визуализации.
Посмотрел статистику по OS, у меня 16% посетителей сидят на Vista/XP/2000.
Re[5]: Какие оптимизации использовать в релизе?
От: icezone  
Дата: 29.07.14 10:27
Оценка: 2 (1)
Здравствуйте, Lazytech, Вы писали:

L>Вот это да! Не будучи программистом, думал, что разница между 32-битной и 64-битной версиями программы на 64-битной версии ОС — всего лишь единицы процентов. А оно вон как, оказывается...


В большинстве случаев разницы вообще не будет. Тут скорее речь о длинной математике или шифровании.
Re[6]: Какие оптимизации использовать в релизе?
От: Lazytech Ниоткуда  
Дата: 29.07.14 10:43
Оценка:
Здравствуйте, icezone, Вы писали:

I>В большинстве случаев разницы вообще не будет. Тут скорее речь о длинной математике или шифровании.


Есть одна 32-битная программа для обработки видео «на лету», способная загрузить центральный и (или) графический процессор по полной программе. Мне вот любопытно, не могут ли разработчики этой программы снизить нагрузку на ЦП и ГП, выпустив 64-битную версию?
Re[6]: Какие оптимизации использовать в релизе?
От: Lazytech Ниоткуда  
Дата: 29.07.14 10:53
Оценка:
Здравствуйте, icezone, Вы писали:

I>В большинстве случаев разницы вообще не будет. Тут скорее речь о длинной математике или шифровании.


Форумная тема трехлетней давности:
Просмотр видео на компьютере с эффектом плавности движений (Trimension DNM, MSU FRC, MVTools и др.) (часть 2) [117] — Конференция iXBT.com

Noweol:

Никакой скорости 64 бита не прибавляют, доказано многочисленными тестами. Только позволяют использовать приложению >2Гб оперативы и всё.



djonline:

Прибавляет, 10%, на примере x264. Но только если очень сильно оптимизировать на ASM и использовать удвоенное количество регистров в качестве стека.



Кому верить?
Re[7]: Какие оптимизации использовать в релизе?
От: icezone  
Дата: 29.07.14 11:17
Оценка: 2 (1)
Здравствуйте, Lazytech, Вы писали:

L>Есть одна 32-битная программа для обработки видео «на лету», способная загрузить центральный и (или) графический процессор по полной программе. Мне вот любопытно, не могут ли разработчики этой программы снизить нагрузку на ЦП и ГП, выпустив 64-битную версию?


Нет, тут или SIMD или через видеокарту.
Re[7]: Какие оптимизации использовать в релизе?
От: icezone  
Дата: 29.07.14 11:24
Оценка: 4 (1)
Здравствуйте, Lazytech, Вы писали:

L>Кому верить?


Конечно же мне
Самый простой пример — криптография. Там арифметика в 32 бита не умещается, значит прирост точно будет.
Любые приложения, которым оперативки не хватало тоже получат прирост.
Re[5]: Какие оптимизации использовать в релизе?
От: BulatZiganshin  
Дата: 29.07.14 15:12
Оценка: 4 (1)
Здравствуйте, Lazytech, Вы писали:

ov>>в свое время, кстати, получил прирост скорости порядка 30% в числодроблении просто пересборкой под 64 бита.


L>Вот это да! Не будучи программистом, думал, что разница между 32-битной и 64-битной версиями программы на 64-битной версии ОС — всего лишь единицы процентов. А оно вон как, оказывается...


зависит от специфики. нормальный прирост — 10% за счёт большего числа регистров. в криптографии бывает до 10 раз за счёт 64-разрядных операций (знаю один алгоритм, вычисляющий сумму 64*64->128 проихведений — на x86 с 8 регистрами это тот ещё фокус), на плавучке выигрыш в несколько раз моджно получить просто за счёт того, что все x64 поддерживают sse2 и следжовательно можно задейстовать его вместо x87 fpu
Люди, я люблю вас! Будьте бдительны!!!
Re[7]: Какие оптимизации использовать в релизе?
От: BulatZiganshin  
Дата: 29.07.14 15:13
Оценка: +1 :)
Здравствуйте, Lazytech, Вы писали:

L>Есть одна 32-битная программа для обработки видео «на лету»


думаю они и без нас давно разобрались
Люди, я люблю вас! Будьте бдительны!!!
Re: Какие оптимизации использовать в релизе?
От: BulatZiganshin  
Дата: 29.07.14 15:18
Оценка: 7 (2)
Здравствуйте, icezone, Вы писали:

I>Сейчас надоело поддерживать весь этот зоопарк. Никак не решу, собирать с поддержкой SSE или SSE2?

I>Вроде как SSE у нас еще с Pentium3 идет и должен быть у всех?

sse2. есть у всех x64, и у всех топовых cpu в последние 11 лет (и во всех прочих — лет 8). просто укажи в спеках проги и объясни недовольным что для 99.9% пользователей это повышает скорость в 2-3 раза. если есть вохможность сгенерить dll-ку для работы на старых процах — ещё лучше, они могут её просто вручную кинуть в каталог с программой
Люди, я люблю вас! Будьте бдительны!!!
Re[3]: Какие оптимизации использовать в релизе?
От: BulatZiganshin  
Дата: 29.07.14 15:20
Оценка: 6 (1)
Здравствуйте, icezone, Вы писали:

I>В данном, конкретном случае — важна. SSE2 дает ускорение в 3-4 раза, с AVX еще не тестировал.

I>Собственно говоря — скорость как раз и является маркетинговым преимуществом. Я уже об OpenCL задумываюсь.

ну блин ты даёшь. c++ amp, к примеру, позволяет очень легко писать под gpu. не говоря уж о avx, даже если ты вручную пишешь асм
Люди, я люблю вас! Будьте бдительны!!!
Re: Какие оптимизации использовать в релизе?
От: /aka/ СССР  
Дата: 29.07.14 17:22
Оценка: -1
Здравствуйте, icezone, Вы писали:

I>Сейчас надоело поддерживать весь этот зоопарк. Никак не решу, собирать с поддержкой SSE или SSE2?

I>Вроде как SSE у нас еще с Pentium3 идет и должен быть у всех?

В таких вопросах лучше указывать, из какой области продукт. А то случаи разные бывают. Мы в клиентской части до сих пор используем костыли для работы на процессорах без инструкции CMOV, которую интел добавила в пентиум про
Re: Какие оптимизации использовать в релизе?
От: nen777w  
Дата: 29.07.14 21:12
Оценка: 3 (1)
I>Сейчас надоело поддерживать весь этот зоопарк. Никак не решу, собирать с поддержкой SSE или SSE2?
I>Вроде как SSE у нас еще с Pentium3 идет и должен быть у всех?

У меня так:

-std=c++0x -O2 -msse2 -ffp-contract=fast -fpic


И пока вроде никто не жаловался что не запускается. Хотя у некоторых ее WinXP, но у большенства уже Win8
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.