|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
|||
|
|||
Использование видеокарты во время простоя
Есть задача: производить вычисления на видеокарте только в том случае, если она простаивает. То есть у процесса должен быть минималный приоритет (по отношению к процессам видеокарты) и выполняться он должен только если загруженность видеокарты, скажем, не более 30%. Например: открыт браузер -- процесс работает, запустил игру -- процесс остановился, вышел из игры -- снова работает.
В какую сторону копать? |
#2
|
||||
|
||||
SuspendThread.
— Как тебя понимать? — Понимать меня не обязательно. Обязательно меня любить и кормить вовремя. На Delphi, увы, больше не программирую. Рекомендуемая литература по программированию |
#3
|
|||
|
|||
Цитата:
Почитал документацию по SuspendThread, но нигде не видел там возможности измерения загруженности видеокарты. |
#4
|
|||
|
|||
Фактически, вопрос состоит в том, как программно узнать загруженность произвольной современной видеокарты (AMD и nVidia) в конкретный момент времени.
|
#5
|
||||
|
||||
Покопай в сторону драйверов производителей видеокарт.
— Как тебя понимать? — Понимать меня не обязательно. Обязательно меня любить и кормить вовремя. На Delphi, увы, больше не программирую. Рекомендуемая литература по программированию |
#6
|
|||
|
|||
А само вычисление это программа? с исходником?
|
#7
|
||||
|
||||
Цитата:
— Как тебя понимать? — Понимать меня не обязательно. Обязательно меня любить и кормить вовремя. На Delphi, увы, больше не программирую. Рекомендуемая литература по программированию |
#8
|
|||
|
|||
Цитата:
2) Если у твоей задачи должен быть низкий приоритет, так сразу его и делай. А Windows сама решит, сколько времени давать процессору для решения низкоприоритетной задачи. 3) Хорошая графика посылает команды драйверу видеокарты и эта графика обрабатывается ВИДЕОПРОЦЕССОРОМ (GPU), а если твоя задача работает на обычном процессоре (CPU), то эти две микросхемы работают параллельно. Даже есть ещё арифметический сопроцессор (когда-то давно был в виде отдельной микросхемы, а сейчас на одном кристалле с главным процессором, но на ассемблере можно писать команды, которые параллельно работают на главном и на арифметическом). Даже сейчас и главный процессор состоит из 2 - 4 ядер, так что распараллеливание и там происходит. |
#9
|
|||
|
|||
Цитата:
Само вычисление на OpenCL, вызываются через DLL-посредника. |
#10
|
|||
|
|||
Цитата:
Вычисления на GPU с использованием OpenCL. Цитата:
Нагрузка на процессор (CPU) копеечная, роли не играет. Цитата:
Программа выполняется на CPU, но она ничего не делает, кроме как запускает вычисления, выполняющиеся уже на GPU. |
#11
|
|||
|
|||
В opencl не шарю, но я бы там искал средства определить загруженность
|
#12
|
|||
|
|||
А почему бы не посмотреть нативные функции GPU? У разных видюх они различаются, но базовые остаются. Но есть один маленький момент. На GPU нельзя запустить какой-либо процесс бесконечно, как на CPU. При превышении времени исполнения задачи на GPU он его просто убивает (см. спецификации). Таким образом вычислительная задача на GPU должна быть по времени как можно быстрее. И в этом весь смысл распаралеливания - много потоков с малым временем исполнения. Что же касается Idle-режима - GPU не поддерживает его в принципе, всё должна делать ваша программа. Сходите на сайт nVidia, посмотрите SDK - увидите.
|
#13
|
|||
|
|||
Особо не ковырял это дело, но можно поглядеть в сторону nVidia и CUDA- возможность считать, используя GPU, там может быть возможность для проверки зашрузки GPU
|