Parallele Matrixmultiplikation

aus GlossarWiki, der Glossar-Datenbank der Fachhochschule Augsburg
Wechseln zu:Navigation, Suche
Dieser Artikel sollte überarbeitet werden.
Die Regeln für GlossarWiki-Artikel sollten beachten werden.
Die Aussagen sollten inhaltlich verbessert bzw. präzisiert werden.

In diesem Artikel fehlen die Quellenangaben.

Dieser Artikel ist nicht korrekt kategorisiert (siehe Regeln für GlossarWiki-Artikel).

Ein Thread(C-Notation):

void matmul(double** A, double** B, int N, double** C)<br>
{
        for(int i = 0; i < N; i++)
	{
	       for(int j = 0; j < N; j++)
	       {
			    for(int k = 0; k < N; k++)<br>
			   {
				   C [ i ][ j ] += A[ i ][ k ] * B[ k ][ j ];
			   }
	      }
        }
}

Mehrere Threads, Einfachste Lösung: Die Ergebnismatrix wir aufgeteilt, jeder Thread bearbeitet genau eine Teilmatrix.
n: Größe der Matrix m: Anzahl der Threads.

Implementierung in C#

int t = n / m;
ArrayList list = new ArrayList();
for(int i = 0; i < m; i++)
{
	integerMultiThreading IMT =
                   new integerMultiThreading(iA, iB, iC2, n, (i * t), t);
	Thread thread = new Thread(new ThreadStart(IMT.multiInteger));
	list.Add(thread);
	thread.Start();
}
foreach(Thread thread in list)
{
	thread.Join();
}