6
votes

Comment accéder directement à un GPU?

Comme la plupart d'entre vous savent que les processeurs ne sont pas bien conçus pour effectuer un calcul de point flottant en contraste avec les GPU. Je me demande comment utiliser la puissance de GPU sans aucune couche d'abstraction ni pilote. Puis-je programmer pour un GPU à l'aide de la langue de l'assemblage, C, C ++ (je veux dire comment?). Bien que l'assemblage semble m'aider à accéder directement à la GPU, C / C ++ aura probablement besoin d'une bibliothèque moyenne (par exemple opencl) pour accéder au GPU.

Permettez-moi de vous poser une autre question: combien de capacités de GPU modernes seront exposées à un programmeur sans chauffeur tiers?


0 commentaires

3 Réponses :


8
votes

Les interfaces ne sont pas documentées, donc quelque chose comme opencl est le seul moyen pratique de programmer la GPU directement.

Sans pilote, vous seriez coincé à essayer d'inverser l'ingénieur la fonctionnalité complète du GPU par vous-même.


4 commentaires

Oui, dans un sens pratique, c'est impossible.


Ce n'est pas impossible, c'est vraiment vraiment, vraiment, vraiment une mauvaise idée. Pour accéder au matériel, vous devez essentiellement écrire un pilote. Et passer des semaines / mois / années à apprendre comment fonctionne le matériel.


Afaik Les interfaces sont assez bien documentées pour les chips Intel et Ati actuels. Via la documentation, OTOH, est juste une liste de registres.


Qu'en est-il des copeaux à bord comme Intel HD ou Apus comme Ryzen? Puis-je Accéder à ces ?



1
votes

Eh bien, essentiellement, vous devriez écrire un pilote sur Windows ou Linux. Et les interfaces peuvent être documentées en fonction de la chipset que vous essayez d'utiliser. Intel a des charges de documentation PDF sur son site Web. Cependant, il s'agit d'un exercice non trivial au mieux et votre code ne pourra être utilisé que sur cet ensemble de matériel. En plus de lecture et de compréhension de la documentation, la documentation prendra un peu de choses dans la plupart des cas, car "Oops n'est pas la façon dont il fonctionne vraiment" et comment il fait cela ou qui ne sont pas documentés uniquement sur le matériel et les registres. Cependant, si vous voulez vraiment faire cela, votre meilleur choix serait de commencer par des pilotes open-sources sur Linux pour un chipset et un sweek particulier de votre objectif malade. Dans l'ensemble, autrement que pour l'aspect apprenant, c'est prob une mauvaise idée.


0 commentaires

1
votes

Le fabricant GPU comme NVDIA et ATI sont des sociétés de source fermée qui a choisi de ne pas divulguer l'architecture du GPU et de travailler sur le grand public. C'est pourquoi nous ne pouvons pas programmer directement le GPU comme possible avec le plus de processeur. La seule façon de pouvoir exploiter la puissance du GPU pour le calcul consiste à utiliser la bibliothèque fournie comme Cuda en cas de NVDIA. Mais il y a une manière possible où vous pouvez programmer directement un GPU pour des calculs, mais pour que vous ayez besoin de renverser l'ingénieur et de documenter tous les GPU et ses registres et ses enregistreurs et vous savez que cela n'est pas possible avec notre accès à des ressources limitées et à un temps limité. < / p>

PS: La seule autre solution consiste à se connecter en tant que développeur de base pour le GPU et à signer une NDA (accord de non divulgation) avec les fournisseurs qui ne se produira probablement pas pour des démarreurs et des personnes comme nous.


1 commentaires

ATI / AMD utilise certains des Devs pour les pilotes Radeon Open-Source et libère certaines spécifications. Afaik, ce n'est vraiment que Nvidia qui refuse totalement de tout ouvrir.