Как получить прямой доступ к графическому процессору? - PullRequest
4 голосов
/ 22 июля 2010

Как многие из вас знают, процессоры не предназначены для выполнения вычислений с плавающей запятой в отличие от графических процессоров.Мне интересно, как использовать мощность графического процессора без какого-либо уровня абстракции или драйвера.Могу ли я программировать для GPU, используя ассемблер, язык C, C ++ (я имею в виду, как?).Хотя сборка, по-видимому, помогает мне получить прямой доступ к графическому процессору, C / C ++, вероятно, понадобится библиотека среднего уровня (например, OpenCL) для доступа к графическому процессору.

Позвольте мне задать вам еще один вопрос: каковы возможности современного графического процессорабудет выставлен программисту без какого-либо стороннего драйвера?

Ответы [ 3 ]

5 голосов
/ 22 июля 2010

Интерфейсы не документированы, поэтому что-то вроде OpenCL - это единственный практический способ программирования GPU напрямую.

Без драйвера вы бы застряли, пытаясь восстановить всю функциональностьGPU самостоятельно.

0 голосов
/ 04 июня 2016

Производители графических процессоров, такие как NVDIA и ATI, являются компаниями с закрытыми исходными кодами, которые решили не раскрывать архитектуру графических процессоров и работу о них широкой публике. Вот почему мы не можем напрямую программировать графический процессор, как мы можем с большей частью процессора. Единственный способ использовать мощь графического процессора для вычислений - это использовать предоставляемую библиотеку, такую ​​как CUDA, в случае NVDIA. Но есть возможный способ, где вы можете напрямую программировать GPU для вычислений, но для этого вам необходимо провести обратный инжиниринг и документировать все GPU, его регистры и SYSTEMCALLS, и вы знаете, что это невозможно при нашем доступе к ограниченным ресурсам и ограниченному времени.

PS: Единственный другой способ - войти в систему в качестве основного разработчика для GPU и подписать NDA (Соглашение о неразглашении) с поставщиками, что, скорее всего, не случится для начинающих и для таких людей, как мы.

0 голосов
/ 26 июля 2010

Ну, по сути, вам придется написать драйвер для Windows или Linux. И интерфейсы могут быть задокументированы в зависимости от того, какой чипсет вы пытаетесь использовать. На сайте Intel есть множество документов в формате PDF. Однако это в лучшем случае нетривиальное упражнение, и ваш код можно будет использовать только на этом наборе оборудования. Простое чтение и понимание документации в большинстве случаев потребует определенных усилий, потому что «ООП - это не то, как это работает на самом деле», и как это делается, или что не задокументировано, только оборудование и регистры. Однако, если ДЕЙСТВИТЕЛЬНО хотите сделать это, лучше всего начать с драйверов с открытым исходным кодом для Linux для конкретного набора микросхем и настроить их на SICK TWISTED. В целом, кроме учебного аспекта, это, вероятно, ПЛОХАЯ идея.

...