Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > ОС и железо
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 06.10.2011, 15:31
Рубик Рубик вне форума
Прохожий
 
Регистрация: 02.08.2011
Сообщения: 7
Репутация: 10
По умолчанию Использование видеокарты во время простоя

Есть задача: производить вычисления на видеокарте только в том случае, если она простаивает. То есть у процесса должен быть минималный приоритет (по отношению к процессам видеокарты) и выполняться он должен только если загруженность видеокарты, скажем, не более 30%. Например: открыт браузер -- процесс работает, запустил игру -- процесс остановился, вышел из игры -- снова работает.
В какую сторону копать?
Ответить с цитированием
  #2  
Старый 06.10.2011, 15:40
Аватар для M.A.D.M.A.N.
M.A.D.M.A.N. M.A.D.M.A.N. вне форума
Sir Richard Abramson
 
Регистрация: 05.04.2008
Сообщения: 5,505
Версия Delphi: XE10
Репутация: выкл
По умолчанию

SuspendThread.
__________________
— Как тебя понимать?
— Понимать меня не обязательно. Обязательно меня любить и кормить вовремя.


На Delphi, увы, больше не программирую.
Рекомендуемая литература по программированию
Ответить с цитированием
  #3  
Старый 06.10.2011, 15:45
Рубик Рубик вне форума
Прохожий
 
Регистрация: 02.08.2011
Сообщения: 7
Репутация: 10
По умолчанию

Цитата:
Сообщение от M.A.D.M.A.N.
SuspendThread.

Почитал документацию по SuspendThread, но нигде не видел там возможности измерения загруженности видеокарты.
Ответить с цитированием
  #4  
Старый 06.10.2011, 16:12
Рубик Рубик вне форума
Прохожий
 
Регистрация: 02.08.2011
Сообщения: 7
Репутация: 10
По умолчанию

Фактически, вопрос состоит в том, как программно узнать загруженность произвольной современной видеокарты (AMD и nVidia) в конкретный момент времени.
Ответить с цитированием
  #5  
Старый 06.10.2011, 16:42
Аватар для M.A.D.M.A.N.
M.A.D.M.A.N. M.A.D.M.A.N. вне форума
Sir Richard Abramson
 
Регистрация: 05.04.2008
Сообщения: 5,505
Версия Delphi: XE10
Репутация: выкл
По умолчанию

Покопай в сторону драйверов производителей видеокарт.
__________________
— Как тебя понимать?
— Понимать меня не обязательно. Обязательно меня любить и кормить вовремя.


На Delphi, увы, больше не программирую.
Рекомендуемая литература по программированию
Ответить с цитированием
  #6  
Старый 07.10.2011, 07:07
Pyro Pyro вне форума
Так проходящий
 
Регистрация: 18.07.2011
Сообщения: 805
Версия Delphi: 7Lite
Репутация: 6063
По умолчанию

А само вычисление это программа? с исходником?
Ответить с цитированием
  #7  
Старый 07.10.2011, 07:17
Аватар для M.A.D.M.A.N.
M.A.D.M.A.N. M.A.D.M.A.N. вне форума
Sir Richard Abramson
 
Регистрация: 05.04.2008
Сообщения: 5,505
Версия Delphi: XE10
Репутация: выкл
По умолчанию

Цитата:
Сообщение от Pyro
А само вычисление это программа? с исходником?
Вполне возможно, что есть SDK и API.
__________________
— Как тебя понимать?
— Понимать меня не обязательно. Обязательно меня любить и кормить вовремя.


На Delphi, увы, больше не программирую.
Рекомендуемая литература по программированию
Ответить с цитированием
  #8  
Старый 07.10.2011, 12:55
AlexSku AlexSku вне форума
Специалист
 
Регистрация: 07.05.2007
Адрес: Москва
Сообщения: 884
Репутация: 21699
По умолчанию

Цитата:
Сообщение от Рубик
Есть задача: производить вычисления на видеокарте только в том случае, если она простаивает. То есть у процесса должен быть минималный приоритет (по отношению к процессам видеокарты) и выполняться он должен только если загруженность видеокарты, скажем, не более 30%. Например: открыт браузер -- процесс работает, запустил игру -- процесс остановился, вышел из игры -- снова работает.
В какую сторону копать?
1) Что значит "вычисления на видеокарте"?

2) Если у твоей задачи должен быть низкий приоритет, так сразу его и делай. А Windows сама решит, сколько времени давать процессору для решения низкоприоритетной задачи.

3) Хорошая графика посылает команды драйверу видеокарты и эта графика обрабатывается ВИДЕОПРОЦЕССОРОМ (GPU), а если твоя задача работает на обычном процессоре (CPU), то эти две микросхемы работают параллельно. Даже есть ещё арифметический сопроцессор (когда-то давно был в виде отдельной микросхемы, а сейчас на одном кристалле с главным процессором, но на ассемблере можно писать команды, которые параллельно работают на главном и на арифметическом). Даже сейчас и главный процессор состоит из 2 - 4 ядер, так что распараллеливание и там происходит.
Ответить с цитированием
  #9  
Старый 07.10.2011, 16:11
Рубик Рубик вне форума
Прохожий
 
Регистрация: 02.08.2011
Сообщения: 7
Репутация: 10
По умолчанию

Цитата:
Сообщение от Pyro
А само вычисление это программа? с исходником?

Само вычисление на OpenCL, вызываются через DLL-посредника.
Ответить с цитированием
  #10  
Старый 07.10.2011, 16:14
Рубик Рубик вне форума
Прохожий
 
Регистрация: 02.08.2011
Сообщения: 7
Репутация: 10
По умолчанию

Цитата:
Сообщение от AlexSku
1) Что значит "вычисления на видеокарте"?

Вычисления на GPU с использованием OpenCL.

Цитата:
2) Если у твоей задачи должен быть низкий приоритет, так сразу его и делай. А Windows сама решит, сколько времени давать процессору для решения низкоприоритетной задачи.

Нагрузка на процессор (CPU) копеечная, роли не играет.

Цитата:
3) Хорошая графика посылает команды драйверу видеокарты и эта графика обрабатывается ВИДЕОПРОЦЕССОРОМ (GPU), а если твоя задача работает на обычном процессоре (CPU), то эти две микросхемы работают параллельно. Даже есть ещё арифметический сопроцессор (когда-то давно был в виде отдельной микросхемы, а сейчас на одном кристалле с главным процессором, но на ассемблере можно писать команды, которые параллельно работают на главном и на арифметическом). Даже сейчас и главный процессор состоит из 2 - 4 ядер, так что распараллеливание и там происходит.

Программа выполняется на CPU, но она ничего не делает, кроме как запускает вычисления, выполняющиеся уже на GPU.
Ответить с цитированием
  #11  
Старый 07.10.2011, 16:26
Pyro Pyro вне форума
Так проходящий
 
Регистрация: 18.07.2011
Сообщения: 805
Версия Delphi: 7Lite
Репутация: 6063
По умолчанию

В opencl не шарю, но я бы там искал средства определить загруженность
Ответить с цитированием
  #12  
Старый 08.10.2011, 10:18
WinDriver WinDriver вне форума
Прохожий
 
Регистрация: 06.05.2009
Сообщения: 8
Репутация: 10
По умолчанию

А почему бы не посмотреть нативные функции GPU? У разных видюх они различаются, но базовые остаются. Но есть один маленький момент. На GPU нельзя запустить какой-либо процесс бесконечно, как на CPU. При превышении времени исполнения задачи на GPU он его просто убивает (см. спецификации). Таким образом вычислительная задача на GPU должна быть по времени как можно быстрее. И в этом весь смысл распаралеливания - много потоков с малым временем исполнения. Что же касается Idle-режима - GPU не поддерживает его в принципе, всё должна делать ваша программа. Сходите на сайт nVidia, посмотрите SDK - увидите.
Ответить с цитированием
  #13  
Старый 08.10.2011, 12:11
ChinYan ChinYan вне форума
Тыкаю клавиши
 
Регистрация: 13.07.2009
Сообщения: 804
Версия Delphi:
Репутация: 48633
По умолчанию

Особо не ковырял это дело, но можно поглядеть в сторону nVidia и CUDA- возможность считать, используя GPU, там может быть возможность для проверки зашрузки GPU
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 23:16.


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2023

ВКонтакте   Facebook   Twitter