Meilleur auteur de réponses
Question Visual basic 2010

Question
-
Bonjour,
Est-ce que ce forum accepte les questions sur visual basic 2010 ?
Si oui voila ma question:
J'ai téléchargé VS2010 beta2 et j'essaye de faire un parallel for en vb mais je n'arrive pas à trouver la syntaxe
voici mon code:
Imports System.Threading.Tasks
Module Module1
Sub Main()
Dim i, j As Integer
Parallel.For(1, 10, i)
For j = 1 To 10
Console.WriteLine(i.ToString & "-" & j.ToString)
Next
End Sub
End Module
fred
Réponses
-
Bonjour,
Je t'aurais bien écrit un exemple moi-même mais j'ai pas installé VS 2010.
En parcourant la MSDN à partir du 2ème lien ci-dessus, tu trouves un exemple de multiplication de matrices :
http://msdn.microsoft.com/en-us/library/dd460713(VS.100).aspx
Je te conseille de lire l'article en entier, il te permettra de comparer comment cela se passe entre une boucle For normale et une boucle For parallèle.
Voilà ce que ça donneen Parallèle, ici il définit sa fonction au vol avec une expression lambda :
J'espère que ca t'aidera à comprendre la syntaxe.' A basic matrix multiplication. ' Parallelize the outer loop to partition the source array by rows. Parallel.For(0, matARows, Function(i) For j As Integer = 0 To matBCols - 1 ' Use a temporary to improve parallel performance. Dim temp As Double = 0 For k As Integer = 0 To matACols - 1 temp += matA(i, k) * matB(k, j) Next Return result(i, j) = temp Next ' Parallel.For End Function)
En fait, qu'est-ce qu'il a fait par rapport à la version normale ?
Il veut multiplier 2 matrices, et sur les 3 dimensions, il paralellise sur la 1ère dimension.
Si tu regardes l'exemple sans paralellisation, il a 3 boucles for imbriquées.
Ici il a une boucle For parallèle, dans laquelle il fait 2 boucles for imbriquées.
Il a donc remplacé un :For i As Integer = 0 To matARows - 1 '... Next
Par un :Parallel.For(0, matARows, Function(i) '... End Function)
Pour les expressions lambda et le Parallel Programming, tu as ici un article dans la MSDN, même si normalement tu n'en auras pas besoin :
http://msdn.microsoft.com/en-us/library/dd460699(VS.100).aspx
Cordialement,
Thomas
Thomas Aimonetti - C# - Sharplog Engineering - http://www.sharplog.fr
- Proposé comme réponse Gabriel MongeonModerator mardi 26 janvier 2010 13:01
- Marqué comme réponse fred75 mardi 26 janvier 2010 23:03
Toutes les réponses
-
Bonjour,
En VB, j'ai trouvé des exemples d'utilisation ici :
http://msdn.microsoft.com/en-us/library/dd460717(VS.100).aspx
http://msdn.microsoft.com/en-us/library/dd460693(VS.100).aspx
Le 1er lien décrit comment utiliser le Parallel.For.
Le 2nd lien, plus général, explique comment faire du Parallel Programming avec le framework 4.
C'est là qu'on y trouve d'ailleurs le 1er lien.
Cordialement,
Thomas
Thomas Aimonetti - C# - Sharplog Engineering - http://www.sharplog.fr -
-
Bonjour,
Je t'aurais bien écrit un exemple moi-même mais j'ai pas installé VS 2010.
En parcourant la MSDN à partir du 2ème lien ci-dessus, tu trouves un exemple de multiplication de matrices :
http://msdn.microsoft.com/en-us/library/dd460713(VS.100).aspx
Je te conseille de lire l'article en entier, il te permettra de comparer comment cela se passe entre une boucle For normale et une boucle For parallèle.
Voilà ce que ça donneen Parallèle, ici il définit sa fonction au vol avec une expression lambda :
J'espère que ca t'aidera à comprendre la syntaxe.' A basic matrix multiplication. ' Parallelize the outer loop to partition the source array by rows. Parallel.For(0, matARows, Function(i) For j As Integer = 0 To matBCols - 1 ' Use a temporary to improve parallel performance. Dim temp As Double = 0 For k As Integer = 0 To matACols - 1 temp += matA(i, k) * matB(k, j) Next Return result(i, j) = temp Next ' Parallel.For End Function)
En fait, qu'est-ce qu'il a fait par rapport à la version normale ?
Il veut multiplier 2 matrices, et sur les 3 dimensions, il paralellise sur la 1ère dimension.
Si tu regardes l'exemple sans paralellisation, il a 3 boucles for imbriquées.
Ici il a une boucle For parallèle, dans laquelle il fait 2 boucles for imbriquées.
Il a donc remplacé un :For i As Integer = 0 To matARows - 1 '... Next
Par un :Parallel.For(0, matARows, Function(i) '... End Function)
Pour les expressions lambda et le Parallel Programming, tu as ici un article dans la MSDN, même si normalement tu n'en auras pas besoin :
http://msdn.microsoft.com/en-us/library/dd460699(VS.100).aspx
Cordialement,
Thomas
Thomas Aimonetti - C# - Sharplog Engineering - http://www.sharplog.fr
- Proposé comme réponse Gabriel MongeonModerator mardi 26 janvier 2010 13:01
- Marqué comme réponse fred75 mardi 26 janvier 2010 23:03