2009-09-09 5 views
2

J'ai implémenté la factorisation de Cholesky pour résoudre une grande équation linéaire sur GPU en utilisant ATI Stream SDK. Maintenant, je veux exploiter la puissance de calcul de plus en plus de GPU et je veux exécuter ce code sur plusieurs GPU.Comment faire pour dimensionner la factorisation de Cholesky sur plusieurs GPUs

Actuellement, j'ai une machine et un GPU installés dessus et la factorisation de Cholesky fonctionne correctement. Je veux le faire pour N machine et tous ont un GPU installé sur eux. Alors suggère moi comment dois-je procéder.

Répondre

2

D'abord, vous devez savoir que cette approche introduira trois niveaux de latence pour toute communication entre les nœuds:

  1. mémoire GPU sur la machine 1 à la mémoire principale sur la machine 1
  2. La mémoire principale sur la machine 1 à la mémoire principale sur la machine 2
  3. la mémoire principale sur la machine 2 à la mémoire GPU sur la machine 2

Une bonne première étape sera de faire un peu de retour des calculs enveloppent à d etermine si l'accélération que vous obtenez en divisant le problème entre plusieurs machines l'emportera sur la latence que vous introduisez. Une fois que vous êtes sûr que l'approche est celle que vous voulez suivre, c'est à vous de l'implémenter correctement. Notez que, pour le moment, les bibliothèques CUDA ou OpenCL de NVIDIA seront de meilleurs choix pour vous parce qu'elles vous permettent d'accéder au GPU pour le calcul sans le coupler avec une session X. Une fois que l'implémentation OpenCL d'ATI prend en charge le GPU, cela devrait également être une option viable.

Puisque vous avez déjà une implémentation GPU de travail, voici les étapes de base que vous devez suivre:

  • Déterminez comment vous mettez à jour votre algorithme de factorisation pour soutenir le traitement par des noeuds séparés
  • Mettre en place l'échange de données entre N ordinateurs (je remarque que vous avez opté pour MPI pour cela)
  • Configurer l'opération de dispersion qui va diviser le problème d'entrée parmi les nœuds de calcul
  • Configurer l'échange de données entre une machine et son GPU
  • Mettre en place la recueillir opération qui rassemblera les résultats des noeuds dans le un nœud
0

J'ai montré ce Q à un de mes collègues qui connaît ces choses. Il vous a suggéré d'utiliser ScaLAPACK.

Questions connexes