6 votes

Comment accéder directement à un GPU ?

Comme la plupart d'entre vous le savent, les CPU ne sont pas bien conçus pour effectuer des calculs en virgule flottante, contrairement aux GPU. Je me demande comment utiliser la puissance des GPU sans couche d'abstraction ni pilote. Puis-je programmer pour un GPU en utilisant le langage assembleur, C, C++ (je veux dire comment ?). Bien que l'assemblage semble m'aider à accéder directement au GPU, le C/C++ aura probablement besoin d'une bibliothèque moyenne (par exemple OpenCL) pour accéder au GPU.

Laissez-moi vous poser une autre question : Quelle part des capacités d'un GPU moderne sera exposée à un programmeur sans pilote tiers ?

8voto

wrosecrans Points 564

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

Sans pilote, vous seriez coincé en essayant de faire de l'ingénierie inverse sur la fonctionnalité complète du GPU par vous-même.

1voto

NoMoreZealots Points 2539

Eh bien, essentiellement, vous devriez écrire un pilote sous Windows ou Linux. Et les interfaces peuvent être documentées en fonction du chipset que vous essayez d'utiliser. Intel a beaucoup de documentation PDF sur son site web. Cependant, il s'agit au mieux d'un exercice non trivial et votre code ne pourra être utilisé que sur cet ensemble de matériel. La simple lecture et la compréhension de la documentation demanderont un peu d'efforts dans la plupart des cas, car les "OOPs, ce n'est pas comme ça que ça marche vraiment" et le "comment faire ceci ou cela" ne sont pas documentés, juste le matériel et les registres. Cependant, si vous voulez VRAIMENT faire cela, votre meilleure chance serait de commencer avec des pilotes open source sous Linux pour un chipset particulier et de les adapter à vos besoins. En somme, à part pour l'aspect apprentissage, c'est probablement une MAUVAISE idée.

1voto

Niraj Khadka Points 31

Les fabricants de GPU tels que NVDIA et ATI sont des sociétés fermées qui ont choisi de ne pas divulguer l'architecture et le fonctionnement des GPU au grand public. C'est pourquoi nous ne pouvons pas programmer directement le GPU comme nous pouvons le faire avec la plupart des CPU. La seule façon d'exploiter la puissance du GPU pour le calcul est d'utiliser la bibliothèque fournie comme CUDA dans le cas de NVDIA. Mais il y a un moyen possible de programmer directement un GPU pour des calculs, mais pour cela il faut faire de la rétro-ingénierie et documenter tous les GPU et leurs registres et SYSTEMCALLS et vous savez que ce n'est pas possible avec notre accès aux ressources limitées et au temps limité.

PS : La seule autre solution est de s'inscrire en tant que développeur principal pour le GPU et de signer un accord de non-divulgation (NDA) avec les vendeurs, ce qui ne sera probablement pas le cas pour les débutants et les particuliers comme nous.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X