powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Windows [игнор отключен] [закрыт для гостей] / Объединение ядер
16 сообщений из 16, страница 1 из 1
Объединение ядер
    #37231072
Фотография speed151
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
когда появится функция распределения одного потока на все ядра?
...
Рейтинг: 0 / 0
Объединение ядер
    #37231074
Damien
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
speed151когда появится функция распределения одного потока на все ядра?

возможно, что никогда. Это программист должен распараллеливать вычисления, а потоки на ядра раскидывает OS.
...
Рейтинг: 0 / 0
Объединение ядер
    #37231084
Фотография speed151
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Damien, конечно. если код поделить по ядрам, выйдет не то что надо.
диспетчер задач показывает количество потоков процесса, но оно грузит только одно ядро.
это что за потоки такие не глобальные?
еще есть такая штука, которая как бы позволяет равномерно делить нагрузку между ядрами.
как оно работает?
...
Рейтинг: 0 / 0
Объединение ядер
    #37231114
Фотография Anatoly Podgoretsky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ты что то сделал с системой.
Если не трогать, то нагрузка равномерно делится между ядрами.
...
Рейтинг: 0 / 0
Объединение ядер
    #37231129
Фотография speed151
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Anatoly PodgoretskyТы что то сделал с системой.
Если не трогать, то нагрузка равномерно делится между ядрами.
Анатолий, не спеши с выводами.
в boot параметр добавил и стало делиться, чего раньше не было.
...
Рейтинг: 0 / 0
Объединение ядер
    #37231142
Фотография Гордый Корень
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
speed151когда появится функция распределения одного потока на все ядра?
НИКОГДА.

потому что один поток как правило НЕ паралелится.
если паралелится - то это проблема программиста КАК это сделать.

максимум что сейчас могут производители процессоров/операционных систем - это предварительная оптимизация кода и совершенствование процессоров в плане сложных инструкций вроде sse... по частоте уже достигли предела еще на пентиуме4, по ядрам - на квадах (загрузить 4 ядра крайне сложно в повседневных задачах), сейчас идет интеграция памяти и видео, что в общем тоже дает какие то плоды..
...
Рейтинг: 0 / 0
Объединение ядер
    #37231257
Фотография speed151
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Гордый Корень, согласен.
только я так и не понял, почему некоторые процессы, потоки которых все равно используют одно ядро.
это такая фишка ОС?
...
Рейтинг: 0 / 0
Объединение ядер
    #37231267
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Нет, это такая фишка авторов этих процессов.
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
Объединение ядер
    #37231272
x1ca4064
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
speed151Гордый Корень, согласен.
только я так и не понял, почему некоторые процессы, потоки которых все равно используют одно ядро.
это такая фишка ОС?

Возможно, Вы пришли к ошибочному выводу - просто если в TaskManager видно, что у процесса 10 потоков, из этого не следует, что он загрузит 10 ядер - может быть один поток, который что-то активно делает, а остальные 9 - спят (ожидают всяких событий, перерисовывают пользовательский интерфейс и пр.). Ждущие потоки не потребляют процессорное время. Можете сами попробовать - запустите несколько потоков, которые крутят пустые (или почти пустые) циклы - ядра и загрузятся.

Для того, чтобы все потоки шли на 1 ядре, нужно делать специальные "приседания".
...
Рейтинг: 0 / 0
Объединение ядер
    #37231897
The Dim!
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
х.м.... процесс параллелится тредами(потоками тоесть), а как параллелится тред(поток), типа нитями(фибрисами или как их там)?

Как уже было сказано выше, наличие открытых n-потоков не говорит о том, что они все выполняются - какому потоку гипервизором был выжелен квант тот и выполняется. Кроме того, в системем могут одновременно(параллельно) выполняться столько потоков, сколько есть ядер(HT не в счет, потому как псевдо параллельность).
То что есть конвееры и очерьдь предвыборки не дает параллельности, максимум это может экономить такты на додкачку из оперативы команд - тех, которые по мнение предвыборки наиболее вероятны. Но тут многое зависит от компилятора.

Так всетаки, как параллется поток?


В разных версия винды стратегия планирование потоков различается, причем кардинально - вытеснение, время переключение контекста(кванта)... и т.д.. На ядре Win7/2008, в зависимости от нагрузки на процессор, система может принемать решение о отключении части ядер, что дает экономию энергии и уменьшает теплоотдачу.
...
Рейтинг: 0 / 0
Объединение ядер
    #37231979
Фотография Гордый Корень
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
The Dim!х.м.... процесс параллелится тредами(потоками тоесть), а как параллелится тред(поток), типа нитями(фибрисами или как их там)?
"thread" - в переводе на язык программирования - "нить"

но некоторые переводят как "поток" - что не совсем и не всегда верно. например "поток ввода-вывода" - это ввод-вывод, не имеющий ничего к распаралеливанию =)
...
Рейтинг: 0 / 0
Объединение ядер
    #37231987
Фотография Гордый Корень
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
The Dim!Так всетаки, как параллется поток?
один потом (thread - нить) НЕ ПАРАЛИТСЯ на этапе всей программы.

максимум - это предсказание ветвления, когда в случае ветвления проверка условия требует времени. поэтому исполняются сразу обе ветки (на двух независимых парарлельных блоках), а когда уже условие вычисляется - одна ветка убивается =) но это - лишь пара инструкций, не больше. разнести линейную задачу на два ядра НЕВОЗМОЖНО НИКАК.
...
Рейтинг: 0 / 0
Объединение ядер
    #37232238
The Dim!
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Словарь у тебя не правильный, и в терминалогии путаешся.

Процесс(process) - это совокупность данных и кода...
В лобом процессе существует как минимум один поток выполнения инструкций - поток(thread).
Как пишут в умных книжках - в некоторых ОС дополнительно используются нити(fibers), самостоятельно выполняющееся в рамках потока.
Толком про нити ничего больше не скажу - не знаю...
Тирмины "поток" и "нить" это разные вещи. И если в как-то источнике одно подменяется другим, то это, мягко говоря, не корректно.

Как-бы да... поток распаралелить нельзя. НО!
Есть объекты ОС с которыми допускается работа как в синхронном так и в асинхронном режиме.
Пример тому: сокеты, функции работы с файловой системой... в асинхронном режиме, разумеется.
В этих случаях, поток может дать команду ОС считать данные с винта/сети, а сам поток тем времянем может заниматься чем-то иным.

Гордый Кореньно некоторые переводят как "поток" - что не совсем и не всегда верно.
например "поток ввода-вывода" - это ввод-вывод, не имеющий ничего к распаралеливанию =)

Чесно говоря термин "Поток ввода-вывода" слышу впервые. Это что?


Гордый КореньThe Dim!Так всетаки, как параллется поток?
один потом (thread - нить) НЕ ПАРАЛИТСЯ на этапе всей программы.

максимум - это предсказание ветвления, когда в случае ветвления проверка условия требует времени. поэтому исполняются
сразу обе ветки (на двух независимых парарлельных блоках), а когда уже условие вычисляется - одна ветка убивается =)
но это - лишь пара инструкций, не больше. разнести линейную задачу на два ядра НЕВОЗМОЖНО НИКАК.

Во первых.
Этож в каком случае, проверка условий ветвленяи требует времяни?

Во вторых.
Ты хочеш сказать, что в случае предсказания ветвления - по сути веток if...else - какое-то время будут выполняться обе ветки?
А если второй ветки нет, а если они противоряечат друг-другу(что наиболее веротно)...

Это ты как-то... что-то... через чур...


Предсказание работает не так.
Есть очередь - предвыборки(конвеер) - уже внутри процессора. Так вот, может встретиться такое ветвление, которое передаст управление коду, который еще не подгрузился
на конвеер. Тогда, процессору потребуется несколько "холостых" тактов пока этот код - на который передавалось управление - подгрузится из оперативы(и это еще надо эту страгицу в оперативе иметь :) ).
Так вот, предсказание и помогает определить наиболее верояный участок кода и подгрузить именно его. А не производить линейное чтение кода.
Это если грубо описать работу предсказаний.
...
Рейтинг: 0 / 0
Объединение ядер
    #37232277
Фотография Anatoly Podgoretsky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
The Dim!Чесно говоря термин "Поток ввода-вывода" слышу впервые. Это что?
Что и потоковый ввод/вывод тоже не слышал, и термин Stream
...
Рейтинг: 0 / 0
Объединение ядер
    #37232294
Фотография Гордый Корень
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
The Dim!Процесс(process) - это совокупность данных и кода...
В лобом процессе существует как минимум один поток выполнения инструкций - поток(thread).
Как пишут в умных книжках - в некоторых ОС дополнительно используются нити(fibers), самостоятельно выполняющееся в рамках потока.
Толком про нити ничего больше не скажу - не знаю...
Тирмины "поток" и "нить" это разные вещи. И если в как-то источнике одно подменяется другим, то это, мягко говоря, не корректно.

Как-бы да... поток распаралелить нельзя. НО!
Есть объекты ОС с которыми допускается работа как в синхронном так и в асинхронном режиме.
Пример тому: сокеты, функции работы с файловой системой... в асинхронном режиме, разумеется.
В этих случаях, поток может дать команду ОС считать данные с винта/сети, а сам поток тем времянем может заниматься чем-то иным.
для этого делают два потока и в какие то моменты времени ожидают их синхронизации. что такое "нить потока" я честна не понил... и как ОС может отделять нить от потока тоже не особо представляю...

The Dim!Чесно говоря термин "Поток ввода-вывода" слышу впервые. Это что?
c++:
stream - поток ввода-вывода (в стандарте есть)
thread - поток - как отдельная нить процесса (в стандарте нету)


The Dim!Во первых.
Этож в каком случае, проверка условий ветвленяи требует времяни?

Во вторых.
Ты хочеш сказать, что в случае предсказания ветвления - по сути веток if...else - какое-то время будут выполняться обе ветки?
А если второй ветки нет, а если они противоряечат друг-другу(что наиболее веротно)...

Это ты как-то... что-то... через чур...

Предсказание работает не так.
Есть очередь - предвыборки(конвеер) - уже внутри процессора. Так вот, может встретиться такое ветвление, которое передаст управление коду, который еще не подгрузился
на конвеер. Тогда, процессору потребуется несколько "холостых" тактов пока этот код - на который передавалось управление - подгрузится из оперативы(и это еще надо эту страгицу в оперативе иметь :) ).
Так вот, предсказание и помогает определить наиболее верояный участок кода и подгрузить именно его. А не производить линейное чтение кода.
Это если грубо описать работу предсказаний.
спуститесь до уровня ассемблера и сразу поймете что я имел ввиду. подгрузка одной переменной может занять охрененое время, достаточное для выполенния например небольшого цикла =)
плюс сюда же кеши и тлб всех сортов =)
...
Рейтинг: 0 / 0
Объединение ядер
    #37233953
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
speed151когда появится функция распределения одного потока на все ядра?Даже простой переброс потока с одного проца на другой в разных квантах (диспетчеризации) - не всегда полезен.
А уж "распараллеливание одного потока на все ядра" - это вообще падение стремительного домкрата.
...
Рейтинг: 0 / 0
16 сообщений из 16, страница 1 из 1
Форумы / Windows [игнор отключен] [закрыт для гостей] / Объединение ядер
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]