Je travaille avec quelqu'un qui a du code MATLAB qu'ils souhaitent être accélérés. Ils essaient actuellement de convertir tout ce code en Cuda pour l'amener à courir sur une CPU. Je pense que cela serait plus rapide d'utiliser la boîte à outils parallèle parallèle de Matlab pour accélérer cette opération et exécutez-la sur un cluster possédant la boîte à outils informatique distribuée de Matlab, ce qui me permet de l'exécuter sur plusieurs nœuds de travail. Maintenant, dans le cadre de la boîte à outils informatique parallèle, vous pouvez utiliser choses comme GPuarray . Cependant, je suis confus quant à la façon dont cela fonctionnerait. Utilisez des choses comme Paraloralization et GPUARRAY (programmation GPU) compatible avec l'autre? Puis-je utiliser les deux? Quelque chose peut-il être divisé sur différents nœuds de travailleurs (parallélize) tout en utilisant les GPU disponibles sur chaque travailleur? p>
Ils pensent que c'est toujours la peine d'explorer le temps qu'il faut pour convertir tout votre code MATLAB en code CUDA pour fonctionner sur une machine avec plusieurs GPU ... mais je pense que la bonne approche serait d'utiliser les fonctionnalités déjà intégrées à Matlab . p>
Toute aide, conseil, direction serait vraiment appréciée! p>
merci! p>
3 Réponses :
Si vous l'écrivez dans Cuda, il est garanti de fonctionner parallèlement au niveau de la puce parallèle avec la meilleure suppression de Matlab pour une architecture non parallèle et de vos meilleurs efforts pour que cela fonctionne en parallèle. P>
genre de comme boire de l'eau de l'eau de montagne fraîche et de l'eau filtrée. Aller avec la solution puriste. P>
Lorsque vous utilisez PARPUR, vous divisez efficacement votre boucle en tâches, avec une tâche par boucle d'itération et vous séparez ces tâches à calculer en parallèle par plusieurs travailleurs où chaque travailleur peut être considéré comme une session de matlab sans une interactive interactive. Vous configurez votre cluster pour exécuter un nombre spécifié de travailleurs sur chaque nœud du cluster (en général, vous choisiriez d'exécuter un certain nombre de travailleurs égaux au nombre de noyaux de processeur disponibles sur ce nœud). P>
D'autre part, GPUARRAY indique à MATLAB que vous souhaitez effectuer une matrice disponible pour le traitement par le GPU. Sous la cagoule, Matlab utilise les données de la mémoire principale à la mémoire interne du tableau graphique. Certaines fonctions MATLAB (il y a une liste d'entre eux dans la documentation) peut fonctionner sur GPuarrays et le calcul se produit sur le GPU. P>
Les différences essentielles entre les deux techniques sont que les calculs de Porfor se produisent sur les CPU des nœuds du cluster avec un accès direct à la mémoire principale. Les cœurs de la CPU ont généralement une fréquence d'horloge élevée, mais il y en a généralement moins d'entre eux dans un cluster de la CPU que des cœurs GPU. Individuellement, les noyaux GPU sont plus lents qu'un noyau typique de la CPU et leur utilisation nécessite que des données soient transférées de la mémoire principale à la mémoire vidéo et à nouveau, mais il y en a beaucoup d'autres dans un groupe. Pour autant que je sache, des approches hybrides sont censées être possibles, dans lesquelles vous avez un groupe de PC et chaque PC dispose d'une ou de plusieurs planches Nvidia Tesla et que vous utilisez à la fois des boucles et des gèvres. Cependant, je n'ai pas encore eu l'occasion d'essayer cela. P>
Si vous êtes principalement intéressé par des simulations, le traitement GPU est le choix parfait. Cependant, si vous souhaitez analyser (grandes) données, allez avec la parallisation. La raison en est que ce traitement GPU n'est que plus rapide que le traitement de la CPU si vous n'avez pas à copier des données. En cas de simulation, vous pouvez générer la plupart des données sur le GPU et ne nécessiter que de copier le résultat. Si vous essayez de travailler avec de plus grandes données sur le GPU, vous rencontrerez très souvent des problèmes de mémoire. La parallisation est excellente si vous avez de grandes structures de données et plus de 2 cœurs dans votre ordinateur de votre ordinateur. P>
Vous pourriez envisager d'essayer une veste pour cela au lieu de GPuarrays. Je n'ai entendu parler de personne satisfait de la performance des GPuarrays, pour ces raisons: accelereyes.com/compare