Покупка процессора - два ядра или четыре?

Всего 65 сообщ. | Показаны 21 - 40
Re[Xuman]:
Цитата:
от: Xuman
а вы загрузите в фотошоп файл метров на 20 с 300 dpi и примените к нему какой-либо фильтр.... вот тут и увидите, чем 2 ядра отличаются от 4-х))))

На любом произвольном фильтре? Многие ли из фильтров распараллеливают вычисления (я честно не знаю, какие-то - точно, но явно не все).
Учитывая возможную драку ядер за доступ к памяти - гадание неуместно - надо нормально тестировать на одном железе. Разницы между 2 и 4 может не оказаться, как её практически не оказалось между 4 и 8 в упоминавшихся мной тестах. С другой стороны 4 хуже чем 2 не будет, лучше - вполне может, а цена вопроса - копейки. Я бы лично купил 4 ядра и сидел бы довольный.
Re[тФЧФР]:
Цитата:
от: тФЧФР

Фоторепортаж 150 кадров: запускаем DPP RAW->TIFF, это уже мои два ядра загружены и минут 15 работы.

А точно ядра загружены? Может они отдыхают пока диск трудится? Но в целом вы правы. Это я посмотрел с точки зрения человека не обрабатывающего десятки-сотни картинок за раз.
Re[Николай Смородин]:
Летом я договорился со сборщиком и пришел к нему в цех, где установил свою ХУ-3 и с секундомером проверил "как оно". Только после этого взял именно четырех-ядерник. Кроме того "завтра" софт может получить апдейт под все N-ядер и тогда преимущество кол-ва ядер будет очевидным.
Re[0x7777]:
Цитата:

от:0x7777
На любом произвольном фильтре? Многие ли из фильтров распараллеливают вычисления (я честно не знаю, какие-то - точно, но явно не все).
Учитывая возможную драку ядер за доступ к памяти - гадание неуместно - надо нормально тестировать на одном железе. Разницы между 2 и 4 может не оказаться, как её практически не оказалось между 4 и 8 в упоминавшихся мной тестах. С другой стороны 4 хуже чем 2 не будет, лучше - вполне может, а цена вопроса - копейки. Я бы лично купил 4 ядра и сидел бы довольный.

Подробнее


вы бы не мешали все в кучу... двухпроцессорную мать с двумя двухядерниками, заточенную на стабильность преде всего... а однопроцессорный сокет на 4 ядра...
у вас наверное и память стоит с ECC?

про какую оптимизацию фильтов вы говорите? по вашему, если Фотошоп запустить на одном ядре, то просчет будет работать на одном... если запустить на двух, то Фотошоп еще подумает, запускать фильтр на двух или на одном ядре... а если его запустить на 4 ядрах, то он воообще разорвется на части в раздумьях, сколько же ему ядер использовать для конретного фильтра? 1 или 4?
а вдруг он еще мысли юзера за помпом угадывает???
не смешите меня про избирательное использование фильтров Фопом :D

прога либо имеет оптимизацию под 2 (4) ядра либо не имеет... как говорят юристы - "Четвертого не дано!"
Re[Xuman]:
Цитата:
от: Xuman
вы бы не мешали все в кучу... двухпроцессорную мать с двумя двухядерниками, заточенную на стабильность преде всего... а однопроцессорный сокет на 4 ядра...
у вас наверное и память стоит с ECC?

Да. И ещё Fully Buffered, и ещё чего-то и ещё чего-то. Быстрая в общем. Но самая быстрая память всё равно медленнее процессора. И если много ядер захотят одновременно активно обращаться к памяти, то она станет узким местом. Чем больше ядер - тем выше вероятность.
Цитата:

от:Xuman

про какую оптимизацию фильтов вы говорите? по вашему, если Фотошоп запустить на одном ядре, то просчет будет работать на одном... если запустить на двух, то Фотошоп еще подумает, запускать фильтр на двух или на одном ядре... а если его запустить на 4 ядрах, то он воообще разорвется на части в раздумьях, сколько же ему ядер использовать для конретного фильтра? 1 или 4?
а вдруг он еще мысли юзера за помпом угадывает???
не смешите меня про избирательное использование фильтров Фопом :D

прога либо имеет оптимизацию под 2 (4) ядра либо не имеет... как говорят юристы - "Четвертого не дано!"

Подробнее

А вот тут вы меня очень посмешили. Если вычисления производятся в одном потоке, то хоть у вас будет 500 ядер - разницы не будет. Каждый фильтр может работать по разному, некоторые могут распараллеливать вычисления выполняя их в нескольких потоках, а некоторые могут всё считать в одном потоке. Про мысли юзера и прочее - извиняюсь, не понял - бред какой-то.
Re[0x7777]:
Цитата:

от:0x7777
А вот тут вы меня очень посмешили. Если вычисления идут в один поток, то хоть у вас будет 500 ядер - разницы не будет. Каждый фильтр может работать по разному, некоторые могут распараллеливать вычисления выполняя их в нескольких потоках, а некоторые могут всё считать в одном потоке. Про мысли юзера и прочее - извиняюсь, не понял - бред какой-то.

Подробнее


а вы думаете, что фильтры работают отдельно от самой программы... т.е прога может запускатся на одном ядре... а фильтр внутри её работать на 500 ядер???
отлично... зачот вам))))

дак может забудем про то что пишут разработчики про оптимизацию? какая нам разница? ведь фильтр может работать под 500 ядрами... и не важно что прога запустилась под одним... разработчики фильтров сами додумают, как распарралелить задачи на 5000 ядер на проге запущенной на 1 ядре...
Re[0x7777]:
Цитата:

от:0x7777
Бред сивой кобылы. У потоков есть приоритет. У основного потока он, как правило THREAD_PRIORITY_NORMAL, когда вы создаёте новый поток - вы можете запустить его с более высоким приоритетом, а у основного - вы можете понизить приоритет.
Читайте http://msdn2.microsoft.com/en-us/library/ms685100.aspx

Подробнее

Пожалуйста, возьмите за правило предполагать, что Ваш собеседник все же вменяем, прежде чем употреблять слова типа бред.
Я говорил об этом: The thread pool has a default limit of 25 threads per available processor, which could be changed using CorSetMaxThreads as defined in the mscoree.h file. Each thread uses the default stack size and runs at the default priority. http://msdn2.microsoft.com/en-us/library/system.threading.threadpool(VS.71).aspx
Не дунаю, что конвертор писАли под Win32, запуская потоки вручную и назначая им приоритеты.
Цитата:
от: 0x7777
Бессмысленно. Для задач типа обработки графики (а не обслуживания тысячи клиентов WEB сервера) делать кол-во рабочих потоков больше кол-ва ядер нет смысла.

Откуда программер знает, сколько ядер у машины юзера? Зато он знает задачу. Например, конвертирование каждого файла я бы оформил отдельным потоком, а внутри него, чтение файла с диска сделал бы в новом потоке, расчеты в другом - можно подумать как их распаралеллить, там наверняка БПФ. Для записи на диск - тоже лучше запустить отдельный поток. В результате можно было бы считывать, обрабатывать и сбрасывать результат по кускам. И тогда появится смысл. И 100 картинок за раз сконвертятся быстрее чем 100 раз одна.
Re[Xuman]:
Цитата:
от: Xuman
а вы думаете, что фильтры работают отдельно от самой программы... т.е прога может запускатся на одном ядре... а фильтр внутри её работать на 500 ядер???
отлично... зачот вам))))

Видите ли, в отличие от вас я не думаю, а знаю как работают операционные системы, как пишут программы и т.д. и т.п. Вы представляете себе вообще что такое компьютерная программа? Что такое параллелизация вычислений? Что не все вычисления могут быть распараллены? Что такое поток? Что такое процесс? Это вопросы для первого класса, между прочим.
И ещё вы немного передёргиваете (или же просто не понимаете что такое поток). Я вам говорю, что если вычисления идут в одном потоке, то и от 500 ядер вы не выиграете. Нормальные операционные системы по умолчанию запускают приложения без привязки к процессорам. Это значит, что если некий фильтр работающий в контексте фотошоповского процесса запустит 500 потоков на пятисотядерной машине, то ОС их распределит между всеми ядрами. А если поток один - то пыхтеть будет одно ядро из 500 и быстрее ничего не будет. В каком кол-ве потоков фильтр производит вычисления - зависит от его реализации. Не все алгоритмы можно распараллелить, так что наверняка есть много фильтров которые в обозримом будущем не станут многопоточными. И ещё страшная вещь - теоретически, фильтр может быть и отдельным процессом.
Re[vga50]:
Цитата:
от: vga50
Откуда программер знает, сколько ядер у машины юзера?

А это мы узнаём в рантайме.
Цитата:

от:vga50


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

Подробнее

Правильно. И вот тут-то и запустить столько же потоков, сколько и ядер (+-).

Цитата:
от: vga50

там наверняка БПФ.

Вот это то как раз вряд ли.

Цитата:

от:vga50

Для записи на диск - тоже лучше запустить отдельный поток. В результате можно было бы считывать, обрабатывать и сбрасывать результат по кускам. И тогда появится смысл. И 100 картинок за раз сконвертятся быстрее чем 100 раз одна.

Подробнее

Быстрее они не сконвертятся т.к. при работе сотни потоков какое-то время уйдет на избыточные переключения контекстов. Зато, представьте себе ситуацию: вы длительно конвертите сотню файлов одновременно, а юзеру в это время вдруг нужно перезагрузится срочно (мало ли) и при этом уже выполненная вся работа - коту под хвост. Или диск заполнился по ходу дела. При обработке файлов поштучно - никаких проблем.

За предложение запустить тысячу потоков на обработку графического файла на двух ядрах иногда могут и уволить. И правильно сделают.

Re[0x7777]:
млин, квотируется только последний раздел, лень руками вставлять.
Цитата:

от:0x7777
Зато, представьте себе ситуацию: вы длительно конвертите сотню файлов одновременно, а юзеру в это время вдруг нужно перезагрузится срочно (мало ли) и при этом уже выполненная вся работа - коту под хвост. Или диск заполнился по ходу дела. При обработке файлов поштучно - никаких проблем.

Подробнее
Ну, это решаемо. Я же не предлагаю окончательную схему.
Зато при такой схеме все потоки автоматически выстраиваются в очередь к самому медленному ресурсу. Т.е. если есть тормоза в системе - они сразу определяются. Осталось известить юзера, и он может подкупить память или ускорить работу с дисками, а не спрашивать на форуме - а почему так медленно? :)

Да, и зря Вы так беспокоитесь о переключениях. Конечно, есть оптимум между когда единственный поток тик за тиком ждет, когда ресурс отработает команду и когда множество потоков ждут своего тика в очереди на полгода. Надо делать прогу самоорганизующейся и тогда на разных конфигурациях она сама будет находить оптимальную загрузку. А не задавать ей рамки: 2 проца - встали в позу раз, четыре - в позу два.

Уволят - не беда, в фотографы пойду.
Re[vga50]:
А о чем разговор-то вообще? 2 или 4? 4 лучше, хотя бы потому что некоторые программы все-таки оптимизированы для 4 ядер. 4 дороже, не знаю насколько. Большинство компьютерных комплектующих дешевеют по мере выхода новых, более мощных.
Оправданно ли сейчас переходить на 4 ядра при разнице в цене в X процентов... Это каждый сам будет решать. Лайтрум, грят, летает. Фотошоп - частично. Остальные программы - в большей или меньшей степени оптимизированны. Где-то видел тест "2 против 4", но не для "компьютера фотографа". Так вот там реальный прирост был только в научных приложениях, CAD/CAM и при обработке видео. В остальных случаях 5-30%.

Re[Tumbler]:
Цитата:
от: Tumbler
А о чем разговор-то вообще? 2 или 4? 4 лучше, хотя бы потому что некоторые программы все-таки оптимизированы для 4 ядер.

Да нет программ которые отимизируются под то или иное число ядер!!! Есть программы однопоточные (их - большинство) и многопоточные. Первые практически ничего не могут выиграть от изобилия ядер. Вторые - могут, да и то по обстоятельствам.
ИМХО, 4 ядра всегда лучше чем 2, но разница для большинства применений может быть неощутима. Это если говорить о отдельно взятой программе. Но у вас может быть и много тяжелых программ запущенных одновременно, тогда вы опять же выигрываете от большего числа ядер даже если каждая из этих программ однопоточна. Но прирост производительности для большинства применений тут же упирается в скорость работы диска, а потом и в скорость доступа к памяти.
Re[vga50]:
Цитата:
от: vga50
Я говорил об этом: The thread pool has a default limit of 25 threads per available processor, which could be changed using CorSetMaxThreads as defined in the mscoree.h file

Виндовый thread pool расчитан на серверные приложения, которые берут 1 поток из пула на каждое подключение и т.п., особенно когда заранее неизвестно сколько таких подключений может быть - 100 или 10 000. Для математических вычислений в нескольких потоках он потребен как собаке пятая нога.
Re[Tumbler]:
Цитата:
от: Tumbler
А о чем разговор-то вообще? 2 или 4? 4 лучше

Не так однозначно. Строго говоря я сам переходил с 2 на 4 на одном и том же железе - купил двухпроцессорную машину с одним двухядерным процессором, а через пару недель воткнул второй. Субъективно заметная разница есть только в рендеринге 3D, зато почти в два раза. Ещё некоторые видеокодеки (далеко не все) могут здорово выигрывать - WM, например. Наверняка многие (большинство?) из фотошоповских фильтров. В остальном - без разницы. Это на машине с топовым чипсетом, быстрой памятью и дисками в т.ч. в 15000 оборотов, между которыми грамотно распределена нагрузка. Да и два ксеона всё же лучше 4 ядер с одним бюджетным кэшем на всех. На бюджетном железе эффект был бы ещё меньше.
Брать надо 4 ядра, но не надо строить иллюзий.
Re[0x7777]:
Цитата:
от: 0x7777

Брать надо 4 ядра, но не надо строить иллюзий.
Полностью присоединяюсь. Берите 4 и не заморачивайтесь. Можно долго тестировать, сравнивать и читать аналитику. А можно в это время на компе просто работать. Кроме того, пока вы анализируете, прогресс п.....здует 7мильными шагами и через неделю ничего кроме 4 ядер в продаже не останется. А там и софтверы подтянутся.
Re[Xuman]:
Цитата:

от:Xuman
а вы думаете, что фильтры работают отдельно от самой программы... т.е прога может запускатся на одном ядре... а фильтр внутри её работать на 500 ядер???
отлично... зачот вам))))

дак может забудем про то что пишут разработчики про оптимизацию? какая нам разница? ведь фильтр может работать под 500 ядрами... и не важно что прога запустилась под одним... разработчики фильтров сами додумают, как распарралелить задачи на 5000 ядер на проге запущенной на 1 ядре...

Подробнее


Программа способна увеличивать и уменьшать число параллельно выполняемых потоков произвольно. Запускается на одном, запустила еще 50 потоков, потом убила 30 потоков, потом запустила еще 10 потоков - все это делается вызовом одной-двух функции API.
Re[Дык]:
Цитата:

от:Дык
Программа способна увеличивать и уменьшать число параллельно выполняемых потоков произвольно. Запускается на одном, запустила еще 50 потоков, потом убила 30 потоков, потом запустила еще 10 потоков - все это делается вызовом одной-двух функции API.

Подробнее

Оппонент скорее всего просто ничего не знает ни о потоках, ни о процессах, ни о том, как работают и пишутся программы. Не все обязаны об этом знать, просто когда сам не знаешь, то разумнее прислушиваться к мнению тех, кто разбирается в том, о чем говорит, а не катить на них дилетантскую бочку (это я не вам).
Хитрость как правило не в том, чтобы назапускать кучу потоков, а в том как это сделать так, чтобы был толк.
Re[vga50]:
Цитата:

от:vga50
Пожалуйста, возьмите за правило предполагать, что Ваш собеседник все же вменяем, прежде чем употреблять слова типа бред.
Я говорил об этом: The thread pool has a default limit of 25 threads per available processor, which could be changed using CorSetMaxThreads as defined in the mscoree.h file. Each thread uses the default stack size and runs at the default priority. http://msdn2.microsoft.com/en-us/library/system.threading.threadpool(VS.71).aspx
Не дунаю, что конвертор писАли под Win32, запуская потоки вручную и назначая им приоритеты.

Подробнее

Вы невнимательно прочитали в MSDN что это за пул и зачем он нужен.
Даже если и не пользовались WinAPI, вполне могли пользоваться адекватной "обвязкой" функций WinAPI для работы с потоками, которые не накладывают особых ограничений.
Кроме того, вы слишком верите тому, что пул, это идеал, что пул, это круто, что к пулу нужно стремиться.......
Поясняю - пул, это грубо говоря кэш. Можно брать ресурсы из пула, но никто вам не мешает брать ресурсы из-за пределов пула. При тупом подходе - это будет чуток медленее, чем брать из пула, при грамотном подходе - без разницы.
Re[vga50]:
Цитата:

от:vga50
Откуда программер знает, сколько ядер у машины юзера? Зато он знает задачу. Например, конвертирование каждого файла я бы оформил отдельным потоком, а внутри него, чтение файла с диска сделал бы в новом потоке, расчеты в другом - можно подумать как их распаралеллить, там наверняка БПФ. Для записи на диск - тоже лучше запустить отдельный поток. В результате можно было бы считывать, обрабатывать и сбрасывать результат по кускам. И тогда появится смысл. И 100 картинок за раз сконвертятся быстрее чем 100 раз одна.

Подробнее

Каждое переключение потока вызывает перегрузку регистров процессора данными потока, и скорее всего, полную перегрузку новыми данными кэша процессора. Если процессор многоядерный, то в пределах количества ядер сие - не очень критично. А вот ваше предложение запускать 100 потоков на даже 4-х ядерном процессоре - как раз менее эффективно, чем запускать на 4-х ядерном процессоре 3 или 4 потока конвертации.
И это только процессор. Есть еще и оперативная память - сколько нужно оперативной памяти для обработки 100 RAW-файлов? Есть еще жесткий диск, который более менее неплохо обрабатывает ситуации взять один файл тут, а второй там, но будет тратить кучу времени на бегатню головки диска туда-сюда при считывании-записи 100 файлов одновременно.

Re[0x7777]:
Цитата:

от:0x7777
Видите ли, в отличие от вас я не думаю, а знаю как работают операционные системы, как пишут программы и т.д. и т.п. Вы представляете себе вообще что такое компьютерная программа? Что такое параллелизация вычислений? Что не все вычисления могут быть распараллены? Что такое поток? Что такое процесс? Это вопросы для первого класса, между прочим.

Подробнее

Это в обычной школе? Или в обычном вузе на первом курсе?
Вам повезло.
Вы не авторизованы

Пожалуйста, авторизуйтесь, чтоб иметь доступ к полному функционалу сайта

Обратная связь

Здесь вы можете оставить свои контактные данные, чтобы мы могли связаться с вами.