Форум программистов, компьютерный форум, киберфорум
C/C++: WinAPI
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.80/30: Рейтинг темы: голосов - 30, средняя оценка - 4.80
18 / 8 / 4
Регистрация: 26.01.2014
Сообщений: 164
1

Как использовать всю мощь процессора на одно приложение?

18.07.2014, 14:38. Показов 6120. Ответов 13
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
есть приложение, которое запускается с правами администратора и которое проводит много вычислений
оно работает с видео

видос воспроизводится, но звук убегает вперед картинки, деформация кадров занимает время и поэтому случаются тормоза

машина сильная, но цпу загружен постоянно на 10-11%
был у меня похожий вопрос, но мне так и не подсказали как заставить уделять приложению максимальное внимание

например, у after effects есть галочка (точно не скажу где и какая, но я слышал про это)
в настройках, которую если поставить, будет использовать все ядра машины для рендеринга юзать распараллеливание

как заставить машину использовать всю свою мощь?
C++
1
2
3
4
5
6
7
if(!SetThreadPriority(GetCurrentThread(), THREAD_PRIORITY_HIGHEST)) {
    printf("error1\n");
}
 
if(!SetPriorityClass(OpenProcess(PROCESS_SET_INFORMATION, false, GetCurrentProcessId()), REALTIME_PRIORITY_CLASS)) {
    printf("error2\n");
}
Добавлено через 6 минут
пробовал ставить этот код вначале программы, ошибок не выявляется, но изменений в скорости не наблюдаю
слышал возможные проблемы про права при работе с процессорами, поэтому ставлю, чтоб запрашивал администратора

как сказать машине, чтобы она использовала всю мощь на одно лишь приложение?
предпологается, что оно будет работать развернутым на весь экран и посторонних окон не будет

поэтому всю мощность нужно направить на деформацию картинок видео
помогите пожалуйста!
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
18.07.2014, 14:38
Ответы с готовыми решениями:

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

Как использовать мощь Tor'a?
Хочу написать парсер с использованием сети Тор. После парсинга странцицы, скрипт должен сменить...

Сфокусировать всю мощь видеокарты в 1 процесс
Как можно сказать видеокарте чтобы она выделяла большую часть своей мощи вкладке из...

Amd 8320 Не работает на всю мощь
http://2.firepic.org/2/images/2015-08/05/ohqzbyesyk4a.jpg Посмотрите сами. Это еще повезло что...

13
Эксперт С++
2924 / 1274 / 114
Регистрация: 27.05.2008
Сообщений: 3,465
18.07.2014, 15:13 2
Возможно, что все упирается отнюдь не в загрузку CPU. Где-то есть узкое место, но вот где? Память? DMA? Сеть? Видео? Диск? Короче, bottleneck где-то в другом месте, и - как ни повышай приоритет, процессору тупо нечего делать...

Это все на уровне предположений, конечно.
0
18 / 8 / 4
Регистрация: 26.01.2014
Сообщений: 164
18.07.2014, 17:17  [ТС] 3
просто я рассуждаю как человек, который с этим не сталкивался
это ведь как-то реализовано, значит сделать возможно, а как - это уже вопрос времени/средств

было дело, я создавал с помощью CreateProcess() некое распараллеливание, и тогда одноименные программы висели в диспетчере и у каждого пункта было по 25% цпу

т.е. как-то это все работает не пойми как
хочется услышать шарющих людей, кто с этим дело имел, сталкивался, работал
0
327 / 230 / 55
Регистрация: 30.05.2014
Сообщений: 682
18.07.2014, 17:54 4
Цитата Сообщение от igor_petrov Посмотреть сообщение
как заставить машину использовать всю свою мощь?
Распараллелить вычисления по количеству ядер процессора.
0
39 / 39 / 6
Регистрация: 12.12.2013
Сообщений: 227
Записей в блоге: 1
18.07.2014, 18:02 5
По описанию, может быть, affinity?
0
18 / 8 / 4
Регистрация: 26.01.2014
Сообщений: 164
18.07.2014, 18:03  [ТС] 6
я знаю способ распараллеливания - только с помощью CreateProcess(), у меня требовательные к производительности вычисления к кадрам, которые я беру из видео и потом обрабатываю и вывожу на экран

одновременно с этим я должен выводить звуковую дорожку, есть ли способ синхронизировать вывод видео и аудио?

и есть ли способ сделать распараллеливание без CreateProcess

я так понимаю, CreateThread - это немного другое
0
Ушел с форума
Эксперт С++
16473 / 7436 / 1187
Регистрация: 02.05.2013
Сообщений: 11,617
Записей в блоге: 1
18.07.2014, 19:46 7
igor_petrov, поддержка параллельности должна быть на уровне
самой программы. Если этого нет - никакие thread/process affinity и тем более
установка приоритетов не помогут.
0
18 / 8 / 4
Регистрация: 26.01.2014
Сообщений: 164
19.07.2014, 12:44  [ТС] 8
Убежденный, можете подробнее рассказать про это пожалуйста?

Добавлено через 5 минут
про поддержку программой распараллеливания
0
Эксперт С++
4985 / 3092 / 456
Регистрация: 10.11.2010
Сообщений: 11,169
Записей в блоге: 10
19.07.2014, 12:57 9
Тэги: потоки, синхронизация потоков, OpenMP, posix threads, std::thread, boost::threads ...
0
Ушел с форума
Эксперт С++
16473 / 7436 / 1187
Регистрация: 02.05.2013
Сообщений: 11,617
Записей в блоге: 1
19.07.2014, 13:01 10
Поддержка распределения рабочей нагрузки по ядрам/процессорам
закладывается разработчиком программы на стадии ее написания.
Если разработчик решил, что такое распределение нужно и будет
полезным для повышения эффективности - значит, программа будет
использовать несколько потоков, работающих параллельно.
Нет - значит нет, и сделать с этим ничего нельзя.

Вы можете бесконечно повышать приоритет процесса, привязывать
его к разным ядрам/CPU и т.д., но если изначально в программе не
было заложено поддержки многоядерности, это все не даст нужного
эффекта и на 4-ядерном CPU она все равно будет брать не более 25%
от общей загрузки.
0
18 / 8 / 4
Регистрация: 26.01.2014
Сообщений: 164
19.07.2014, 13:03  [ТС] 11
Убежденный, это понятно, спасибо за развернутый ответ
я вот и спросил, как заложить в программу поддержку распределения

castaway, будем гуглить, благодарю
0
18 / 8 / 4
Регистрация: 26.01.2014
Сообщений: 164
23.07.2014, 15:07  [ТС] 12
Использую OpenMP, всем спасибо!
0
327 / 230 / 55
Регистрация: 30.05.2014
Сообщений: 682
23.07.2014, 15:38 13
Цитата Сообщение от igor_petrov Посмотреть сообщение
Использую OpenMP
OpenMP - хорошо для распараллеливания циклов, в которых итерации независимы. Фильтры обработки изображений к этой категории как правило не относятся.
0
18 / 8 / 4
Регистрация: 26.01.2014
Сообщений: 164
23.07.2014, 15:39  [ТС] 14
uglyPinokkio, у меня и был вложенный цикл по пикселям картинки, я использую #pragma parallel
все работает.
0
23.07.2014, 15:39
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
23.07.2014, 15:39
Помогаю со студенческими работами здесь

Acer Aspire 5750g работает не на всю мощь
Всем привет. Столкнулся с проблемой на ноутбуке Acer Aspire 5750g. процессор: intel core...

Хочу видюху 680 поставить,будет ли она работать на всю мощь? (Будет ли толк?)
уважаемые,подскажите имею амд феном 6 ядер по 3 гг,мать гига 890 gpa ud3h.gtx 560 ti 448 ядер,бп...

Могут ли быть вылеты из-за того, что процессор не может раскрыть всю "мощь" видеокарты?
Какой процессор из серии intel core 2 duo сможет полностью раскрыть все возможности ASUS GTS 450?...

Как подключать приложение к MySQL - свое подключение для каждой формы, или одно на всё приложение?
Вопрос: как правильно организовать подключение к базе MySQL для приложения, которое обращается к...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
14
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru