NON.
Chaque élément de la sortie dépend de TOUTES éléments du vecteur d'entrée x
Par exemple : si x
est l'entrée et y
est la sortie, A
est la matrice, Le site i
e élément de y
serait généré de la manière suivante.
y_i = A_i1*x_1 + A_i2 * x_2 ... + A_in * x_n
Donc si vous écrasez x_i
avec le résultat ci-dessus, d'autres x_r
qui dépend de x_i
ne recevra pas les données appropriées et produira des résultats incorrects.
EDIT
J'allais en faire un commentaire, mais il devenait trop gros. Voici donc l'explication de la raison pour laquelle le raisonnement ci-dessus est également valable pour les implémentations parallèles.
À moins que chaque groupe ou fil parallèle ne fasse une copie locale des données d'origine, auquel cas les données d'origine peuvent être détruites, ce raisonnement est valable.
Cependant, cette façon de faire (copie locale) n'est pratique et bénéfique que lorsque
- Chaque thread/bloc parallèle ne serait pas en mesure d'accéder au fichier tableau original sans une quantité significative d'over-head.
- Il y a assez local mémoire (qu'il s'agisse de cache, de mémoire partagée ou même de mémoire ordinaire dans le cas de MPI) afin de conserver une copie séparée pour chaque thread / bloc parallèle.
Notes :
- (1) peut ne pas être vrai pour de nombreuses applications multithreadées sur une seule machine.
- (1) peut être vrai pour CUDA mais (2) n'est absolument pas applicable pour CUDA.