<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title><![CDATA[Matrizenmultiplikation mit MPI]]></title><description><![CDATA[<p>Hallo Community, ich habe ein Matrizenmultiplikationsprogramm geschrieben, dass ohne MPi nur mit iostream funktioniert. Mit MPI passiert nichts.</p>
<pre><code>#include &lt;iostream&gt;
#include &lt;ctime&gt;
#include &lt;cstdlib&gt;
#include &lt;mpi.h&gt;

#define size 10

using namespace std;

MPI_Status status;
int world_rank;

void matrixmult(int Ma[size][size], int Mb[size][size], int zeilenmc, int spaltenmc, int zeilenmb);

int main(int argc, char **argv)

{
	//MPI-Initialisierung
	MPI_Init(NULL, NULL);
	int world_size;
	MPI_Comm_size(MPI_COMM_WORLD, &amp;world_size);
	MPI_Comm_rank(MPI_COMM_WORLD, &amp;world_rank);

	int z = 10;
	int z1 = 10;
	int z2 = 10;

	int m1[10][10];
	int m2[10][10];

	srand((unsigned)time(NULL));

	for (int i = 1; i &lt; 10; i++)
	{
		for (int j = 1; j &lt; 10; j++)
		{
			m1[i][j] = rand() % 10;

		}
	}
	srand((unsigned)time(NULL));
	for (int i = 1; i &lt; 10; i++)
	{
		for (int j = 1; j &lt; 10; j++)
		{
			m2[i][j] = rand() % 10;

		}
	}

	matrixmult(m1, m2, z, z1, z2);
}

void matrixmult(int Ma[size][size], int Mb[size][size], int zeilenmc, int spaltenmc, int zeilenmb)
{
	int Em[10][10] = { 0 };
	if (world_rank == 0)
	{
		for (int i = 0; i &lt; zeilenmc; ++i)
		{
			for (int j = 0; j &lt; zeilenmb; ++j)
			{

				for (int k = 0; k &lt; spaltenmc; ++k)
				{
					MPI_Send(&amp;Ma[i][j], 1, MPI_INT, 1, 1, MPI_COMM_WORLD);
					MPI_Send(&amp;Mb[j][k], 1, MPI_INT, 1, 1, MPI_COMM_WORLD);
					Em[i][k] += Ma[i][j] * Mb[j][k];
					MPI_Recv(&amp;Em[i][k], 1, MPI_INT, 1, 1, MPI_COMM_WORLD, &amp;status);
				}
			}

		}
	}
	std::cout &lt;&lt; &quot;Endmatrix: &quot; &lt;&lt; &quot;[&quot;;
	for (int l = 0; l &lt; size; ++l)
	{
		for (int m = 0; m &lt; size; ++m)
		{
			std::cout &lt;&lt; Em[l][m] &lt;&lt; &quot; &quot;;
		}
	}
	std::cout &lt;&lt; &quot;]&quot; &lt;&lt; endl;
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/topic/340421/matrizenmultiplikation-mit-mpi</link><generator>RSS for Node</generator><lastBuildDate>Sat, 11 Apr 2026 02:51:18 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/340421.rss" rel="self" type="application/rss+xml"/><pubDate>Mon, 07 Nov 2016 16:59:23 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Matrizenmultiplikation mit MPI on Mon, 07 Nov 2016 16:59:23 GMT]]></title><description><![CDATA[<p>Hallo Community, ich habe ein Matrizenmultiplikationsprogramm geschrieben, dass ohne MPi nur mit iostream funktioniert. Mit MPI passiert nichts.</p>
<pre><code>#include &lt;iostream&gt;
#include &lt;ctime&gt;
#include &lt;cstdlib&gt;
#include &lt;mpi.h&gt;

#define size 10

using namespace std;

MPI_Status status;
int world_rank;

void matrixmult(int Ma[size][size], int Mb[size][size], int zeilenmc, int spaltenmc, int zeilenmb);

int main(int argc, char **argv)

{
	//MPI-Initialisierung
	MPI_Init(NULL, NULL);
	int world_size;
	MPI_Comm_size(MPI_COMM_WORLD, &amp;world_size);
	MPI_Comm_rank(MPI_COMM_WORLD, &amp;world_rank);

	int z = 10;
	int z1 = 10;
	int z2 = 10;

	int m1[10][10];
	int m2[10][10];

	srand((unsigned)time(NULL));

	for (int i = 1; i &lt; 10; i++)
	{
		for (int j = 1; j &lt; 10; j++)
		{
			m1[i][j] = rand() % 10;

		}
	}
	srand((unsigned)time(NULL));
	for (int i = 1; i &lt; 10; i++)
	{
		for (int j = 1; j &lt; 10; j++)
		{
			m2[i][j] = rand() % 10;

		}
	}

	matrixmult(m1, m2, z, z1, z2);
}

void matrixmult(int Ma[size][size], int Mb[size][size], int zeilenmc, int spaltenmc, int zeilenmb)
{
	int Em[10][10] = { 0 };
	if (world_rank == 0)
	{
		for (int i = 0; i &lt; zeilenmc; ++i)
		{
			for (int j = 0; j &lt; zeilenmb; ++j)
			{

				for (int k = 0; k &lt; spaltenmc; ++k)
				{
					MPI_Send(&amp;Ma[i][j], 1, MPI_INT, 1, 1, MPI_COMM_WORLD);
					MPI_Send(&amp;Mb[j][k], 1, MPI_INT, 1, 1, MPI_COMM_WORLD);
					Em[i][k] += Ma[i][j] * Mb[j][k];
					MPI_Recv(&amp;Em[i][k], 1, MPI_INT, 1, 1, MPI_COMM_WORLD, &amp;status);
				}
			}

		}
	}
	std::cout &lt;&lt; &quot;Endmatrix: &quot; &lt;&lt; &quot;[&quot;;
	for (int l = 0; l &lt; size; ++l)
	{
		for (int m = 0; m &lt; size; ++m)
		{
			std::cout &lt;&lt; Em[l][m] &lt;&lt; &quot; &quot;;
		}
	}
	std::cout &lt;&lt; &quot;]&quot; &lt;&lt; endl;
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2514425</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2514425</guid><dc:creator><![CDATA[Count_Omega]]></dc:creator><pubDate>Mon, 07 Nov 2016 16:59:23 GMT</pubDate></item><item><title><![CDATA[Reply to Matrizenmultiplikation mit MPI on Mon, 07 Nov 2016 17:00:15 GMT]]></title><description><![CDATA[<p>der Fehler ist anscheinend bei Send oder recv aber ich komm nicht drauf.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2514426</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2514426</guid><dc:creator><![CDATA[Count_Omega]]></dc:creator><pubDate>Mon, 07 Nov 2016 17:00:15 GMT</pubDate></item><item><title><![CDATA[Reply to Matrizenmultiplikation mit MPI on Mon, 07 Nov 2016 18:49:04 GMT]]></title><description><![CDATA[<p>warum arbeitest du mit MPI? bist du dazu gezwungen?<br />
wenn nicht, dann rate ich dir, dich zuerst einmal mit C++-grundlagen zu beschäftigen, dann passieren dir solche fehler auch nicht:</p>
<pre><code class="language-cpp">for (int i = 1; i &lt; 10; i++)
    {
        for (int j = 1; j &lt; 10; j++)
        {
      //...
        }
    }
</code></pre>
<p>oder so etwas:</p>
<pre><code class="language-cpp">#define size 10
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2514441</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2514441</guid><dc:creator><![CDATA[dove]]></dc:creator><pubDate>Mon, 07 Nov 2016 18:49:04 GMT</pubDate></item><item><title><![CDATA[Reply to Matrizenmultiplikation mit MPI on Mon, 07 Nov 2016 18:55:02 GMT]]></title><description><![CDATA[<p>Ja ich muss mit MPi arbeiten. Und die Fehler sind irrelevant, da das programm mit ihnen auch funktioniert(ohnen mpi).</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2514444</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2514444</guid><dc:creator><![CDATA[Count_Omega]]></dc:creator><pubDate>Mon, 07 Nov 2016 18:55:02 GMT</pubDate></item><item><title><![CDATA[Reply to Matrizenmultiplikation mit MPI on Tue, 08 Nov 2016 00:28:47 GMT]]></title><description><![CDATA[<p>leider scheint es wenig sinnvoll, dir zu antworten.<br />
wenn du nicht bald anfängst, antworten zu lesen und nicht nur zu überfliegen, wird dir gar keiner mehr antworten.</p>
<p>PS:<br />
<code>die Fehler sind irrelevant, da das programm mit ihnen auch funktioniert</code><br />
nein</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2514483</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2514483</guid><dc:creator><![CDATA[unskilled]]></dc:creator><pubDate>Tue, 08 Nov 2016 00:28:47 GMT</pubDate></item><item><title><![CDATA[Reply to Matrizenmultiplikation mit MPI on Tue, 08 Nov 2016 17:25:56 GMT]]></title><description><![CDATA[<p>Vll will er ja nicht, dass die ersten Werte mit random Zahlen belegt werden.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2514588</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2514588</guid><dc:creator><![CDATA[asdfkkk]]></dc:creator><pubDate>Tue, 08 Nov 2016 17:25:56 GMT</pubDate></item><item><title><![CDATA[Reply to Matrizenmultiplikation mit MPI on Wed, 09 Nov 2016 09:10:02 GMT]]></title><description><![CDATA[<p>asdfkkk schrieb:</p>
<blockquote>
<p>Vll will er ja nicht, dass die ersten Werte mit random Zahlen belegt werden.</p>
</blockquote>
<p>Ach. und was steht da jetzt drin?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2514663</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2514663</guid><dc:creator><![CDATA[Braunstein]]></dc:creator><pubDate>Wed, 09 Nov 2016 09:10:02 GMT</pubDate></item><item><title><![CDATA[Reply to Matrizenmultiplikation mit MPI on Wed, 09 Nov 2016 09:59:11 GMT]]></title><description><![CDATA[<p>Irgendwas, behindert ja den Algo nicht. Das Ergebnis wird nur unbrauchbar sein.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2514672</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2514672</guid><dc:creator><![CDATA[asdfkkk]]></dc:creator><pubDate>Wed, 09 Nov 2016 09:59:11 GMT</pubDate></item><item><title><![CDATA[Reply to Matrizenmultiplikation mit MPI on Wed, 09 Nov 2016 12:24:20 GMT]]></title><description><![CDATA[<p>Möchtest du damit MPI lernen oder ein brauchbares Programm schreiben? Wenn der zweite Fall gilt, dann würde ich dir strengstens raten eine externe Bibliothek zu nutzen.</p>
<p>Jetzt rein aus dem Quellcode oben zu urteilen würde ich behaupten du hast wenig Ahnung von Numerik und noch weniger von C++.</p>
<p>Wenn du unbedingt MPI brauchst dann nimm Pardiso: <a href="http://pardiso-project.org/" rel="nofollow">http://pardiso-project.org/</a><br />
Außerdem könntest du dir auch mal Eigen anschauen: <a href="http://eigen.tuxfamily.org/index.php?title=Main_Page" rel="nofollow">http://eigen.tuxfamily.org/index.php?title=Main_Page</a></p>
<p>Aus der Historie weiß mann, dass Eigenentwicklungen ohne eine starke Community zu viele Fehler bergen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2514707</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2514707</guid><dc:creator><![CDATA[asddasdsa]]></dc:creator><pubDate>Wed, 09 Nov 2016 12:24:20 GMT</pubDate></item></channel></rss>