|
|
|
Объединение ядер
|
|||
|---|---|---|---|
|
#18+
когда появится функция распределения одного потока на все ядра? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.04.2011, 21:04 |
|
||
|
Объединение ядер
|
|||
|---|---|---|---|
|
#18+
speed151когда появится функция распределения одного потока на все ядра? возможно, что никогда. Это программист должен распараллеливать вычисления, а потоки на ядра раскидывает OS. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.04.2011, 21:09 |
|
||
|
Объединение ядер
|
|||
|---|---|---|---|
|
#18+
Damien, конечно. если код поделить по ядрам, выйдет не то что надо. диспетчер задач показывает количество потоков процесса, но оно грузит только одно ядро. это что за потоки такие не глобальные? еще есть такая штука, которая как бы позволяет равномерно делить нагрузку между ядрами. как оно работает? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.04.2011, 21:15 |
|
||
|
Объединение ядер
|
|||
|---|---|---|---|
|
#18+
Ты что то сделал с системой. Если не трогать, то нагрузка равномерно делится между ядрами. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.04.2011, 22:00 |
|
||
|
Объединение ядер
|
|||
|---|---|---|---|
|
#18+
Anatoly PodgoretskyТы что то сделал с системой. Если не трогать, то нагрузка равномерно делится между ядрами. Анатолий, не спеши с выводами. в boot параметр добавил и стало делиться, чего раньше не было. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.04.2011, 22:16 |
|
||
|
Объединение ядер
|
|||
|---|---|---|---|
|
#18+
speed151когда появится функция распределения одного потока на все ядра? НИКОГДА. потому что один поток как правило НЕ паралелится. если паралелится - то это проблема программиста КАК это сделать. максимум что сейчас могут производители процессоров/операционных систем - это предварительная оптимизация кода и совершенствование процессоров в плане сложных инструкций вроде sse... по частоте уже достигли предела еще на пентиуме4, по ядрам - на квадах (загрузить 4 ядра крайне сложно в повседневных задачах), сейчас идет интеграция памяти и видео, что в общем тоже дает какие то плоды.. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.04.2011, 22:50 |
|
||
|
Объединение ядер
|
|||
|---|---|---|---|
|
#18+
Гордый Корень, согласен. только я так и не понял, почему некоторые процессы, потоки которых все равно используют одно ядро. это такая фишка ОС? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.04.2011, 01:55 |
|
||
|
Объединение ядер
|
|||
|---|---|---|---|
|
#18+
Нет, это такая фишка авторов этих процессов. Posted via ActualForum NNTP Server 1.4 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.04.2011, 02:10 |
|
||
|
Объединение ядер
|
|||
|---|---|---|---|
|
#18+
speed151Гордый Корень, согласен. только я так и не понял, почему некоторые процессы, потоки которых все равно используют одно ядро. это такая фишка ОС? Возможно, Вы пришли к ошибочному выводу - просто если в TaskManager видно, что у процесса 10 потоков, из этого не следует, что он загрузит 10 ядер - может быть один поток, который что-то активно делает, а остальные 9 - спят (ожидают всяких событий, перерисовывают пользовательский интерфейс и пр.). Ждущие потоки не потребляют процессорное время. Можете сами попробовать - запустите несколько потоков, которые крутят пустые (или почти пустые) циклы - ядра и загрузятся. Для того, чтобы все потоки шли на 1 ядре, нужно делать специальные "приседания". ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.04.2011, 02:32 |
|
||
|
Объединение ядер
|
|||
|---|---|---|---|
|
#18+
х.м.... процесс параллелится тредами(потоками тоесть), а как параллелится тред(поток), типа нитями(фибрисами или как их там)? Как уже было сказано выше, наличие открытых n-потоков не говорит о том, что они все выполняются - какому потоку гипервизором был выжелен квант тот и выполняется. Кроме того, в системем могут одновременно(параллельно) выполняться столько потоков, сколько есть ядер(HT не в счет, потому как псевдо параллельность). То что есть конвееры и очерьдь предвыборки не дает параллельности, максимум это может экономить такты на додкачку из оперативы команд - тех, которые по мнение предвыборки наиболее вероятны. Но тут многое зависит от компилятора. Так всетаки, как параллется поток? В разных версия винды стратегия планирование потоков различается, причем кардинально - вытеснение, время переключение контекста(кванта)... и т.д.. На ядре Win7/2008, в зависимости от нагрузки на процессор, система может принемать решение о отключении части ядер, что дает экономию энергии и уменьшает теплоотдачу. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.04.2011, 13:26 |
|
||
|
Объединение ядер
|
|||
|---|---|---|---|
|
#18+
The Dim!х.м.... процесс параллелится тредами(потоками тоесть), а как параллелится тред(поток), типа нитями(фибрисами или как их там)? "thread" - в переводе на язык программирования - "нить" но некоторые переводят как "поток" - что не совсем и не всегда верно. например "поток ввода-вывода" - это ввод-вывод, не имеющий ничего к распаралеливанию =) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.04.2011, 13:57 |
|
||
|
Объединение ядер
|
|||
|---|---|---|---|
|
#18+
The Dim!Так всетаки, как параллется поток? один потом (thread - нить) НЕ ПАРАЛИТСЯ на этапе всей программы. максимум - это предсказание ветвления, когда в случае ветвления проверка условия требует времени. поэтому исполняются сразу обе ветки (на двух независимых парарлельных блоках), а когда уже условие вычисляется - одна ветка убивается =) но это - лишь пара инструкций, не больше. разнести линейную задачу на два ядра НЕВОЗМОЖНО НИКАК. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.04.2011, 13:59 |
|
||
|
Объединение ядер
|
|||
|---|---|---|---|
|
#18+
Словарь у тебя не правильный, и в терминалогии путаешся. Процесс(process) - это совокупность данных и кода... В лобом процессе существует как минимум один поток выполнения инструкций - поток(thread). Как пишут в умных книжках - в некоторых ОС дополнительно используются нити(fibers), самостоятельно выполняющееся в рамках потока. Толком про нити ничего больше не скажу - не знаю... Тирмины "поток" и "нить" это разные вещи. И если в как-то источнике одно подменяется другим, то это, мягко говоря, не корректно. Как-бы да... поток распаралелить нельзя. НО! Есть объекты ОС с которыми допускается работа как в синхронном так и в асинхронном режиме. Пример тому: сокеты, функции работы с файловой системой... в асинхронном режиме, разумеется. В этих случаях, поток может дать команду ОС считать данные с винта/сети, а сам поток тем времянем может заниматься чем-то иным. Гордый Кореньно некоторые переводят как "поток" - что не совсем и не всегда верно. например "поток ввода-вывода" - это ввод-вывод, не имеющий ничего к распаралеливанию =) Чесно говоря термин "Поток ввода-вывода" слышу впервые. Это что? Гордый КореньThe Dim!Так всетаки, как параллется поток? один потом (thread - нить) НЕ ПАРАЛИТСЯ на этапе всей программы. максимум - это предсказание ветвления, когда в случае ветвления проверка условия требует времени. поэтому исполняются сразу обе ветки (на двух независимых парарлельных блоках), а когда уже условие вычисляется - одна ветка убивается =) но это - лишь пара инструкций, не больше. разнести линейную задачу на два ядра НЕВОЗМОЖНО НИКАК. Во первых. Этож в каком случае, проверка условий ветвленяи требует времяни? Во вторых. Ты хочеш сказать, что в случае предсказания ветвления - по сути веток if...else - какое-то время будут выполняться обе ветки? А если второй ветки нет, а если они противоряечат друг-другу(что наиболее веротно)... Это ты как-то... что-то... через чур... Предсказание работает не так. Есть очередь - предвыборки(конвеер) - уже внутри процессора. Так вот, может встретиться такое ветвление, которое передаст управление коду, который еще не подгрузился на конвеер. Тогда, процессору потребуется несколько "холостых" тактов пока этот код - на который передавалось управление - подгрузится из оперативы(и это еще надо эту страгицу в оперативе иметь :) ). Так вот, предсказание и помогает определить наиболее верояный участок кода и подгрузить именно его. А не производить линейное чтение кода. Это если грубо описать работу предсказаний. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.04.2011, 15:52 |
|
||
|
Объединение ядер
|
|||
|---|---|---|---|
|
#18+
The Dim!Чесно говоря термин "Поток ввода-вывода" слышу впервые. Это что? Что и потоковый ввод/вывод тоже не слышал, и термин Stream ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.04.2011, 16:11 |
|
||
|
Объединение ядер
|
|||
|---|---|---|---|
|
#18+
The Dim!Процесс(process) - это совокупность данных и кода... В лобом процессе существует как минимум один поток выполнения инструкций - поток(thread). Как пишут в умных книжках - в некоторых ОС дополнительно используются нити(fibers), самостоятельно выполняющееся в рамках потока. Толком про нити ничего больше не скажу - не знаю... Тирмины "поток" и "нить" это разные вещи. И если в как-то источнике одно подменяется другим, то это, мягко говоря, не корректно. Как-бы да... поток распаралелить нельзя. НО! Есть объекты ОС с которыми допускается работа как в синхронном так и в асинхронном режиме. Пример тому: сокеты, функции работы с файловой системой... в асинхронном режиме, разумеется. В этих случаях, поток может дать команду ОС считать данные с винта/сети, а сам поток тем времянем может заниматься чем-то иным. для этого делают два потока и в какие то моменты времени ожидают их синхронизации. что такое "нить потока" я честна не понил... и как ОС может отделять нить от потока тоже не особо представляю... The Dim!Чесно говоря термин "Поток ввода-вывода" слышу впервые. Это что? c++: stream - поток ввода-вывода (в стандарте есть) thread - поток - как отдельная нить процесса (в стандарте нету) The Dim!Во первых. Этож в каком случае, проверка условий ветвленяи требует времяни? Во вторых. Ты хочеш сказать, что в случае предсказания ветвления - по сути веток if...else - какое-то время будут выполняться обе ветки? А если второй ветки нет, а если они противоряечат друг-другу(что наиболее веротно)... Это ты как-то... что-то... через чур... Предсказание работает не так. Есть очередь - предвыборки(конвеер) - уже внутри процессора. Так вот, может встретиться такое ветвление, которое передаст управление коду, который еще не подгрузился на конвеер. Тогда, процессору потребуется несколько "холостых" тактов пока этот код - на который передавалось управление - подгрузится из оперативы(и это еще надо эту страгицу в оперативе иметь :) ). Так вот, предсказание и помогает определить наиболее верояный участок кода и подгрузить именно его. А не производить линейное чтение кода. Это если грубо описать работу предсказаний. спуститесь до уровня ассемблера и сразу поймете что я имел ввиду. подгрузка одной переменной может занять охрененое время, достаточное для выполенния например небольшого цикла =) плюс сюда же кеши и тлб всех сортов =) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.04.2011, 16:19 |
|
||
|
Объединение ядер
|
|||
|---|---|---|---|
|
#18+
speed151когда появится функция распределения одного потока на все ядра?Даже простой переброс потока с одного проца на другой в разных квантах (диспетчеризации) - не всегда полезен. А уж "распараллеливание одного потока на все ядра" - это вообще падение стремительного домкрата. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.04.2011, 15:16 |
|
||
|
|

start [/forum/topic.php?fid=26&msg=37231072&tid=1498312]: |
0ms |
get settings: |
8ms |
get forum list: |
17ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
159ms |
get topic data: |
10ms |
get forum data: |
2ms |
get page messages: |
76ms |
get tp. blocked users: |
2ms |
| others: | 220ms |
| total: | 500ms |

| 0 / 0 |
