Programmation GPU sur les appareils Android

Je n'ai aucune connaissance de la programmation GPU et j'aimerais en avoir un aperçu. Je dois développer un projet de traitement D'Image, travaillant sur le GPU des smartphones (sur les appareils Android), mais je ne sais pas par où commencer.

1)programmation GPU du Smartphone et programmation autres GPU (Nvidia GeForce 9 par exemple) sont égaux?

2) j'ai entendu parler de calcul ou de programmation graphique pour GPU: Quelle est la différence? Sont-ils égaux?

3)J'ai déjà configuré Eclipse pour développer des applications Android: de quels autres outils ai-je besoin?

4)la programmation GPU du Smartphone (pour Android) est-elle indépendante de l'appareil? Est-ce la même chose pour Samsung S4, LG G3, et autre appareil Android?

5) de quelle bibliothèque ai-je besoin? J'ai entendu parler D'OpenCV et Tegra pack de Nvidia.

Pouvez-vous m'aider? Aussi, pouvez-vous m'aider avec tous les liens?

18
demandé sur Bastiaan Quast 2015-03-19 13:29:05

3 réponses

1) programmation GPU du Smartphone et programmation autres GPU (Nvidia GeForce 9 par exemple) sont égaux?

Pas toujours. Par exemple, selon l'Api et la plateforme que vous utilisez, certains appareils mobiles vous permettent de développer exactement le même programme que vous faites pour les GPU de bureau.

par exemple, si vous faites le programme CUDA sur les appareils Tegra K1/X1, ce serait presque le même que vous le feriez sur le GeForce 9.

Mais, si vous utilisez OpenCL, vous devez être prudent. Certains appareils mobiles ne prennent en charge Qu'OpenCL Embedded Profile, ce qui signifie que les fonctionnalités sont limitées par rapport au GPU de bureau. Même si certains appareils mobiles prennent en charge le profil complet D'OpenCL, vous avez encore moins de ressources à gérer, donc, le programme doit encore être modifié pour s'adapter aux plateformes mobiles.

2) Je m'interroge sur le calcul ou la programmation graphique pour GPU: qu'est-ce que le la différence? Sont eux l'égalité?

La programmation graphique se concentre davantage sur le rendu graphique. Le but est de dessiner quelque chose sur l'écran. Les principales API dont vous avez besoin pour le téléphone seraient OpenGL ES pour Android, ou Metal pour iOS, ou DX Pour Windows.

le calcul pour GPU signifie que vous voulez terminer certaines tâches non liées au rendu graphique, à la place, vous avez besoin de calculer une équation ou de calculer des valeurs à partir des nombres d'entrée. Par exemple, vous pouvez filtrer un image ou traitement de certaines vidéos et ainsi de suite. Les principales API de calcul sont OpenCL, CUDA et Metal.

3) J'ai déjà configuré Eclipse pour développer des applications Android: outils dont j'ai besoin?

Vous avez besoin D'Android NDK bien sûr. Vous avez besoin de bibliothèques OpenCL, ou SDK pour l'appareil mobile que vous avez.

4) la programmation GPU du Smartphone (pour Android) est-elle indépendante de l'appareil? C' s les mêmes pour Samsung S4, LG G3, et autres Android dispositif?

bien sûr, la capacité de l'appareil a une énorme différence dans ce que vous pouvez faire. La grande différence est dans le chipset utilisé dans le téléphone. Cela déterminera quel SDK vous devez utiliser et les caractéristiques du matériel seront très différentes.

une autre chose à noter est que la programmation GPU n'est généralement pas performance-portable en raison de l'énorme différence de matériel. Donc, très bien optimisé le code source sur un téléphone pourrait ne pas être le meilleur sur un autre téléphone.

5) de quelle bibliothèque ai-je besoin?Je recherche OpenCV et Tegra pack de Nvidia.

OpenCV est la vision par ordinateur de la bibliothèque. Que vous en ayez besoin ou non dépend des types d'algorithmes sur lesquels vous travaillez. Si vos applications reposent fortement sur certains algorithmes de traitement d'image et de vision par ordinateur, vous pouvez trouver oepncv utile. Mais certainement, vous pouvez toujours commencer avec vos propres bibliothèques.

Tegra NVPack n'est rien de spécial. C'est juste un logiciel / SDK paquet contenant les SDK de développement Android, NDK, IDEs et outils, ainsi que les SDK de NVidia. Vous pouvez toujours configurer votre propre environnement en installant des SDK et des outils séparés. Mais si vous développez pour les plates-formes NVidia, le NVPack pourrait être plus facile pour vous de commencer.

14
répondu Robert Wang 2016-04-30 01:24:27

une façon simple d'accéder au GPU sous android est D'utiliser OpenGLES. Le SDK android expose tous les utilisateurs en java https://www.khronos.org/opengles/sdk/docs/man/

OpenGLES vous permet d'écrire des shaders en GLSL (Open GL Shading Language) et de les compiler sur le GPU à l'exécution. https://www.opengl.org/documentation/glsl/

ce code GLSL fonctionne directement sur le GPU.

pour plus d'information sur OpenGL ES dans Android il peut être trouvé dans les docs Androidhttp://developer.android.com/guide/topics/graphics/opengl.html

c'est une approche très autochtone. L'utilisation des bibliothèques dépend entièrement de ce que vous voulez accomplir exactement avec le GPU

3
répondu Mitch Dart 2015-03-19 10:48:19

Android utilise OpenGL ES (Open Graphics Libary pour les systèmes embarqués)

il existe différentes versions d'OpenGL ES. Je recommande d'utiliser 2.0, mais vous pouvez également utiliser 1.0 ou une version plus récente.

la plupart des téléphones prennent en charge 2.0, vous avez plus d'options et son plus rapide que 1.0 Par conséquent, tous les téléphones 1.0 et même android simulateurs de soutien. Si vous voulez tester votre code OpenGLES 2.0, vous avez besoin d'un vrai appareil.

apprendre L'OpenGL est difficile et pourrait prendre un certain temps. Voici un bon tutoriel pour obtenir un aperçu: http://blog.db-in.com/all-about-opengl-es-2-x-part-1/

les smartphones Apple utilisent aussi OpenGLES donc si vous l'apprenez pour android, vous pouvez également l'utiliser pour iphones.

et oui, tous les appareils android utilisent OpenGL.

1
répondu Alexanus 2015-03-19 10:44:49