55 votes

Accélération du code MATLAB à l'aide des GPU ?

AccelerEyes a annoncé en décembre 2012 qu'elle travaillait avec Mathworks sur le code GPU et a abandonné son produit Jacket pour MATLAB :

http://blog.accelereyes.com/blog/2012/12/12/exciting-updates-from-accelereyes/

Malheureusement, ils ne vendent plus de licences Jacket.

D'après ce que j'ai compris, la solution Jacket GPU Array basée sur ArrayFire était beaucoup plus rapide que la solution gpuArray fournie par MATLAB.

J'ai commencé à travailler avec gpuArray, mais je constate que de nombreuses fonctions sont mal implémentées. Par exemple, une simple

myArray(:) = 0 

est très lent. J'ai écrit quelques noyaux CUDA personnalisés, mais la fonctionnalité standard de MATLAB mal implémentée ajoute beaucoup de surcharge, même si l'on travaille avec gpuArrays de manière cohérente dans tout le code. J'ai résolu certains problèmes en remplaçant le code MATLAB par du code CUDA écrit à la main - mais je ne veux pas réimplémenter la fonctionnalité standard de MATLAB.

Une autre fonctionnalité qui me manque est celle des matrices GPU éparses.

Mes questions sont donc les suivantes :

Comment accélérer les implémentations GPU par défaut fournies par MATLAB, qui sont mal mises en œuvre ? En particulier, comment puis-je accélérer les opérations sur les matrices éparses dans MATLAB en utilisant le GPU ?

4voto

Re Captcha Points 1439

MatLab prend en charge les GPU basés sur CUDA. Vous devez y accéder à partir de la "Parallel Computing Toolbox". J'espère que ces deux liens vous aideront également.

http://www.mathworks.com/products/parallel-computing/description5.html

http://www.mathworks.com/discovery/matlab-gpu.html

2voto

dinwal Points 56

J'ai eu le plaisir d'assister à une conférence de John, le fondateur d'AccelerEyes. Ils n'ont pas obtenu l'accélération parce qu'ils ont simplement supprimé le code mal écrit et l'ont remplacé par du code qui a économisé quelques bits ici et là. Leur gain de vitesse provient principalement de l'exploitation de la disponibilité du cache et de la réalisation de nombreuses opérations en mémoire (GPU). Matlab reposait sur le transfert de données entre le GPU et le CPU, si je me souviens bien, et donc l'accélération était folle.

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