--- /dev/null
+ MPI_Init();
+ # the string NEWORLD is just a label could be whatever you want
+ CW = MPI_Comm_Load("NEWORLD");
+ my_rank = MPI_Comm_rank(CW);
+ p = MPI_Comm_size(CW);
+# tag[0] ----> type of octave_value
+# tag[1] ----> array of three elements 1) num of rows 2) number of columns 3) number of non zero elements
+# tag[2] ----> vector of rowindex
+# tag[3] ----> vector of columnindex
+# tag[4] ----> vector of non zero elements
+# These tags will be generated after mytag by the MPI_Send and MPI_Recv (see source code)
+
+ mytag = 48;
+
+
+
+
+# This is just to fill the sparse matrix
+ M=5;
+ N=5;
+ D=0.9;
+ message = sprand (M, N, D);
+# load message
+
+
+
+ if (my_rank != 0)
+ dest = 0;
+# rankvect is the vector containing the list of rank destination process
+ rankvect(1,1) = 0;
+ [info] = MPI_Send(message,rankvect,mytag,CW);
+ disp("This is flag for sending the message --")
+ info
+ else
+ for source = 1:p-1
+ messager='';
+ disp("We are at rank 0 that is master etc..");
+ [messager, info] = MPI_Recv(source,mytag,CW);
+ disp("Rank 0 is the master receiving ... :");
+ if (messager/message)
+ disp('OK!');
+ endif
+ messager
+ endfor
+ end
+
+ MPI_Finalize();