Собственно говоря, речь пойдет о SIMD инструкциях.
Раньше в проекте делал несколько реализаций вручную и проверял какую версию поддерживает CPU,
потом просто компилировал с разными ключами DLL и таскал несколько версий за собой.
Сейчас надоело поддерживать весь этот зоопарк. Никак не решу, собирать с поддержкой SSE или SSE2?
Вроде как SSE у нас еще с Pentium3 идет и должен быть у всех?
I>Собственно говоря, речь пойдет о SIMD инструкциях.
I>Раньше в проекте делал несколько реализаций вручную и проверял какую версию поддерживает CPU, I>потом просто компилировал с разными ключами DLL и таскал несколько версий за собой.
I>Сейчас надоело поддерживать весь этот зоопарк. Никак не решу, собирать с поддержкой SSE или SSE2? I>Вроде как SSE у нас еще с Pentium3 идет и должен быть у всех?
Тебе так важна скорость? Некоторые ставят холостые задержки, чтобы показать, что программа что-то делает (читай: клиент не зря платит деньги), а ты разные билды делаешь.
Здравствуйте, Олег К., Вы писали:
ОК>Тебе так важна скорость? Некоторые ставят холостые задержки, чтобы показать, что программа что-то делает (читай: клиент не зря платит деньги), а ты разные билды делаешь.
В данном, конкретном случае — важна. SSE2 дает ускорение в 3-4 раза, с AVX еще не тестировал.
Собственно говоря — скорость как раз и является маркетинговым преимуществом. Я уже об OpenCL задумываюсь.
I>Сейчас надоело поддерживать весь этот зоопарк. Никак не решу, собирать с поддержкой SSE или SSE2?
если все так серьезно, то лучше не советы спрашивать, а собирать статистику. например, если программа проверяет обновления на сайте, то можно одним из параметров передать тип процессора, а на сайте собрать статистику и сделать выводы. статистику можно пихать сразу в google analytics, чтобы с БД не заморачиваться.
Здравствуйте, icezone, Вы писали:
I>Собственно говоря, речь пойдет о SIMD инструкциях.
I>Раньше в проекте делал несколько реализаций вручную и проверял какую версию поддерживает CPU, I>потом просто компилировал с разными ключами DLL и таскал несколько версий за собой.
I>Сейчас надоело поддерживать весь этот зоопарк. Никак не решу, собирать с поддержкой SSE или SSE2? I>Вроде как SSE у нас еще с Pentium3 идет и должен быть у всех?
Использую SSE/SSE2 и мозг себе не парю (ну и до кучи, Windows Vista SP1 как минимум). Не помню, чтобы кто-то за последние год-два жаловался.
Здравствуйте, ov, Вы писали:
ov>если все так серьезно, то лучше не советы спрашивать, а собирать статистику. например, если программа проверяет обновления на сайте, то можно одним из параметров передать тип процессора, а на сайте собрать статистику и сделать выводы. статистику можно пихать сразу в google analytics, чтобы с БД не заморачиваться.
Собирать статистику и делать выводы — на это надо время. Плюс надо учитывать динамику — через год все может поменяться.
Пока рассуждения такие — владелец компа со вторым пнем скорее всего денег не принесет.
На компе с Win7/8 проц не ниже P4, значит можно использовать SSE2 и забить на FPU/MMX.
Юзерам с WinXP предлагать старую версию.
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 можно начинать забивать. я все жду когда у меня юзеров на ХР станет меньше пяти процентов. пора бабушку закапывать...
Здравствуйте, ov, Вы писали:
ov>в свое время, кстати, получил прирост скорости порядка 30% в числодроблении просто пересборкой под 64 бита.
Вот это да! Не будучи программистом, думал, что разница между 32-битной и 64-битной версиями программы на 64-битной версии ОС — всего лишь единицы процентов. А оно вон как, оказывается...
Здравствуйте, ov, Вы писали:
ov>оно того стоит, на самом деле. во всех отношениях, не только в плане про процессоры узнать. и насчет динамики ты правильно подметил — нужны актуальные свежие данные по конкретно твоим пользователям. если есть код проверки обновлений, то добавить сбор статистики можно где-то минут за 20 без особого программирования, что на клиенте, что на сервере.
Я же говорю — идея возникла спонтанно. Код проверки уже поправил, в юзер-агент запихнул тип процессора.
ov>а чем компилируешь? а то в msdn вот интересные вещи пишут про VS2012: ov>оказывается я уже тоже давно юзаю SSE2 и тоже проблем не было
Delphi 2007 (вручную оптимизирую), VS2010(отключаю расширенные наборы).
ov>в свое время, кстати, получил прирост скорости порядка 30% в числодроблении просто пересборкой под 64 бита.
Ради 30% я бы дергаться не стал. Разница болжна быть заметной, раза в 2-3.
ov>у тебя шифрование или мультимедиа? если второе, то наверное на XP можно начинать забивать. я все жду когда у меня юзеров на ХР станет меньше пяти процентов. пора бабушку закапывать...
Всего помаленьку. Сейчас речь об обработке больших массивов и их визуализации.
Посмотрел статистику по OS, у меня 16% посетителей сидят на Vista/XP/2000.
Здравствуйте, Lazytech, Вы писали:
L>Вот это да! Не будучи программистом, думал, что разница между 32-битной и 64-битной версиями программы на 64-битной версии ОС — всего лишь единицы процентов. А оно вон как, оказывается...
В большинстве случаев разницы вообще не будет. Тут скорее речь о длинной математике или шифровании.
Здравствуйте, icezone, Вы писали:
I>В большинстве случаев разницы вообще не будет. Тут скорее речь о длинной математике или шифровании.
Есть одна 32-битная программа для обработки видео «на лету», способная загрузить центральный и (или) графический процессор по полной программе. Мне вот любопытно, не могут ли разработчики этой программы снизить нагрузку на ЦП и ГП, выпустив 64-битную версию?
Здравствуйте, Lazytech, Вы писали:
L>Есть одна 32-битная программа для обработки видео «на лету», способная загрузить центральный и (или) графический процессор по полной программе. Мне вот любопытно, не могут ли разработчики этой программы снизить нагрузку на ЦП и ГП, выпустив 64-битную версию?
Конечно же мне
Самый простой пример — криптография. Там арифметика в 32 бита не умещается, значит прирост точно будет.
Любые приложения, которым оперативки не хватало тоже получат прирост.
Здравствуйте, Lazytech, Вы писали:
ov>>в свое время, кстати, получил прирост скорости порядка 30% в числодроблении просто пересборкой под 64 бита.
L>Вот это да! Не будучи программистом, думал, что разница между 32-битной и 64-битной версиями программы на 64-битной версии ОС — всего лишь единицы процентов. А оно вон как, оказывается...
зависит от специфики. нормальный прирост — 10% за счёт большего числа регистров. в криптографии бывает до 10 раз за счёт 64-разрядных операций (знаю один алгоритм, вычисляющий сумму 64*64->128 проихведений — на x86 с 8 регистрами это тот ещё фокус), на плавучке выигрыш в несколько раз моджно получить просто за счёт того, что все x64 поддерживают sse2 и следжовательно можно задейстовать его вместо x87 fpu
Здравствуйте, icezone, Вы писали:
I>Сейчас надоело поддерживать весь этот зоопарк. Никак не решу, собирать с поддержкой SSE или SSE2? I>Вроде как SSE у нас еще с Pentium3 идет и должен быть у всех?
sse2. есть у всех x64, и у всех топовых cpu в последние 11 лет (и во всех прочих — лет 8). просто укажи в спеках проги и объясни недовольным что для 99.9% пользователей это повышает скорость в 2-3 раза. если есть вохможность сгенерить dll-ку для работы на старых процах — ещё лучше, они могут её просто вручную кинуть в каталог с программой
Здравствуйте, icezone, Вы писали:
I>В данном, конкретном случае — важна. SSE2 дает ускорение в 3-4 раза, с AVX еще не тестировал. I>Собственно говоря — скорость как раз и является маркетинговым преимуществом. Я уже об OpenCL задумываюсь.
ну блин ты даёшь. c++ amp, к примеру, позволяет очень легко писать под gpu. не говоря уж о avx, даже если ты вручную пишешь асм
Здравствуйте, icezone, Вы писали:
I>Сейчас надоело поддерживать весь этот зоопарк. Никак не решу, собирать с поддержкой SSE или SSE2? I>Вроде как SSE у нас еще с Pentium3 идет и должен быть у всех?
В таких вопросах лучше указывать, из какой области продукт. А то случаи разные бывают. Мы в клиентской части до сих пор используем костыли для работы на процессорах без инструкции CMOV, которую интел добавила в пентиум про
I>Сейчас надоело поддерживать весь этот зоопарк. Никак не решу, собирать с поддержкой SSE или SSE2? I>Вроде как SSE у нас еще с Pentium3 идет и должен быть у всех?
У меня так:
-std=c++0x -O2 -msse2 -ffp-contract=fast -fpic
И пока вроде никто не жаловался что не запускается. Хотя у некоторых ее WinXP, но у большенства уже Win8