powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Программирование [игнор отключен] [закрыт для гостей] / Потоки и ядра
9 сообщений из 9, страница 1 из 1
Потоки и ядра
    #37997784
NDAleksey
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Доброго времени суток, уважаемые!
Вопрос очень трепещущий для меня. Возникла конфликтная ситуация с начальником. Хочу разобраться в чем неправ.
Суть вопроса: пишу на макс скрипте в 3D MAX (не суть). Два цикла, один вложен в другой. В сумме 150 млн. итераций. Т.к. язык интерпретируем, то даже с банальным оператором сложения, скрипт отрабатывает ~4 сек. А если вкладывать весь алгоритм в итерацию цикла, то комп виснет на неск. часов. Это меня не устроило, и я переделал алгоритм до ~1,5 млн. итераций (время выполнения - те же ~3 мин). Начальник сказал применить многопоточность. Применил (делается с помощью ф-ций .Net). Запускаю 2 отдельных потока, с 10 млн.итераций на каждый -отрабатывает. Запускаю 6 потоков - отрабатывает только два. У нач-ка отрабатывают все на 8-ми ядрах (думаю что физических у него 4). Но начальника не устраивает, что они ЦП грузят только на 20%. Он хочет мой старый алгоритм разбить на 8-мь потоков, и чтобы они грузились на 100%: каждый поток грузит свое ядро. Он говорит, что если потоки не грузят весь ЦП, то я не разобрался с потоками в Максе. У меня на каждой итерации выполняется один оператор.
Собственно вопрос: уместна ли примитивная арифметика начальника?
Суть арифметики: 100% / 8 потоков = ~12.5%, т.е. каждый поток будет отбирать по 12,5%.

Я несилен в этом всем, но мне кажется, что арифметика не учитывает приоритетность и прочую логику работы планировщика ОС.
Прошу подтолкнуть к истине....
...
Рейтинг: 0 / 0
Потоки и ядра
    #37997870
По сути хорошо реализованные на C/C++ параллельные алгоритмы грузят CPU на 100%. Если грузят меньше, значит затыкается на ожиданиях мьютексов или доступе к памяти.
...
Рейтинг: 0 / 0
Потоки и ядра
    #37998185
Фотография ZyK_BotaN
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
NDAlekseyЯ несилен в этом всем, но мне кажется, что арифметика не учитывает приоритетность и прочую логику работы планировщика ОС.Главное, что бы алгоритм был действительно параллельный, т.е. что-бы не было потоков, которые большую часть времени - находятся в блокированном состоянии. Если сделать все правильно - должно грузить проц на 100%

з.ы. в параллелизме макса - не разбираюсь.
...
Рейтинг: 0 / 0
Потоки и ядра
    #37998191
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
NDAleksey,

А что, ввод-вывода (дискового и/или сетевого) в вашем скрипте совсем нет никакого? Оперативки хватает, система в своп не лезет?
...
Рейтинг: 0 / 0
Потоки и ядра
    #37999410
NDAleksey
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
miksoft,

есть.... файловая запись есть.... сегодня читал форумы забугорные и в одном отыскал такую вещь (для примера пишу не на скрипте):

Код: plaintext
1.
2.
for ( int i = 0; i < N; i++ ) do
    i * i * i;



грузит ЦП на 100%


Код: plaintext
1.
2.
3.
int count = 0;
for ( int i = 0; i < N; i++ ) do
    count = count + 1;



грузит ~40-50%

как-то так....
...
Рейтинг: 0 / 0
Потоки и ядра
    #37999425
NDAlekseymiksoft,

есть.... файловая запись есть.... сегодня читал форумы забугорные и в одном отыскал такую вещь (для примера пишу не на скрипте):

Код: plaintext
1.
2.
for ( int i = 0; i < N; i++ ) do
    i * i * i;



грузит ЦП на 100%


Код: plaintext
1.
2.
3.
int count = 0;
for ( int i = 0; i < N; i++ ) do
    count = count + 1;



грузит ~40-50%

как-то так....
А это что за язык и какой компилятор?
И судя по тому что грузит ЦП на 100%, то этот кода автоматически распараллеливается?
...
Рейтинг: 0 / 0
Потоки и ядра
    #37999534
Фотография ZyK_BotaN
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
NDAlekseymiksoft,

есть.... файловая запись есть.... сегодня читал форумы забугорные и в одном отыскал такую вещь (для примера пишу не на скрипте):

Код: plaintext
1.
2.
for ( int i = 0; i < N; i++ ) do
    i * i * i;




грузит ЦП на 100%


Код: plaintext
1.
2.
3.
int count = 0;
for ( int i = 0; i < N; i++ ) do
    count = count + 1;




грузит ~40-50%

как-то так....доступ к общему ресурсу?
нужно в каждом потоке держать свой счетчик, а в конце просуммировать.
...
Рейтинг: 0 / 0
Потоки и ядра
    #37999552
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
NDAlekseyОн хочет мой старый алгоритм разбить на 8-мь потоков, и чтобы они грузились на 100%: каждый поток грузит свое ядро. Он говорит, что если потоки не грузят весь ЦП, то я не разобрался с потоками в Максе. У меня на каждой итерации выполняется один оператор.
Думаю что и ты и начальник неправильно понимаете цели своей задачи. Ведь смысл не в том
чтобы прогреть все 8 камней до температуры плавления а отрендерить картинку за минимальное время.

Я давно не работал с 3D-Max но насколько я помню еще во времена Windows2000 можно было поднять
3-Д Макс сервер и параллелить вычисления на несколько компов по сети. Так делают во всех
нормальных фильмо-студиях.

Далее, что это за 150 млн итераций? Что они делают? Зачем так много? Изучите что считается?
Где узкое место? Попробуйте переписать боттлнек на другом языке. Убеждён что такой инструмент
как Макс легко интегрируется с С++. Потреряете неделю на изучение - зато потом получите год
перформанса.
...
Рейтинг: 0 / 0
Потоки и ядра
    #38001361
Фотография iv_an_ru
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
NDAlekseyПрошу подтолкнуть к истине....
Толкаю.
Роман Лыгин докладывал на интеловской конференции как раз про распараллеливание рендеринга , только в его случае это был не ДДДмакс, а Тахион. Подробности рекламируемого софта вам не будут интересны, зато список граблей, на которые он наступал в процессе оптимизации --- поучителен. На такие грабли наступают все, только в разных проектах они разложены в разном порядке.
...
Рейтинг: 0 / 0
9 сообщений из 9, страница 1 из 1
Форумы / Программирование [игнор отключен] [закрыт для гостей] / Потоки и ядра
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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