<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
		>
<channel>
	<title>Comments on: MPI (Message Passing Interface , Mesaj Geçirme Arayüzü)</title>
	<atom:link href="http://www.bilgisayarkavramlari.com/2009/04/29/mpi-message-passing-interface-mesaj-gecirme-arayuzu/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.bilgisayarkavramlari.com/2009/04/29/mpi-message-passing-interface-mesaj-gecirme-arayuzu/</link>
	<description>www.bilgisayarkavramlari.com</description>
	<lastBuildDate>Thu, 09 Feb 2012 15:35:42 +0000</lastBuildDate>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
	<item>
		<title>By: complexity</title>
		<link>http://www.bilgisayarkavramlari.com/2009/04/29/mpi-message-passing-interface-mesaj-gecirme-arayuzu/comment-page-1/#comment-28062</link>
		<dc:creator>complexity</dc:creator>
		<pubDate>Tue, 27 Apr 2010 22:05:03 +0000</pubDate>
		<guid isPermaLink="false">http://www.bilgisayarkavramlari.com/2009/04/29/mpi-message-passing-interface-mesaj-gecirme-arayuzu/#comment-28062</guid>
		<description>sadi kardeş merhaba
ben yeni başladım MPI &#039;ya. senin kodunu inceledim ve benzer birşey yazmaya çalıştım.
amacım (master hariç, mesela 5 işlemci varsa) 50 karakterlik bir stringi bu
işlemcilere bölüp herbirine 10 karakter dağıtmak ve herbirinin bu alt stringlerde
&quot;ali&quot; sözcüğünü arattırmak..
sonra tabiki bulan yine mastere haber veriyor..kodu aşağıdaki gibi:

hatayı bulmamda yardımcı olur musunuz ?
______________________
__________________________
______________________________


#include 
#include &quot;mpi.h&quot;
#define MASTER 0                /* taskid of first task */
#define FROM_MASTER 1                /* setting a message type */
#define FROM_WORKER 2                /* setting a message type */

MPI_Status status;
int main(int argc, char **argv)
{
int numtasks,                        /* number of tasks in partition */
    taskid,                        /* a task identifier */
    numworkers,                        /* number of worker tasks */
    source,                        /* task id of message source */
    dest,                        /* task id of message destination */
    mtype,                        /* message type */
    sizes,                      /* sizes of the string sent to each worker */
    avesize, extra, offset,     /* used to determine sizes sent to each worker */
    i, j, k,                        /* misc */
    index,
    found;                        /* checks if &quot;ali&quot; is found by a worker processor or not */
FILE *fp;
char str[1284];

MPI_Init(&amp;argc, &amp;argv);
MPI_Comm_rank(MPI_COMM_WORLD, &amp;taskid);
MPI_Comm_size(MPI_COMM_WORLD, &amp;numtasks);
numworkers = numtasks-1;

/**************************** master task ************************************/

if (taskid == MASTER) {
  printf(&quot;Number of worker tasks = %d\n&quot;,numworkers);

        //////dosyayı acıp içindekileri str e geçiriyor
        if((fp = fopen(argv[ 1 ], &quot;r&quot;))==NULL) {
          printf(&quot;Cannot open file.\n&quot;);
          exit(1);
        }

        while(!feof(fp)) {
          if(fgets(str, 1282, fp)) 
              printf(&quot;The string is %s&quot;, str);
        }
        fclose(fp);
        
   /* send string data to the worker tasks */
  avesize = strlen(str)/numworkers;
  extra = strlen(str)%numworkers;
  offset = 0;
  mtype = FROM_MASTER;
  for (dest=1; dest&lt;=numworkers; dest++) {
    sizes = (dest &lt;= extra) ? averow+1 : averow;
    printf(&quot;Sending %d characters of string to task %d\n&quot;,sizes,dest);
    
    MPI_Send(&amp;offset, 1, MPI_INT, dest, mtype, MPI_COMM_WORLD);
    MPI_Send(&amp;sizes, 1, MPI_INT, dest, mtype, MPI_COMM_WORLD);
    MPI_Send(&amp;str[offset], sizes, MPI_DOUBLE, dest, mtype, MPI_COMM_WORLD);
    
    offset = offset + sizes;
    }

  /* wait for results from all worker tasks */
  mtype = FROM_WORKER;
  for (i=1; i MASTER) {
  mtype = FROM_MASTER;
  source = MASTER;
  printf (&quot;Master =%d, mtype=%d\n&quot;, source, mtype);
  MPI_Recv(&amp;offset, 1, MPI_INT, source, mtype, MPI_COMM_WORLD, &amp;status);
  MPI_Recv(&amp;sizes, 1, MPI_INT, source, mtype, MPI_COMM_WORLD, &amp;status);
  MPI_Recv(&amp;a[offset], sizes, MPI_INT, source, mtype, MPI_COMM_WORLD,
&amp;status);///////////////////////////////
  
  found=0;
  ///searching for ali in the substring in workers 
  for (k=0; k&lt;sizes-4; k++)
    if((a[offset+k]==&#039;2&#039;)&amp;&amp;(a[offset+k+1]==&#039;.&#039;)&amp;&amp;(a[offset+k+2]==&#039;7&#039;)&amp;&amp;(a[offset+k+3]==&#039;1&#039;)&amp;&amp;(a[offset+k+4]==&#039;8&#039;))
    {
      index=offset;
      found=1;
    }
      
  mtype = FROM_WORKER;
  
  MPI_Send(&amp;offset, 1, MPI_INT, MASTER, mtype, MPI_COMM_WORLD);
  MPI_Send(&amp;sizes, 1, MPI_INT, MASTER, mtype, MPI_COMM_WORLD);
  MPI_Send(&amp;str[offset], sizes, MPI_INT, MASTER, mtype, MPI_COMM_WORLD);

  }  /* end of worker */
  MPI_Finalize();
  return 0;
} /* of main */</description>
		<content:encoded><![CDATA[<p>sadi kardeş merhaba<br />
ben yeni başladım MPI &#8216;ya. senin kodunu inceledim ve benzer birşey yazmaya çalıştım.<br />
amacım (master hariç, mesela 5 işlemci varsa) 50 karakterlik bir stringi bu<br />
işlemcilere bölüp herbirine 10 karakter dağıtmak ve herbirinin bu alt stringlerde<br />
&#8220;ali&#8221; sözcüğünü arattırmak..<br />
sonra tabiki bulan yine mastere haber veriyor..kodu aşağıdaki gibi:</p>
<p>hatayı bulmamda yardımcı olur musunuz ?<br />
______________________<br />
__________________________<br />
______________________________</p>
<p>#include<br />
#include &#8220;mpi.h&#8221;<br />
#define MASTER 0                /* taskid of first task */<br />
#define FROM_MASTER 1                /* setting a message type */<br />
#define FROM_WORKER 2                /* setting a message type */</p>
<p>MPI_Status status;<br />
int main(int argc, char **argv)<br />
{<br />
int numtasks,                        /* number of tasks in partition */<br />
    taskid,                        /* a task identifier */<br />
    numworkers,                        /* number of worker tasks */<br />
    source,                        /* task id of message source */<br />
    dest,                        /* task id of message destination */<br />
    mtype,                        /* message type */<br />
    sizes,                      /* sizes of the string sent to each worker */<br />
    avesize, extra, offset,     /* used to determine sizes sent to each worker */<br />
    i, j, k,                        /* misc */<br />
    index,<br />
    found;                        /* checks if &#8220;ali&#8221; is found by a worker processor or not */<br />
FILE *fp;<br />
char str[1284];</p>
<p>MPI_Init(&amp;argc, &amp;argv);<br />
MPI_Comm_rank(MPI_COMM_WORLD, &amp;taskid);<br />
MPI_Comm_size(MPI_COMM_WORLD, &amp;numtasks);<br />
numworkers = numtasks-1;</p>
<p>/**************************** master task ************************************/</p>
<p>if (taskid == MASTER) {<br />
  printf(&#8220;Number of worker tasks = %d\n&#8221;,numworkers);</p>
<p>        //////dosyayı acıp içindekileri str e geçiriyor<br />
        if((fp = fopen(argv[ 1 ], &#8220;r&#8221;))==NULL) {<br />
          printf(&#8220;Cannot open file.\n&#8221;);<br />
          exit(1);<br />
        }</p>
<p>        while(!feof(fp)) {<br />
          if(fgets(str, 1282, fp))<br />
              printf(&#8220;The string is %s&#8221;, str);<br />
        }<br />
        fclose(fp);</p>
<p>   /* send string data to the worker tasks */<br />
  avesize = strlen(str)/numworkers;<br />
  extra = strlen(str)%numworkers;<br />
  offset = 0;<br />
  mtype = FROM_MASTER;<br />
  for (dest=1; dest&lt;=numworkers; dest++) {<br />
    sizes = (dest &lt;= extra) ? averow+1 : averow;<br />
    printf(&quot;Sending %d characters of string to task %d\n&quot;,sizes,dest);</p>
<p>    MPI_Send(&amp;offset, 1, MPI_INT, dest, mtype, MPI_COMM_WORLD);<br />
    MPI_Send(&amp;sizes, 1, MPI_INT, dest, mtype, MPI_COMM_WORLD);<br />
    MPI_Send(&amp;str[offset], sizes, MPI_DOUBLE, dest, mtype, MPI_COMM_WORLD);</p>
<p>    offset = offset + sizes;<br />
    }</p>
<p>  /* wait for results from all worker tasks */<br />
  mtype = FROM_WORKER;<br />
  for (i=1; i MASTER) {<br />
  mtype = FROM_MASTER;<br />
  source = MASTER;<br />
  printf (&#8220;Master =%d, mtype=%d\n&#8221;, source, mtype);<br />
  MPI_Recv(&amp;offset, 1, MPI_INT, source, mtype, MPI_COMM_WORLD, &amp;status);<br />
  MPI_Recv(&amp;sizes, 1, MPI_INT, source, mtype, MPI_COMM_WORLD, &amp;status);<br />
  MPI_Recv(&amp;a[offset], sizes, MPI_INT, source, mtype, MPI_COMM_WORLD,<br />
&amp;status);///////////////////////////////</p>
<p>  found=0;<br />
  ///searching for ali in the substring in workers<br />
  for (k=0; k&lt;sizes-4; k++)<br />
    if((a[offset+k]==&#039;2&#039;)&amp;&amp;(a[offset+k+1]==&#039;.&#039;)&amp;&amp;(a[offset+k+2]==&#039;7&#039;)&amp;&amp;(a[offset+k+3]==&#039;1&#039;)&amp;&amp;(a[offset+k+4]==&#039;8&#039;))<br />
    {<br />
      index=offset;<br />
      found=1;<br />
    }</p>
<p>  mtype = FROM_WORKER;</p>
<p>  MPI_Send(&amp;offset, 1, MPI_INT, MASTER, mtype, MPI_COMM_WORLD);<br />
  MPI_Send(&amp;sizes, 1, MPI_INT, MASTER, mtype, MPI_COMM_WORLD);<br />
  MPI_Send(&amp;str[offset], sizes, MPI_INT, MASTER, mtype, MPI_COMM_WORLD);</p>
<p>  }  /* end of worker */<br />
  MPI_Finalize();<br />
  return 0;<br />
} /* of main */</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Ahmet ESER</title>
		<link>http://www.bilgisayarkavramlari.com/2009/04/29/mpi-message-passing-interface-mesaj-gecirme-arayuzu/comment-page-1/#comment-8373</link>
		<dc:creator>Ahmet ESER</dc:creator>
		<pubDate>Thu, 12 Nov 2009 18:51:25 +0000</pubDate>
		<guid isPermaLink="false">http://www.bilgisayarkavramlari.com/2009/04/29/mpi-message-passing-interface-mesaj-gecirme-arayuzu/#comment-8373</guid>
		<description>Çok güzel bir yazı olmuş bu konularda türkçe kaynak bulmak gerçekten sıkıntı oluyor. Teşekkür ederim devamını dilerim...</description>
		<content:encoded><![CDATA[<p>Çok güzel bir yazı olmuş bu konularda türkçe kaynak bulmak gerçekten sıkıntı oluyor. Teşekkür ederim devamını dilerim&#8230;</p>
]]></content:encoded>
	</item>
</channel>
</rss>

