Existe-t-il des problèmes / algorithmes célèbres dans le calcul scientifique qui ne peuvent pas être accélérés par la parallélisation

27

Existe-t-il des problèmes / algorithmes célèbres dans le calcul scientifique qui ne peuvent pas être accélérés par la parallélisation? Il me semble qu'en lisant des livres sur CUDA, la plupart des choses peuvent être.

RNs_Ghost
la source
La recherche binaire ne peut pas être accélérée (de manière significative, c'est-à-dire par un facteur), même si l'on considère la hiérarchie de la mémoire.
3
@Anycorn Non, Gram-Schmidt classique de gauche et Gram-Schmidt modifié de droite fonctionnent bien en parallèle. Il existe de nombreux autres algorithmes QR parallèles, notamment le TSQR récemment popularisé.
Jed Brown
@Raphael: Je pense qu'il est possible d'accélérer la recherche binaire par le facteur log (n), n = # processeurs. Au lieu de cela, divisez l'intervalle de recherche en parties et vérifiez où continuer, divisez l'intervalle en n parties. Il y a peut-être des moyens plus efficaces, je ne sais pas.
miracle173

Réponses:

32

La question principale est la longueur du chemin critique par rapport à la quantité totale de calcul T . Si C est proportionnel à T , alors le parallélisme offre au mieux une accélération constante. Si C est asymptotiquement plus petit que T , il y a place pour plus de parallélisme à mesure que la taille du problème augmente. Pour les algorithmes dans lesquels T est polynomial dans la taille d'entrée N , le meilleur cas est C log T car très peu de quantités utiles peuvent être calculées en moins de temps logarithmique.CTCTCTTNClogT

Exemples

  • pour une résolution tridiagonale utilisant l'algorithme standard. Chaque opération dépend de la fin de l'opération précédente, il n'y a donc aucune possibilité de parallélisme. Les problèmes tridiagonaux peuvent être résolus en temps logarithmique sur un ordinateur parallèle en utilisant une résolution directe de dissection imbriquée, une décomposition de domaine à plusieurs niveaux ou une multigrille avec des fonctions de base construites en utilisant l'extension harmonique (ces trois algorithmes sont distincts dans plusieurs dimensions, mais peuvent coïncider exactement dans 1D).C=T
  • Une résolution triangulaire inférieure dense avec une matrice a T = N = O ( m 2 ) , mais le chemin critique n'est que C = m = m×mT=N=O(m2)C=m=T , donc un certain parallélisme peut être bénéfique.
  • Multigrille et FMM ont tous deux , avec un chemin critique de la longueur C = connectent T .T=NC=logT
  • La propagation explicite des ondes pendant un temps sur un maillage régulier du domaine ( 0 , 1 ) d nécessite k = τ / Δ t τ N 1 / d pas de temps (pour la stabilité), donc le chemin critique est au moins C = k . La quantité totale de travail est T = k N = τ N ( d + 1 ) / d . Le nombre maximal utile de processeurs est P = Tτ(0,1)dk=τ/ΔtτN1/dC=kT=kN=τN(d+1)/d , le facteur N 1 / d restantne peut pas être récupéré par un parallélisme accru.P=T/C=NN1/d

Complexité formelle

La classe de complexité NC caractérise les problèmes qui peuvent être résolus efficacement en parallèle (c'est-à-dire en temps polylogarithmique). On ne sait pas si , mais il est largement supposé être faux. Si c'est effectivement le cas, alors P-complete caractérise les problèmes qui sont "intrinsèquement séquentiels" et ne peuvent pas être accélérés de manière significative par le parallélisme.NC=P

Jed Brown
la source
13

Pour donner un aspect théorique à cela, NC est défini comme la classe de complexité qui peut être résolue en temps sur un système avec O ( n k ) processeurs parallèles. On ne sait toujours pas si P = N C (bien que la plupart des gens pensent que ce n'est pas le cas) où P est l'ensemble des problèmes pouvant être résolus en temps polynomial. Les problèmes "les plus difficiles" à paralléliser sont connus sous le nom de problèmes P- complets dans le sens où chaque problème dans P peut être réduit à un problème P- complet viaO(logcn)O(nk)P=NCPPPPRéductions de N C. Si vous montrez qu'un seulproblème P complet est dans N C , vous prouvez que P = N C (bien que ce soit probablement faux comme mentionné ci-dessus).NCPNCP=NC

Ainsi, tout problème qui est complet serait intuitivement difficile à paralléliser (bien que de grandes accélérations soient toujours possibles). Un programme complet en P pour lequel nous n'avons même pas de très bonnes accélérations à facteur constant est la programmation linéaire (voir ce commentaire sur l'échange OR).PP

Opter
la source
9

Commencez par bloquer la loi d'Amdahl . Fondamentalement, tout ce qui comporte un grand nombre d'étapes en série bénéficiera de manière insignifiante du parallélisme. Quelques exemples incluent l'analyse, l'expression régulière et la plupart des compressions à rapport élevé.

En dehors de cela, le problème clé est souvent un goulot d'étranglement dans la bande passante mémoire. En particulier, avec la plupart des GPU, vos flops théoriques dépassent largement la quantité de nombres à virgule flottante que vous pouvez obtenir pour vos ALU, car ces algorithmes à faible intensité arithmétique (flops / cache-miss) passeront une grande majorité du temps à attendre sur la RAM.

Enfin, chaque fois qu'un morceau de code nécessite une ramification, il est peu probable qu'il obtienne de bonnes performances, car la logique d'ALU est généralement supérieure à la logique.

En conclusion, un exemple vraiment simple de quelque chose qui serait difficile à obtenir un gain de vitesse à partir d'un GPU est simplement de compter le nombre de zéros dans un tableau d'entiers, car vous devrez peut-être souvent créer une branche, tout au plus effectuer 1 opération (incrémenter de un) dans le cas où vous trouvez un zéro et effectuez au moins une extraction de mémoire par opération.

Un exemple exempt du problème de branchement est de calculer un vecteur qui est la somme cumulée d'un autre vecteur. ([1,2,1] -> [1,3,4])

Je ne sais pas si ceux-ci comptent comme "célèbres" mais il y a certainement un grand nombre de problèmes avec lesquels le calcul parallèle ne vous aidera pas.

meawoppl
la source
3
L'exemple de branchement gratuit que vous avez donné est le préfixe-somme, qui a en fait un bon algorithme parallèle: http.developer.nvidia.com/GPUGems3/gpugems3_ch39.html Le calcul du nombre de zéros devrait être efficace pour des raisons similaires. Il n'y a aucun moyen de contourner l'intensité arithmétique, cependant ...
Max Hutchinson
Cool. Je suis corrigé sur celui-là.
meawoppl du
8

La (célèbre) méthode de marche rapide pour résoudre l'équation Eikonal ne peut pas être accélérée par la parallélisation. Il existe d'autres méthodes (par exemple des méthodes de balayage rapide) pour résoudre l'équation Eikonal qui se prêtent mieux à la parallélisation, mais même ici, le potentiel d'accélération (parallèle) est limité.

Le problème avec l'équation Eikonal est que le flux d'informations dépend de la solution elle-même. En gros, les informations circulent le long des caractéristiques (c'est-à-dire les rayons lumineux en optique), mais les caractéristiques dépendent de la solution elle-même. Et le flux d'informations pour l'équation Eikonale discrétisée est encore pire, nécessitant des approximations supplémentaires (comme implicitement présentes dans les méthodes de balayage rapide) si une accélération parallèle est souhaitée.

Pour voir les difficultés de la parallélisation, imaginez un joli labyrinthe comme dans certains des exemples de la page Web de Sethian . Le nombre de cellules sur le chemin le plus court à travers le labyrinthe (probablement) est une limite inférieure pour le nombre minimal d'étapes / itérations de tout algorithme (parallèle) résolvant le problème correspondant.

(J'écris "(probablement) est", car les bornes inférieures sont notoirement difficiles à prouver et nécessitent souvent des hypothèses raisonnables sur les opérations utilisées par un algorithme.)

Thomas Klimpel
la source
Bel exemple, mais je ne crois pas que votre borne inférieure revendiquée. En particulier, des méthodes multigrilles peuvent être utilisées pour résoudre l'équation eikonale. Comme pour les multigrilles pour Helmholtz haute fréquence, les défis consistent principalement à concevoir des espaces grossiers adaptés. Dans le cas d'un labyrinthe, une stratégie d'agrégation de graphes doit être efficace, la représentation grossière étant déterminée en résolvant des problèmes locaux (donc indépendants) pour des segments du labyrinthe.
Jed Brown
En général, lorsque les méthodes multigrilles fonctionnent bien, cela signifie que la granularité du problème est inférieure à la description, et une «quantité de réponses correctes» disproportionnée provient de l'étape de résolution de cours. Juste une observation, mais la limite inférieure de ce genre de chose est délicate!
meawoppl
@JedBrown D'un point de vue pratique, le multigrille pour Helmholtz haute fréquence est assez difficile, contrairement à ce que votre commentaire semble impliquer. Et l'utilisation de multigrilles pour l'équation eikonale est "peu commune", c'est le moins qu'on puisse dire. Mais je vois votre objection "théorique" contre la limite inférieure suggérée: les décalages temporels de divers points à l'intérieur du labyrinthe peuvent être calculés avant que le temps pour atteindre ces points ne soit connu, et ajoutés en parallèle après que les informations manquantes soient disponibles. Mais dans la pratique, les solveurs eikonaux parallèles à usage général sont heureux s'ils se rapprochent réellement de la limite.
Thomas Klimpel
Je ne voulais pas insinuer que c'était facile, les espaces grossiers à rayons d'onde sont en effet très techniques. Mais je pense que nous convenons qu'il existe déjà des possibilités de parallélisme dans les régions ouvertes, alors que dans les "labyrinthes" étroits (qui exposent très peu de parallélisme avec les méthodes standard), le problème de la mise à l'échelle est plus facile à résoudre.
Jed Brown
@JedBrown Slide 39 of www2.ts.ctw.utwente.nl/venner/PRESENTATIONS/MSc_Verburg.pdf (from 2010) dit des choses comme "Étendre le solveur de 2D à 3D" et "Adapter la méthode aux problèmes avec des nombres d'ondes très variables". Le multigrille à rayons d'onde peut donc être prometteur, mais "pas encore mûr" semble plus approprié que "très technique" pour décrire ses problèmes actuels. Et ce n'est pas vraiment un solveur Helmholtz haute fréquence (car c'est un solveur "full wave"). Il existe d'autres solveurs Helmholtz multigrilles "suffisamment matures" (solveurs "pleine onde"), mais même ceux-ci sont encore "des recherches actives".
Thomas Klimpel
1

Une autre classe de problèmes difficiles à paralléliser dans la pratique sont les problèmes sensibles aux erreurs d'arrondi, où la stabilité numérique est obtenue par la sérialisation.

Considérons par exemple le processus de Gram – Schmidt et sa modification en série. L'algorithme fonctionne avec des vecteurs, vous pouvez donc utiliser des opérations vectorielles parallèles, mais cela ne s'adapte pas bien. Si le nombre de vecteurs est grand et la taille du vecteur est petite, l'utilisation de Gram – Schmidt classique parallèle et la réorthogonalisation peuvent être stables et plus rapides que Gram – Schmidt modifié unique, bien que cela implique de faire plusieurs fois plus de travail.

Jakub Klinkovský
la source