<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:taxo="http://purl.org/rss/1.0/modules/taxonomy/" version="2.0">
  <channel>
    <title>topic Hi Yang,  in Intel® oneAPI Math Kernel Library</title>
    <link>https://community.intel.com/t5/Intel-oneAPI-Math-Kernel-Library/Scalapack-Please-Help-with-using-pdgesv/m-p/1017631#M19565</link>
    <description>&lt;P&gt;Hi Yang,&amp;nbsp;&lt;/P&gt;

&lt;P&gt;Could you also show your compile command and run command, MPI version, MKL version etc information?&amp;nbsp;&lt;/P&gt;

&lt;P&gt;There was some MPI sample in MKL install directory, could you please try them first and see if mkl work fine on the supercomputer?&amp;nbsp;&lt;/P&gt;

&lt;P&gt;&lt;SPAN style="font-size: 1em; line-height: 1.5;"&gt;Best Regards,&lt;/SPAN&gt;&lt;/P&gt;

&lt;P&gt;Ying&amp;nbsp;&lt;/P&gt;</description>
    <pubDate>Thu, 14 Jan 2016 07:55:38 GMT</pubDate>
    <dc:creator>Ying_H_Intel</dc:creator>
    <dc:date>2016-01-14T07:55:38Z</dc:date>
    <item>
      <title>[Scalapack] Please Help with using pdgesv</title>
      <link>https://community.intel.com/t5/Intel-oneAPI-Math-Kernel-Library/Scalapack-Please-Help-with-using-pdgesv/m-p/1017628#M19562</link>
      <description>&lt;P&gt;Hello all:&lt;/P&gt;

&lt;P&gt;&amp;nbsp;I'm trying to solve a linear system (9 by 9 full matrix) by pdgesv in c. I use the example code (http://icl.cs.utk.edu/lapack-forum/viewtopic.php?f=2&amp;amp;t=1683&amp;amp;sid=26b4f2535c0c3856d02bdadd62d08c5f#) and compiling is ok. However, there is a error info after calling pdgesv:&amp;nbsp;&lt;/P&gt;

&lt;P&gt;“On entry to PDGESV parameter number 602 had an illegal value”.&lt;/P&gt;

&lt;P&gt;According to the &lt;SPAN style="font-size: 12.8000001907349px; line-height: 15.609601020813px;"&gt;PDGESV&amp;nbsp;&lt;/SPAN&gt;source code, it means the 2th element of the 6th argument was wrong, which means the descA[1] is wrong?&lt;/P&gt;

&lt;P&gt;However, descA[1] (&lt;SPAN style="font-size: 12.8000001907349px; line-height: 15.609601020813px;"&gt;ictxt&lt;/SPAN&gt;) is rewrited by&amp;nbsp;Cblacs_gridinit(&amp;amp;ictxt, "Row", nprow, npcol).&amp;nbsp;&lt;/P&gt;

&lt;P&gt;after printf ictxt, I find all ictxt = 0. IS this reason lead to the error message?&lt;/P&gt;

&lt;P&gt;&lt;SPAN style="font-size: 1em; line-height: 1.5;"&gt;I really need to solve a large dense(full) matrix, can someone help me or give me some advice?&lt;/SPAN&gt;&lt;/P&gt;

&lt;P&gt;The following is my C code:&lt;/P&gt;

&lt;P&gt;PS: I've called&amp;nbsp;MPI_Init(&amp;amp;argc,&amp;amp;argv) before entering&amp;nbsp;&lt;SPAN style="font-size: 12.8000001907349px; line-height: 15.609601020813px;"&gt;Scalapack(int argc, char ** argv)&amp;nbsp;&lt;/SPAN&gt;&amp;nbsp;and called&amp;nbsp;MPI_Finalize() after leaving&amp;nbsp;&lt;SPAN style="font-size: 12.8000001907349px; line-height: 15.609601020813px;"&gt;Scalapack(int argc, char ** argv).&lt;/SPAN&gt;&lt;/P&gt;

&lt;P&gt;&amp;nbsp;&lt;/P&gt;

&lt;P&gt;#include &amp;lt;mpi.h&amp;gt;&lt;BR /&gt;
	#include &amp;lt;iostream&amp;gt;&lt;BR /&gt;
	#include &amp;lt;vector&amp;gt;&lt;BR /&gt;
	#include &amp;lt;cmath&amp;gt;&lt;BR /&gt;
	#include &amp;lt;cstdlib&amp;gt;&lt;BR /&gt;
	#include "Scalapack.h"&lt;BR /&gt;
	#include &amp;lt;mkl.h&amp;gt;&lt;BR /&gt;
	#include &amp;lt;mkl_scalapack.h&amp;gt;&lt;BR /&gt;
	#include "mkl_lapacke.h"&lt;BR /&gt;
	#include &amp;lt;mkl_cblas.h&amp;gt;&lt;/P&gt;

&lt;P&gt;#define mat(matriz,coluna,i,j) (matriz[i*coluna+j])&lt;/P&gt;

&lt;P&gt;&lt;BR /&gt;
	#define p_of_i(i,bs,p) ( MKL_INT((i-1)/bs)%p)&lt;BR /&gt;
	#define l_of_i(i,bs,p) ( MKL_INT((i-1)/(p*bs)))&lt;BR /&gt;
	#define x_of_i(i,bs,p) (((i-1)%bs)+1)&lt;/P&gt;

&lt;P&gt;#define &amp;nbsp; numroc_ &amp;nbsp; &amp;nbsp; &amp;nbsp;NUMROC&lt;/P&gt;

&lt;P&gt;&lt;BR /&gt;
	using namespace std;&lt;/P&gt;

&lt;P&gt;&lt;BR /&gt;
	extern "C"&amp;nbsp;&lt;BR /&gt;
	{&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp; &amp;nbsp;/* BLACS C interface */&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp; &amp;nbsp;void Cblacs_pinfo(int* mypnum, int* nprocs);&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp; &amp;nbsp;void Cblacs_get( MKL_INT context, MKL_INT request, MKL_INT* value);&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp; &amp;nbsp;int &amp;nbsp;Cblacs_gridinit( MKL_INT* context, char * order, MKL_INT np_row, MKL_INT np_col);&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp; &amp;nbsp;void Cblacs_gridinfo( MKL_INT context, MKL_INT* &amp;nbsp;np_row, MKL_INT* np_col, MKL_INT* &amp;nbsp;my_row,&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp; &amp;nbsp;MKL_INT* &amp;nbsp;my_col);&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp; &amp;nbsp;int &amp;nbsp;numroc_( MKL_INT *n, MKL_INT *nb, MKL_INT *iproc, MKL_INT *isrcproc, MKL_INT *nprocs);&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp; &amp;nbsp;void Cblacs_gridexit(MKL_INT ictxt);&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp; &amp;nbsp;void Cblacs_barrier(MKL_INT ictxt, char * order);&lt;BR /&gt;
	&lt;SPAN style="font-size: 1em; line-height: 1.5;"&gt;}&lt;/SPAN&gt;&lt;/P&gt;

&lt;P&gt;void find_nps(MKL_INT np, MKL_INT &amp;amp;nprow, MKL_INT &amp;amp; npcol);&lt;BR /&gt;
	int getIndex(MKL_INT row, MKL_INT col,MKL_INT NCOLS) {return row*NCOLS+col;}&lt;/P&gt;

&lt;P&gt;&lt;BR /&gt;
	CTEST_Scalapack::C&lt;SPAN style="font-size: 12.8000001907349px; line-height: 15.609601020813px;"&gt;TEST&lt;/SPAN&gt;_Scalapack(void)&lt;BR /&gt;
	{&lt;BR /&gt;
	}&lt;/P&gt;

&lt;P&gt;&lt;BR /&gt;
	C&lt;SPAN style="font-size: 12.8000001907349px; line-height: 15.609601020813px;"&gt;TEST&lt;/SPAN&gt;_Scalapack::~C&lt;SPAN style="font-size: 12.8000001907349px; line-height: 15.609601020813px;"&gt;TEST&lt;/SPAN&gt;_Scalapack(void)&lt;BR /&gt;
	{&lt;BR /&gt;
	}&lt;/P&gt;

&lt;P&gt;int C&lt;SPAN style="font-size: 12.8000001907349px; line-height: 15.609601020813px;"&gt;TEST&lt;/SPAN&gt;_Scalapack::Scalapack(int argc, char ** argv)&amp;nbsp;&lt;BR /&gt;
	{&lt;/P&gt;

&lt;P&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;int nprocs = 0;//MPI::COMM_WORLD.Get_size();&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp; &amp;nbsp;int rank = 0;//MPI::COMM_WORLD.Get_rank();&lt;/P&gt;

&lt;P&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;MPI_Comm_size(MPI_COMM_WORLD,&amp;amp;nprocs);&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp; &amp;nbsp;MPI_Comm_rank(MPI_COMM_WORLD,&amp;amp;rank);&lt;/P&gt;

&lt;P&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;std::cout&amp;lt;&amp;lt;"Returned: "&amp;lt;&amp;lt;" ";&lt;BR /&gt;
	&amp;nbsp; &amp;nbsp; std::cout &amp;lt;&amp;lt; "Hello World! I am " &amp;lt;&amp;lt; rank &amp;lt;&amp;lt; " of " &amp;lt;&amp;lt; nprocs &amp;lt;&amp;lt;&lt;BR /&gt;
	&amp;nbsp; &amp;nbsp; std::endl;&lt;/P&gt;

&lt;P&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;srand(1);&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp; &amp;nbsp;MKL_INT myrow=0;&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp; &amp;nbsp;MKL_INT mycol=0;&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp; &amp;nbsp;MKL_INT ictxt=0;&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp; &amp;nbsp;MKL_INT nprow=0,npcol=0;&lt;/P&gt;

&lt;P&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;MKL_INT BLOCK_SIZE =2; //this gonna be tricky - should be 64, but cannot be larger than the original matrix&lt;/P&gt;

&lt;P&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;MKL_INT locR=0, locC=0;&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp; &amp;nbsp;MKL_INT block = BLOCK_SIZE;&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp; &amp;nbsp;MKL_INT izero = 0;&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp; &amp;nbsp;MKL_INT matrix_size = 9;&lt;BR /&gt;
	&amp;nbsp; &amp;nbsp;&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp; &amp;nbsp;MKL_INT myone = 1;&lt;BR /&gt;
	&amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp; &amp;nbsp;MKL_INT nrhs = 1;&lt;BR /&gt;
	&amp;nbsp; &amp;nbsp;&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp; &amp;nbsp;MKL_INT info=0;&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp;&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp; &amp;nbsp;int i=0,j=0;&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp; &amp;nbsp;double mone=(-1.e0),pone=(1.e0);&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp; &amp;nbsp;double AnormF=0.e0, XnormF=0.e0, RnormF=0.e0, BnormF=0.e0, residF=0.e0,eps=0.e0;&lt;/P&gt;

&lt;P&gt;&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp; &amp;nbsp;find_nps(nprocs,nprow,npcol);&lt;/P&gt;

&lt;P&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;Cblacs_pinfo( &amp;amp;rank, &amp;amp;nprocs ) ;&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp; &amp;nbsp;Cblacs_get(-1, 0, &amp;amp;ictxt);&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp; &amp;nbsp;Cblacs_gridinit(&amp;amp;ictxt, "Row", nprow, npcol);&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp; &amp;nbsp;Cblacs_gridinfo(ictxt, &amp;amp;nprow, &amp;amp;npcol, &amp;amp;myrow, &amp;amp;mycol);&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp; &amp;nbsp;locR = numroc_(&amp;amp;matrix_size, &amp;amp;block, &amp;amp;myrow, &amp;amp;izero, &amp;amp;nprow);&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp; &amp;nbsp;locC = numroc_(&amp;amp;matrix_size, &amp;amp;block, &amp;amp;mycol, &amp;amp;izero, &amp;amp;npcol);&lt;/P&gt;

&lt;P&gt;&amp;nbsp; &amp;nbsp;&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp; &amp;nbsp;////GLOBAL&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp; &amp;nbsp;double * A = new double[matrix_size*matrix_size]();&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp; &amp;nbsp;double * B = new double[matrix_size]();&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp; &amp;nbsp;double * Acpy = new double[matrix_size*matrix_size]();&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp; &amp;nbsp;double * Bcpy = new double[matrix_size]();&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp; &amp;nbsp;//LOCAL&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp; &amp;nbsp;double * local_know_vector = new double[locR]();&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp; &amp;nbsp;double * local_matrix = new double[locR*locC]();&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp; &amp;nbsp;MKL_INT* ipiv = new MKL_INT [locC*locR*block+1000000]();&lt;BR /&gt;
	&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp; &amp;nbsp;B[2] = 1;&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp; &amp;nbsp;B[3] = 0;&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp; &amp;nbsp;B[4] = 0;&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp; &amp;nbsp;B[5] = 0;&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp; &amp;nbsp;A[0] = 19;&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp; &amp;nbsp;A[1] = 3;&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp; &amp;nbsp;A[2] = 1;&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp; &amp;nbsp;A[3] = 12;&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp; &amp;nbsp;A[4] = 1;&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp; &amp;nbsp;A[5] = 16;&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp; &amp;nbsp;A[6] = 1;&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp; &amp;nbsp;A[7] = 3;&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp; &amp;nbsp;A[8] = 11;&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp; &amp;nbsp;A[9] = -19;&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp; &amp;nbsp;A[10] = 3;&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp; &amp;nbsp;A[11] = 1;&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp; &amp;nbsp;A[12] = 12;&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp; &amp;nbsp;A[13] = 1;&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp; &amp;nbsp;A[14] = 16;&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp; &amp;nbsp;A[15] = 1;&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp; &amp;nbsp;A[16] = 3;&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp; &amp;nbsp;A[17] = 11;&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp; &amp;nbsp;A[18] = -19;&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp; &amp;nbsp;A[19] = -3;&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp; &amp;nbsp;A[20] = 1;&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp; &amp;nbsp;A[21] = 12;&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp; &amp;nbsp;A[22] = 1;&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp; &amp;nbsp;A[23] = 16;&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp; &amp;nbsp;A[24] = 1;&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp; &amp;nbsp;A[25] = 3;&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp; &amp;nbsp;A[26] = 11;&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp; &amp;nbsp;A[27] = -19;&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp; &amp;nbsp;A[28] = -3;&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp; &amp;nbsp;A[29] = -1;&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp; &amp;nbsp;A[30] = 12;&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp; &amp;nbsp;A[31] = 1;&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp; &amp;nbsp;A[32] = 16;&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp; &amp;nbsp;A[33] = 1;&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp; &amp;nbsp;A[34] = 3;&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp; &amp;nbsp;A[35] = 11;&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp; &amp;nbsp;A[36] = -19;&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp; &amp;nbsp;A[37] = -3;&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp; &amp;nbsp;A[38] = -1;&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp; &amp;nbsp;A[39] = -12;&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp; &amp;nbsp;A[40] = 1;&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp; &amp;nbsp;A[41] = 16;&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp; &amp;nbsp;A[42] = 1;&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp; &amp;nbsp;A[43] = 3;&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp; &amp;nbsp;A[44] = 11;&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp; &amp;nbsp;A[45] = -19;&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp; &amp;nbsp;A[46] = -3;&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp; &amp;nbsp;A[47] = -1;&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp; &amp;nbsp;A[48] = -12;&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp; &amp;nbsp;A[49] = -1;&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp; &amp;nbsp;A[50] = 16;&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp; &amp;nbsp;A[51] = 1;&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp; &amp;nbsp;A[52] = 3;&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp; &amp;nbsp;A[53] = 11;&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp; &amp;nbsp;A[54] = -19;&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp; &amp;nbsp;A[55] = -3;&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp; &amp;nbsp;A[56] = -1;&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp; &amp;nbsp;A[57] = -12;&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp; &amp;nbsp;A[58] = -1;&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp; &amp;nbsp;A[59] = -16;&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp; &amp;nbsp;A[60] = 1;&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp; &amp;nbsp;A[61] = 3;&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp; &amp;nbsp;A[62] = 11;&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp; &amp;nbsp;A[63] = -19;&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp; &amp;nbsp;A[64] = -3;&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp; &amp;nbsp;A[65] = -1;&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp; &amp;nbsp;A[66] = -12;&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp; &amp;nbsp;A[67] = -1;&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp; &amp;nbsp;A[68] = -16;&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp; &amp;nbsp;A[69] = -1;&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp; &amp;nbsp;A[70] = 3;&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp; &amp;nbsp;A[71] = 11;&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp; &amp;nbsp;A[72] = -19;&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp; &amp;nbsp;A[73] = -3;&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp; &amp;nbsp;A[74] = -1;&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp; &amp;nbsp;A[75] = -12;&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp; &amp;nbsp;A[76] = -1;&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp; &amp;nbsp;A[77] = -16;&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp; &amp;nbsp;A[78] = -1;&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp; &amp;nbsp;A[79] = -3;&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp; &amp;nbsp;A[80] = 11;&lt;/P&gt;

&lt;P&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;MKL_INT* descA &amp;nbsp;= new MKL_INT[9]();&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp; &amp;nbsp;MKL_INT* descB &amp;nbsp;= new MKL_INT[9]();&lt;BR /&gt;
	&amp;nbsp; &amp;nbsp;&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp; &amp;nbsp;descA[0] = 1; // descriptor type&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp; &amp;nbsp;descA[1] = ictxt; // blacs context&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp; &amp;nbsp;descA[2] = matrix_size; // global number of rows&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp; &amp;nbsp;descA[3] = matrix_size; // global number of columns&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp; &amp;nbsp;descA[4] = block; // row block size&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp; &amp;nbsp;descA[5] = block; // column block size (DEFINED EQUAL THAN ROW BLOCK SIZE)&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp; &amp;nbsp;descA[6] = 0; // initial process row(DEFINED 0)&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp; &amp;nbsp;descA[7] = 0; // initial process column (DEFINED 0)&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp; &amp;nbsp;descA[8] = locR; // leading dimension of local array&lt;/P&gt;

&lt;P&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;descB[0] = 1; // descriptor type&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp; &amp;nbsp;descB[1] = ictxt; // blacs context&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp; &amp;nbsp;descB[2] = matrix_size; // global number of rows&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp; &amp;nbsp;descB[3] = 1; // global number of columns&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp; &amp;nbsp;descB[4] = block; // row block size&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp; &amp;nbsp;descB[5] = block; // column block size (DEFINED EQUAL THAN ROW BLOCK SIZE)&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp; &amp;nbsp;descB[6] = 0; // initial process row(DEFINED 0)&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp; &amp;nbsp;descB[7] = 0; // initial process column (DEFINED 0)&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp; &amp;nbsp;descB[8] = locR; // leading dimension of local array&lt;/P&gt;

&lt;P&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;int il=0, jl=0;&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp; &amp;nbsp;for(i=1; i&amp;lt; matrix_size+1; i++)&amp;nbsp;&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp; &amp;nbsp;{&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; for(j=1; j&amp;lt; matrix_size+1; j++)&amp;nbsp;&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; {&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;int pi = p_of_i(i,block,nprow);&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;int li = l_of_i(i,block,nprow);&lt;/P&gt;

&lt;P&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;int xi = x_of_i(i,block,nprow);&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;//printf("i = %d, j = %d, pi = %d, li = %d\n",i,j,pi,li);;fflush(stdout);&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;int pj = p_of_i(j,block,npcol);&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;int lj = l_of_i(j,block,npcol);&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;int xj = x_of_i(j,block,npcol);&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;//printf("i = %d, j = %d, pj = %d, lj = %d, xj = %d\n",i,j,pj,lj,xj);;fflush(stdout);&lt;/P&gt;

&lt;P&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;if( (pi == myrow) &amp;amp;&amp;amp; (pj == mycol))&amp;nbsp;&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;{&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;il = li*block+xi;&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;jl = lj*block+xj;&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;local_matrix[getIndex(il-1, jl-1, locC)] = A[getIndex(i-1,j-1,matrix_size)];&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;}&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;if( &amp;nbsp;(pi == myrow) &amp;amp;&amp;amp;(mycol==0) &amp;nbsp;)&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;{&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;local_know_vector[il-1] = B[i-1];&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;}&lt;/P&gt;

&lt;P&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; }&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp; &amp;nbsp;}&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp; &amp;nbsp;////STARTING PDGESV&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp; &amp;nbsp;pdgesv_(&amp;amp;matrix_size, &amp;amp;nrhs, local_matrix, &amp;amp;myone, &amp;amp;myone, descA, ipiv, local_know_vector, &amp;amp;myone, &amp;amp;myone, descB, &amp;amp;info);&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp; &amp;nbsp;if(rank==0)&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp;{&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;if(info != 0) cout &amp;lt;&amp;lt;"PDGESV problem! Info "&amp;lt;&amp;lt;info&amp;lt;&amp;lt;endl;&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp;}&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp; &amp;nbsp;for(i=0; i&amp;lt; locR; i++)&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp; &amp;nbsp;{&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp;cout&amp;lt;&amp;lt;"**\n"&amp;lt;&amp;lt;"rank "&amp;lt;&amp;lt;rank&amp;lt;&amp;lt;" &amp;nbsp;answer: "&amp;lt;&amp;lt;local_know_vector&lt;I&gt;&amp;lt;&amp;lt;endl;&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp; &amp;nbsp;}&lt;/I&gt;&lt;/P&gt;

&lt;P&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;if(NULL!=descA)&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;{delete [] descA; descA=NULL;}&amp;nbsp;&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp; &amp;nbsp;if(NULL!=descB)&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;{delete [] descB; descB=NULL;}&amp;nbsp;&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp; &amp;nbsp;if(NULL!=local_know_vector)&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;{delete [] local_know_vector; local_know_vector=NULL;}&amp;nbsp;&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp; &amp;nbsp;if(NULL!=local_matrix)&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;{delete [] local_matrix; local_matrix=NULL;}&amp;nbsp;&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp; &amp;nbsp;if(NULL!=Acpy)&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;{delete [] Acpy; Acpy=NULL;}&amp;nbsp;&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp; &amp;nbsp;if(NULL!=Bcpy)&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;{delete [] Bcpy; Bcpy=NULL;}&amp;nbsp;&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp; &amp;nbsp;if(NULL!=A)&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;{delete [] A; A=NULL;}&amp;nbsp;&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp; &amp;nbsp;if(NULL!=B)&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;{delete [] B; B=NULL;}&amp;nbsp;&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;/P&gt;

&lt;P&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;Cblacs_gridexit(ictxt);&lt;/P&gt;

&lt;P&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;return 0;&lt;/P&gt;

&lt;P&gt;&lt;BR /&gt;
	}&lt;/P&gt;

&lt;P&gt;void find_nps(MKL_INT np, MKL_INT &amp;amp;nprow, MKL_INT &amp;amp; npcol)&amp;nbsp;&lt;BR /&gt;
	{&lt;/P&gt;

&lt;P&gt;MKL_INT min_nprow=100000;&lt;BR /&gt;
	MKL_INT min_npcol=100000;&lt;/P&gt;

&lt;P&gt;&lt;BR /&gt;
	nprow = np;&lt;BR /&gt;
	npcol = np;&lt;/P&gt;

&lt;P&gt;&lt;BR /&gt;
	while(1) {&lt;/P&gt;

&lt;P&gt;&amp;nbsp; &amp;nbsp;npcol--;&lt;BR /&gt;
	&amp;nbsp; if(np%2==0 &amp;nbsp; ) {&lt;BR /&gt;
	&amp;nbsp; if(npcol ==1){&lt;BR /&gt;
	&amp;nbsp; &amp;nbsp;nprow --;&lt;BR /&gt;
	&amp;nbsp; &amp;nbsp;npcol = nprow;&lt;BR /&gt;
	&amp;nbsp; }&lt;BR /&gt;
	&amp;nbsp; }else {&lt;BR /&gt;
	&amp;nbsp; if(npcol ==0){&lt;BR /&gt;
	&amp;nbsp; &amp;nbsp;nprow --;&lt;BR /&gt;
	&amp;nbsp; &amp;nbsp;npcol = nprow;&lt;BR /&gt;
	&amp;nbsp; }&lt;/P&gt;

&lt;P&gt;&amp;nbsp; }&lt;/P&gt;

&lt;P&gt;&amp;nbsp; if(nprow*npcol == np) {&lt;BR /&gt;
	&amp;nbsp; &amp;nbsp; min_npcol = npcol;&lt;BR /&gt;
	&amp;nbsp; &amp;nbsp; if(nprow &amp;lt; min_nprow) &amp;nbsp; &amp;nbsp;min_nprow = nprow;&lt;BR /&gt;
	&amp;nbsp; }&lt;/P&gt;

&lt;P&gt;&amp;nbsp; &amp;nbsp; if(nprow ==1 ) break;&lt;/P&gt;

&lt;P&gt;}&lt;/P&gt;

&lt;P&gt;nprow = min_nprow;&lt;BR /&gt;
	npcol = min_npcol;&lt;/P&gt;

&lt;P&gt;}&lt;/P&gt;</description>
      <pubDate>Tue, 09 Dec 2014 11:48:31 GMT</pubDate>
      <guid>https://community.intel.com/t5/Intel-oneAPI-Math-Kernel-Library/Scalapack-Please-Help-with-using-pdgesv/m-p/1017628#M19562</guid>
      <dc:creator>Ajax_W_</dc:creator>
      <dc:date>2014-12-09T11:48:31Z</dc:date>
    </item>
    <item>
      <title>Hi </title>
      <link>https://community.intel.com/t5/Intel-oneAPI-Math-Kernel-Library/Scalapack-Please-Help-with-using-pdgesv/m-p/1017629#M19563</link>
      <description>&lt;P&gt;Hi&amp;nbsp;&lt;/P&gt;

&lt;P&gt;&lt;SPAN style="line-height: 1.5; font-size: 1em;"&gt;I’ve corrected the example to properly define process grid and init MPI.&lt;/SPAN&gt;&lt;/P&gt;

&lt;P&gt;Now it works fine for any number of MPI processes. Attach here.&amp;nbsp;&lt;/P&gt;

&lt;P&gt;and&amp;nbsp;the article : &amp;nbsp;&lt;A href="https://software.intel.com/en-us/articles/using-cluster-mkl-pblasscalapack-fortran-routine-in-your-c-program/"&gt;https://software.intel.com/en-us/articles/using-cluster-mkl-pblasscalapack-fortran-routine-in-your-c-program/&lt;/A&gt;&amp;nbsp; had pdgemv sample code &lt;A href="https://community.intel.com/legacyfs/online/drupal_files/article/165948/pdgemv.c"&gt;https://software.intel.com/sites/default/files/article/165948/pdgemv.c&lt;/A&gt;&lt;/P&gt;

&lt;P&gt;#include &amp;lt;mpi.h&amp;gt;&lt;BR /&gt;
	#include &amp;lt;iostream&amp;gt;&lt;BR /&gt;
	#include &amp;lt;vector&amp;gt;&lt;BR /&gt;
	#include &amp;lt;cmath&amp;gt;&lt;BR /&gt;
	#include &amp;lt;cstdlib&amp;gt;&lt;BR /&gt;
	//#include "Scalapack.h"&lt;BR /&gt;
	#include &amp;lt;mkl.h&amp;gt;&lt;BR /&gt;
	#include &amp;lt;mkl_scalapack.h&amp;gt;&lt;BR /&gt;
	#include "mkl_lapacke.h"&lt;BR /&gt;
	#include &amp;lt;mkl_cblas.h&amp;gt;&lt;/P&gt;

&lt;P&gt;#define mat(matriz,coluna,i,j) (matriz[i*coluna+j])&lt;/P&gt;

&lt;P&gt;#define p_of_i(i,bs,p) ( MKL_INT((i-1)/bs)%p)&lt;BR /&gt;
	#define l_of_i(i,bs,p) ( MKL_INT((i-1)/(p*bs)))&lt;BR /&gt;
	#define x_of_i(i,bs,p) (((i-1)%bs)+1)&lt;/P&gt;

&lt;P&gt;//#define&amp;nbsp;&amp;nbsp; numroc_&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; NUMROC&lt;/P&gt;

&lt;P&gt;using namespace std;&lt;/P&gt;

&lt;P&gt;extern "C"&lt;BR /&gt;
	{&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp;&amp;nbsp; /* BLACS C interface */&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp;&amp;nbsp; void Cblacs_pinfo(int* mypnum, int* nprocs);&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp;&amp;nbsp; void Cblacs_get( MKL_INT context, MKL_INT request, MKL_INT* value);&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp;&amp;nbsp; int&amp;nbsp; Cblacs_gridinit( MKL_INT* context, char * order, MKL_INT np_row, MKL_INT np_col);&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp;&amp;nbsp; void Cblacs_gridinfo( MKL_INT context, MKL_INT*&amp;nbsp; np_row, MKL_INT* np_col, MKL_INT*&amp;nbsp; my_row,&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp;&amp;nbsp; MKL_INT*&amp;nbsp; my_col);&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp;&amp;nbsp; int&amp;nbsp; numroc_( MKL_INT *n, MKL_INT *nb, MKL_INT *iproc, MKL_INT *isrcproc, MKL_INT *nprocs);&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp;&amp;nbsp; void Cblacs_gridexit(MKL_INT ictxt);&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp;&amp;nbsp; void Cblacs_barrier(MKL_INT ictxt, char * order);&lt;BR /&gt;
	}&lt;/P&gt;

&lt;P&gt;void find_nps(MKL_INT np, MKL_INT &amp;amp;nprow, MKL_INT &amp;amp; npcol);&lt;BR /&gt;
	int getIndex(MKL_INT row, MKL_INT col,MKL_INT NCOLS) {return row*NCOLS+col;}&lt;BR /&gt;
	/*&lt;BR /&gt;
	CTEST_Scalapack::CTEST_Scalapack(void)&lt;BR /&gt;
	{&lt;BR /&gt;
	}&lt;/P&gt;

&lt;P&gt;CTEST_Scalapack::~CTEST_Scalapack(void)&lt;BR /&gt;
	{&lt;BR /&gt;
	}&lt;BR /&gt;
	*/&lt;/P&gt;

&lt;P&gt;int main(int argc, char ** argv)&lt;BR /&gt;
	{&lt;/P&gt;

&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; int nprocs = 0;//MPI::COMM_WORLD.Get_size();&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp;&amp;nbsp; int rank = 0;//MPI::COMM_WORLD.Get_rank();&lt;/P&gt;

&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; MPI_Init(&amp;amp;argc,&amp;amp;argv);&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp;&amp;nbsp; MPI_Comm_size(MPI_COMM_WORLD,&amp;amp;nprocs);&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp;&amp;nbsp; MPI_Comm_rank(MPI_COMM_WORLD,&amp;amp;rank);&lt;/P&gt;

&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; std::cout&amp;lt;&amp;lt;"Returned: "&amp;lt;&amp;lt;" ";&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp;&amp;nbsp; std::cout &amp;lt;&amp;lt; "Hello World! I am " &amp;lt;&amp;lt; rank &amp;lt;&amp;lt; " of " &amp;lt;&amp;lt; nprocs &amp;lt;&amp;lt;&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp;&amp;nbsp; std::endl;&lt;/P&gt;

&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; srand(1);&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp;&amp;nbsp; MKL_INT myrow=0;&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp;&amp;nbsp; MKL_INT mycol=0;&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp;&amp;nbsp; MKL_INT ictxt=0;&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp;&amp;nbsp; MKL_INT nprow=0,npcol=0;&lt;/P&gt;

&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; MKL_INT BLOCK_SIZE =2; //this gonna be tricky - should be 64, but cannot be larger than the original matrix&lt;/P&gt;

&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; MKL_INT locR=0, locC=0;&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp;&amp;nbsp; MKL_INT block = BLOCK_SIZE;&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp;&amp;nbsp; MKL_INT izero = 0;&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp;&amp;nbsp; MKL_INT matrix_size = 9;&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp;&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp;&amp;nbsp; MKL_INT myone = 1;&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp;&amp;nbsp; MKL_INT nrhs = 1;&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp;&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp;&amp;nbsp; MKL_INT info=0;&lt;BR /&gt;
	&amp;nbsp;&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp;&amp;nbsp; int i=0,j=0;&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp;&amp;nbsp; double mone=(-1.e0),pone=(1.e0);&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp;&amp;nbsp; double AnormF=0.e0, XnormF=0.e0, RnormF=0.e0, BnormF=0.e0, residF=0.e0,eps=0.e0;&lt;/P&gt;

&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; find_nps(nprocs,nprow,npcol);&lt;/P&gt;

&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Cblacs_pinfo( &amp;amp;rank, &amp;amp;nprocs ) ;&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp;&amp;nbsp; Cblacs_get(-1, 0, &amp;amp;ictxt);&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp;&amp;nbsp; Cblacs_gridinit(&amp;amp;ictxt, "Row", nprow, npcol);&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp;&amp;nbsp; Cblacs_gridinfo(ictxt, &amp;amp;nprow, &amp;amp;npcol, &amp;amp;myrow, &amp;amp;mycol);&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp;&amp;nbsp; locR = numroc_(&amp;amp;matrix_size, &amp;amp;block, &amp;amp;myrow, &amp;amp;izero, &amp;amp;nprow);&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp;&amp;nbsp; locC = numroc_(&amp;amp;matrix_size, &amp;amp;block, &amp;amp;mycol, &amp;amp;izero, &amp;amp;npcol);&lt;/P&gt;

&lt;P&gt;&amp;nbsp;&amp;nbsp;&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp;&amp;nbsp; ////GLOBAL&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp;&amp;nbsp; double * A = new double[matrix_size*matrix_size]();&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp;&amp;nbsp; double * B = new double[matrix_size]();&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp;&amp;nbsp; double * Acpy = new double[matrix_size*matrix_size]();&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp;&amp;nbsp; double * Bcpy = new double[matrix_size]();&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp;&amp;nbsp; //LOCAL&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp;&amp;nbsp; double * local_know_vector = new double[locR]();&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp;&amp;nbsp; double * local_matrix = new double[locR*locC]();&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp;&amp;nbsp; MKL_INT* ipiv = new MKL_INT [locC*locR*block+1000000]();&lt;/P&gt;

&lt;P&gt;&amp;nbsp;B[0] = 0;&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp;&amp;nbsp; B[1] = 0;&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp;&amp;nbsp; B[2] = 1;&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp;&amp;nbsp; B[3] = 0;&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp;&amp;nbsp; B[4] = 0;&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp;&amp;nbsp; B[5] = 0;&lt;BR /&gt;
	&amp;nbsp;B[6] = 0;&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp;&amp;nbsp; B[7] = 0;&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp;&amp;nbsp; A[0] = 19;&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp;&amp;nbsp; A[1] = 3;&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp;&amp;nbsp; A[2] = 1;&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp;&amp;nbsp; A[3] = 12;&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp;&amp;nbsp; A[4] = 1;&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp;&amp;nbsp; A[5] = 16;&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp;&amp;nbsp; A[6] = 1;&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp;&amp;nbsp; A[7] = 3;&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp;&amp;nbsp; A[8] = 11;&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp;&amp;nbsp; A[9] = -19;&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp;&amp;nbsp; A[10] = 3;&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp;&amp;nbsp; A[11] = 1;&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp;&amp;nbsp; A[12] = 12;&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp;&amp;nbsp; A[13] = 1;&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp;&amp;nbsp; A[14] = 16;&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp;&amp;nbsp; A[15] = 1;&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp;&amp;nbsp; A[16] = 3;&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp;&amp;nbsp; A[17] = 11;&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp;&amp;nbsp; A[18] = -19;&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp;&amp;nbsp; A[19] = -3;&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp;&amp;nbsp; A[20] = 1;&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp;&amp;nbsp; A[21] = 12;&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp;&amp;nbsp; A[22] = 1;&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp;&amp;nbsp; A[23] = 16;&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp;&amp;nbsp; A[24] = 1;&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp;&amp;nbsp; A[25] = 3;&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp;&amp;nbsp; A[26] = 11;&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp;&amp;nbsp; A[27] = -19;&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp;&amp;nbsp; A[28] = -3;&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp;&amp;nbsp; A[29] = -1;&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp;&amp;nbsp; A[30] = 12;&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp;&amp;nbsp; A[31] = 1;&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp;&amp;nbsp; A[32] = 16;&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp;&amp;nbsp; A[33] = 1;&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp;&amp;nbsp; A[34] = 3;&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp;&amp;nbsp; A[35] = 11;&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp;&amp;nbsp; A[36] = -19;&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp;&amp;nbsp; A[37] = -3;&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp;&amp;nbsp; A[38] = -1;&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp;&amp;nbsp; A[39] = -12;&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp;&amp;nbsp; A[40] = 1;&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp;&amp;nbsp; A[41] = 16;&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp;&amp;nbsp; A[42] = 1;&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp;&amp;nbsp; A[43] = 3;&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp;&amp;nbsp; A[44] = 11;&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp;&amp;nbsp; A[45] = -19;&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp;&amp;nbsp; A[46] = -3;&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp;&amp;nbsp; A[47] = -1;&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp;&amp;nbsp; A[48] = -12;&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp;&amp;nbsp; A[49] = -1;&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp;&amp;nbsp; A[50] = 16;&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp;&amp;nbsp; A[51] = 1;&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp;&amp;nbsp; A[52] = 3;&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp;&amp;nbsp; A[53] = 11;&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp;&amp;nbsp; A[54] = -19;&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp;&amp;nbsp; A[55] = -3;&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp;&amp;nbsp; A[56] = -1;&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp;&amp;nbsp; A[57] = -12;&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp;&amp;nbsp; A[58] = -1;&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp;&amp;nbsp; A[59] = -16;&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp;&amp;nbsp; A[60] = 1;&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp;&amp;nbsp; A[61] = 3;&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp;&amp;nbsp; A[62] = 11;&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp;&amp;nbsp; A[63] = -19;&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp;&amp;nbsp; A[64] = -3;&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp;&amp;nbsp; A[65] = -1;&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp;&amp;nbsp; A[66] = -12;&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp;&amp;nbsp; A[67] = -1;&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp;&amp;nbsp; A[68] = -16;&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp;&amp;nbsp; A[69] = -1;&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp;&amp;nbsp; A[70] = 3;&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp;&amp;nbsp; A[71] = 11;&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp;&amp;nbsp; A[72] = -19;&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp;&amp;nbsp; A[73] = -3;&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp;&amp;nbsp; A[74] = -1;&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp;&amp;nbsp; A[75] = -12;&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp;&amp;nbsp; A[76] = -1;&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp;&amp;nbsp; A[77] = -16;&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp;&amp;nbsp; A[78] = -1;&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp;&amp;nbsp; A[79] = -3;&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp;&amp;nbsp; A[80] = 11;&lt;/P&gt;

&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; MKL_INT* descA&amp;nbsp; = new MKL_INT[9]();&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp;&amp;nbsp; MKL_INT* descB&amp;nbsp; = new MKL_INT[9]();&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp;&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp;&amp;nbsp; descA[0] = 1; // descriptor type&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp;&amp;nbsp; descA[1] = ictxt; // blacs context&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp;&amp;nbsp; descA[2] = matrix_size; // global number of rows&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp;&amp;nbsp; descA[3] = matrix_size; // global number of columns&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp;&amp;nbsp; descA[4] = block; // row block size&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp;&amp;nbsp; descA[5] = block; // column block size (DEFINED EQUAL THAN ROW BLOCK SIZE)&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp;&amp;nbsp; descA[6] = 0; // initial process row(DEFINED 0)&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp;&amp;nbsp; descA[7] = 0; // initial process column (DEFINED 0)&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp;&amp;nbsp; descA[8] = locR; // leading dimension of local array&lt;/P&gt;

&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; descB[0] = 1; // descriptor type&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp;&amp;nbsp; descB[1] = ictxt; // blacs context&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp;&amp;nbsp; descB[2] = matrix_size; // global number of rows&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp;&amp;nbsp; descB[3] = 1; // global number of columns&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp;&amp;nbsp; descB[4] = block; // row block size&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp;&amp;nbsp; descB[5] = block; // column block size (DEFINED EQUAL THAN ROW BLOCK SIZE)&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp;&amp;nbsp; descB[6] = 0; // initial process row(DEFINED 0)&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp;&amp;nbsp; descB[7] = 0; // initial process column (DEFINED 0)&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp;&amp;nbsp; descB[8] = locR; // leading dimension of local array&lt;/P&gt;

&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; int il=0, jl=0;&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp;&amp;nbsp; for(i=1; i&amp;lt; matrix_size+1; i++)&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; for(j=1; j&amp;lt; matrix_size+1; j++)&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; int pi = p_of_i(i,block,nprow);&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; int li = l_of_i(i,block,nprow);&lt;/P&gt;

&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; int xi = x_of_i(i,block,nprow);&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //printf("i = %d, j = %d, pi = %d, li = %d\n",i,j,pi,li);;fflush(stdout);&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; int pj = p_of_i(j,block,npcol);&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; int lj = l_of_i(j,block,npcol);&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; int xj = x_of_i(j,block,npcol);&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //printf("i = %d, j = %d, pj = %d, lj = %d, xj = %d\n",i,j,pj,lj,xj);;fflush(stdout);&lt;/P&gt;

&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if( (pi == myrow) &amp;amp;&amp;amp; (pj == mycol))&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; il = li*block+xi;&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; jl = lj*block+xj;&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; local_matrix[getIndex(il-1, jl-1, locC)] = A[getIndex(i-1,j-1,matrix_size)];&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if(&amp;nbsp; (pi == myrow) &amp;amp;&amp;amp;(mycol==0)&amp;nbsp; )&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; local_know_vector[il-1] = B[i-1];&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/P&gt;

&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;BR /&gt;
	//&amp;nbsp; above initialization code have some issue. in our sample, we use &amp;nbsp;&amp;nbsp;&lt;BR /&gt;
	for(i=0;i&amp;lt;locR;++i) for(j=0;j&amp;lt;locC;++j) {&lt;BR /&gt;
	&amp;nbsp; int gi = i%block + block*myrow + (i/block)*block*nprow;&lt;BR /&gt;
	&amp;nbsp; int gj = j%block + block*mycol + (j/block)*block*npcol;&lt;BR /&gt;
	&amp;nbsp; local_matrix[i + locR*j] = A[gi*matrix_size + gj]; // note: col-major &amp;lt;- row-major&lt;BR /&gt;
	&amp;nbsp; local_know_vector&lt;I&gt; = B[gi];&lt;BR /&gt;
	}&lt;/I&gt;&lt;/P&gt;

&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ////STARTING PDGESV&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp;&amp;nbsp; pdgesv_(&amp;amp;matrix_size, &amp;amp;nrhs, local_matrix, &amp;amp;myone, &amp;amp;myone, descA, ipiv, local_know_vector, &amp;amp;myone, &amp;amp;myone, descB, &amp;amp;info);&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp;&amp;nbsp; if(rank==0)&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if(info != 0) cout &amp;lt;&amp;lt;"PDGESV problem! Info "&amp;lt;&amp;lt;info&amp;lt;&amp;lt;endl;&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp;&amp;nbsp; for (i = 0; i &amp;lt; locR; i++)&lt;BR /&gt;
	{&lt;BR /&gt;
	&amp;nbsp; int gi = i%block + block*myrow + (i/block)*block*nprow;&lt;BR /&gt;
	&amp;nbsp; if (mycol == 0) printf("res[ %i ]=%lg\n",gi,local_know_vector&lt;I&gt;);&lt;BR /&gt;
	}&lt;/I&gt;&lt;/P&gt;

&lt;P&gt;&amp;nbsp; //&amp;nbsp; for(i=0; i&amp;lt; locR; i++)&lt;BR /&gt;
	&amp;nbsp; //&amp;nbsp; {&lt;BR /&gt;
	&amp;nbsp; //&amp;nbsp;&amp;nbsp;&amp;nbsp; cout&amp;lt;&amp;lt;"**\n"&amp;lt;&amp;lt;"rank "&amp;lt;&amp;lt;rank&amp;lt;&amp;lt;"&amp;nbsp; answer: "&amp;lt;&amp;lt;local_know_vector&lt;I&gt;&amp;lt;&amp;lt;endl;&lt;BR /&gt;
	&amp;nbsp; //&amp;nbsp; }&lt;/I&gt;&lt;/P&gt;

&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; if(NULL!=descA)&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {delete [] descA; descA=NULL;}&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp;&amp;nbsp; if(NULL!=descB)&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {delete [] descB; descB=NULL;}&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp;&amp;nbsp; if(NULL!=local_know_vector)&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {delete [] local_know_vector; local_know_vector=NULL;}&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp;&amp;nbsp; if(NULL!=local_matrix)&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {delete [] local_matrix; local_matrix=NULL;}&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp;&amp;nbsp; if(NULL!=Acpy)&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {delete [] Acpy; Acpy=NULL;}&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp;&amp;nbsp; if(NULL!=Bcpy)&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {delete [] Bcpy; Bcpy=NULL;}&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp;&amp;nbsp; if(NULL!=A)&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {delete [] A; A=NULL;}&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp;&amp;nbsp; if(NULL!=B)&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {delete [] B; B=NULL;}&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/P&gt;

&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Cblacs_gridexit(ictxt);&lt;/P&gt;

&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; return 0;&lt;/P&gt;

&lt;P&gt;}&lt;/P&gt;

&lt;P&gt;void find_nps(MKL_INT np, MKL_INT &amp;amp;nprow, MKL_INT &amp;amp; npcol)&lt;BR /&gt;
	{&lt;BR /&gt;
	#if 1&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp;&amp;nbsp; nprow = (int)sqrt( np );&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp;&amp;nbsp; npcol = np / nprow;&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp;&amp;nbsp; return;&lt;/P&gt;

&lt;P&gt;#else&lt;/P&gt;

&lt;P&gt;MKL_INT min_nprow=100000;&lt;BR /&gt;
	MKL_INT min_npcol=100000;&lt;/P&gt;

&lt;P&gt;nprow = np;&lt;BR /&gt;
	npcol = np;&lt;/P&gt;

&lt;P&gt;while(1) {&lt;/P&gt;

&lt;P&gt;&amp;nbsp;&amp;nbsp; npcol--;&lt;BR /&gt;
	&amp;nbsp; if(np%2==0&amp;nbsp;&amp;nbsp; ) {&lt;BR /&gt;
	&amp;nbsp; if(npcol ==1){&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp; nprow --;&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp; npcol = nprow;&lt;BR /&gt;
	&amp;nbsp; }&lt;BR /&gt;
	&amp;nbsp; }else {&lt;BR /&gt;
	&amp;nbsp; if(npcol ==0){&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp; nprow --;&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp; npcol = nprow;&lt;BR /&gt;
	&amp;nbsp; }&lt;/P&gt;

&lt;P&gt;&amp;nbsp; }&lt;/P&gt;

&lt;P&gt;&amp;nbsp; if(nprow*npcol == np) {&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp;&amp;nbsp; min_npcol = npcol;&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp;&amp;nbsp; if(nprow &amp;lt; min_nprow)&amp;nbsp;&amp;nbsp;&amp;nbsp; min_nprow = nprow;&lt;BR /&gt;
	&amp;nbsp; }&lt;/P&gt;

&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; if(nprow ==1 ) break;&lt;/P&gt;

&lt;P&gt;}&lt;/P&gt;

&lt;P&gt;nprow = min_nprow;&lt;BR /&gt;
	npcol = min_npcol;&lt;BR /&gt;
	#endif&lt;BR /&gt;
	}&lt;/P&gt;

&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Wed, 31 Dec 2014 05:27:00 GMT</pubDate>
      <guid>https://community.intel.com/t5/Intel-oneAPI-Math-Kernel-Library/Scalapack-Please-Help-with-using-pdgesv/m-p/1017629#M19563</guid>
      <dc:creator>Ying_H_Intel</dc:creator>
      <dc:date>2014-12-31T05:27:00Z</dc:date>
    </item>
    <item>
      <title>Hi Ying,</title>
      <link>https://community.intel.com/t5/Intel-oneAPI-Math-Kernel-Library/Scalapack-Please-Help-with-using-pdgesv/m-p/1017630#M19564</link>
      <description>&lt;P style="box-sizing: border-box; margin-bottom: 1.06667em; line-height: 1.4; max-width: 700px; color: rgb(85, 85, 85); font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif; font-size: 15px;"&gt;Hi Ying,&lt;/P&gt;

&lt;P style="box-sizing: border-box; margin-bottom: 1.06667em; line-height: 1.4; max-width: 700px; color: rgb(85, 85, 85); font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif; font-size: 15px;"&gt;I ran your code on NERSC Cori supercomputer, but I got the error information:&lt;/P&gt;

&lt;P class="p1" style="box-sizing: border-box; margin-bottom: 1.06667em; line-height: 1.4; max-width: 700px; color: rgb(85, 85, 85); font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif; font-size: 15px;"&gt;&lt;SPAN class="s1" style="box-sizing: border-box;"&gt;Returned:&amp;nbsp; Hello World! I am 0 of 2&lt;/SPAN&gt;&lt;/P&gt;

&lt;P class="p1" style="box-sizing: border-box; margin-bottom: 1.06667em; line-height: 1.4; max-width: 700px; color: rgb(85, 85, 85); font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif; font-size: 15px;"&gt;&lt;SPAN class="s1" style="box-sizing: border-box;"&gt;Returned:&amp;nbsp; Hello World! I am 1 of 2&lt;/SPAN&gt;&lt;/P&gt;

&lt;P class="p1" style="box-sizing: border-box; margin-bottom: 1.06667em; line-height: 1.4; max-width: 700px; color: rgb(85, 85, 85); font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif; font-size: 15px;"&gt;&lt;SPAN class="s1" style="box-sizing: border-box;"&gt;Rank 0 [Wed Jan 13 12:23:10 2016] [c0-0c0s8n3] Fatal error in MPI_Send: Invalid tag, error stack:&lt;/SPAN&gt;&lt;/P&gt;

&lt;P class="p1" style="box-sizing: border-box; margin-bottom: 1.06667em; line-height: 1.4; max-width: 700px; color: rgb(85, 85, 85); font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif; font-size: 15px;"&gt;&lt;SPAN class="s1" style="box-sizing: border-box;"&gt;MPI_Send(186): MPI_Send(buf=0x139d640, count=2, MPI_INT, dest=1, tag=5000000, comm=0x84000001) failed&lt;/SPAN&gt;&lt;/P&gt;

&lt;P class="p1" style="box-sizing: border-box; margin-bottom: 1.06667em; line-height: 1.4; max-width: 700px; color: rgb(85, 85, 85); font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif; font-size: 15px;"&gt;&lt;SPAN class="s1" style="box-sizing: border-box;"&gt;MPI_Send(111): Invalid tag, value is 5000000&lt;/SPAN&gt;&lt;/P&gt;

&lt;P class="p1" style="box-sizing: border-box; margin-bottom: 1.06667em; line-height: 1.4; max-width: 700px; color: rgb(85, 85, 85); font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif; font-size: 15px;"&gt;&lt;SPAN class="s1" style="box-sizing: border-box;"&gt;Rank 1 [Wed Jan 13 12:23:10 2016] [c0-0c0s9n0] Fatal error in MPI_Recv: Invalid tag, error stack:&lt;/SPAN&gt;&lt;/P&gt;

&lt;P class="p1" style="box-sizing: border-box; margin-bottom: 1.06667em; line-height: 1.4; max-width: 700px; color: rgb(85, 85, 85); font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif; font-size: 15px;"&gt;&lt;SPAN class="s1" style="box-sizing: border-box;"&gt;MPI_Recv(199): MPI_Recv(buf=0x139b5c0, count=2, MPI_INT, src=0, tag=5000000, comm=0x84000001, status=0x7fffffff5618) failed&lt;/SPAN&gt;&lt;/P&gt;

&lt;P class="p1" style="box-sizing: border-box; margin-bottom: 1.06667em; line-height: 1.4; max-width: 700px; color: rgb(85, 85, 85); font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif; font-size: 15px;"&gt;&lt;SPAN class="s1" style="box-sizing: border-box;"&gt;MPI_Recv(118): Invalid tag, value is 5000000&lt;/SPAN&gt;&lt;/P&gt;

&lt;P class="p1" style="box-sizing: border-box; margin-bottom: 1.06667em; line-height: 1.4; max-width: 700px; color: rgb(85, 85, 85); font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif; font-size: 15px;"&gt;&lt;SPAN class="s1" style="box-sizing: border-box;"&gt;srun: error: nid00035: task 0: Aborted&lt;/SPAN&gt;&lt;/P&gt;

&lt;P class="p1" style="box-sizing: border-box; margin-bottom: 1.06667em; line-height: 1.4; max-width: 700px; color: rgb(85, 85, 85); font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif; font-size: 15px;"&gt;&lt;SPAN class="s1" style="box-sizing: border-box;"&gt;srun: Terminating job step 929053.0&lt;/SPAN&gt;&lt;/P&gt;

&lt;P class="p1" style="box-sizing: border-box; margin-bottom: 1.06667em; line-height: 1.4; max-width: 700px; color: rgb(85, 85, 85); font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif; font-size: 15px;"&gt;&lt;SPAN class="s1" style="box-sizing: border-box;"&gt;srun: Job step aborted: Waiting up to 32 seconds for job step to finish.&lt;/SPAN&gt;&lt;/P&gt;

&lt;P class="p1" style="box-sizing: border-box; margin-bottom: 1.06667em; line-height: 1.4; max-width: 700px; color: rgb(85, 85, 85); font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif; font-size: 15px;"&gt;&lt;SPAN class="s1" style="box-sizing: border-box;"&gt;srun: error: nid00036: task 1: Aborted&lt;/SPAN&gt;&lt;/P&gt;

&lt;P class="p1" style="box-sizing: border-box; margin-bottom: 1.06667em; line-height: 1.4; max-width: 700px; color: rgb(85, 85, 85); font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif; font-size: 15px;"&gt;Could you help me?&lt;/P&gt;</description>
      <pubDate>Thu, 14 Jan 2016 05:59:32 GMT</pubDate>
      <guid>https://community.intel.com/t5/Intel-oneAPI-Math-Kernel-Library/Scalapack-Please-Help-with-using-pdgesv/m-p/1017630#M19564</guid>
      <dc:creator>Yang_Y_2</dc:creator>
      <dc:date>2016-01-14T05:59:32Z</dc:date>
    </item>
    <item>
      <title>Hi Yang, </title>
      <link>https://community.intel.com/t5/Intel-oneAPI-Math-Kernel-Library/Scalapack-Please-Help-with-using-pdgesv/m-p/1017631#M19565</link>
      <description>&lt;P&gt;Hi Yang,&amp;nbsp;&lt;/P&gt;

&lt;P&gt;Could you also show your compile command and run command, MPI version, MKL version etc information?&amp;nbsp;&lt;/P&gt;

&lt;P&gt;There was some MPI sample in MKL install directory, could you please try them first and see if mkl work fine on the supercomputer?&amp;nbsp;&lt;/P&gt;

&lt;P&gt;&lt;SPAN style="font-size: 1em; line-height: 1.5;"&gt;Best Regards,&lt;/SPAN&gt;&lt;/P&gt;

&lt;P&gt;Ying&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Thu, 14 Jan 2016 07:55:38 GMT</pubDate>
      <guid>https://community.intel.com/t5/Intel-oneAPI-Math-Kernel-Library/Scalapack-Please-Help-with-using-pdgesv/m-p/1017631#M19565</guid>
      <dc:creator>Ying_H_Intel</dc:creator>
      <dc:date>2016-01-14T07:55:38Z</dc:date>
    </item>
    <item>
      <title>Hi Ying,</title>
      <link>https://community.intel.com/t5/Intel-oneAPI-Math-Kernel-Library/Scalapack-Please-Help-with-using-pdgesv/m-p/1017632#M19566</link>
      <description>&lt;P&gt;Hi Ying,&lt;/P&gt;

&lt;P&gt;I'm using the NERSC cori supercomputer, all the information is at:&lt;/P&gt;

&lt;P&gt;&lt;A href="http://www.nersc.gov/users/computational-systems/cori/" target="_blank"&gt;http://www.nersc.gov/users/computational-systems/cori/&lt;/A&gt;&lt;/P&gt;

&lt;P&gt;The compile command is:&lt;/P&gt;

&lt;P class="p1"&gt;&lt;SPAN class="s1"&gt;source /opt/intel/bin/compilervars.sh intel64&lt;/SPAN&gt;&lt;/P&gt;

&lt;P class="p1"&gt;&lt;SPAN class="s1"&gt;source /opt/intel/impi/5.0.2.044/bin64/mpivars.sh&lt;/SPAN&gt;&lt;/P&gt;

&lt;P class="p1"&gt;&lt;SPAN class="s1"&gt;CC -o execute pdgesv.cpp -mkl:cluster&lt;/SPAN&gt;&lt;/P&gt;

&lt;P class="p1"&gt;&lt;SPAN class="s1"&gt;The run command is sbatch test.sl&lt;/SPAN&gt;&lt;/P&gt;

&lt;P class="p1"&gt;&lt;SPAN class="s1"&gt;where test.sl is&lt;/SPAN&gt;&lt;/P&gt;

&lt;P class="p1"&gt;&lt;SPAN class="s1"&gt;#!/bin/bash -l&lt;/SPAN&gt;&lt;/P&gt;

&lt;P class="p1"&gt;&lt;SPAN class="s1"&gt;#SBATCH --partition debug&lt;/SPAN&gt;&lt;/P&gt;

&lt;P class="p1"&gt;&lt;SPAN class="s1"&gt;#SBATCH --nodes 2&lt;/SPAN&gt;&lt;/P&gt;

&lt;P class="p1"&gt;&lt;SPAN class="s1"&gt;#SBATCH --time=00:03:00&lt;/SPAN&gt;&lt;/P&gt;

&lt;P class="p1"&gt;&lt;SPAN class="s1"&gt;cd $SLURM_SUBMIT_DIR&lt;/SPAN&gt;&lt;/P&gt;

&lt;P class="p1"&gt;&lt;SPAN class="s1"&gt;srun -n 2 ./execute;&lt;/SPAN&gt;&lt;/P&gt;</description>
      <pubDate>Fri, 15 Jan 2016 00:53:00 GMT</pubDate>
      <guid>https://community.intel.com/t5/Intel-oneAPI-Math-Kernel-Library/Scalapack-Please-Help-with-using-pdgesv/m-p/1017632#M19566</guid>
      <dc:creator>Yang_Y_2</dc:creator>
      <dc:date>2016-01-15T00:53:00Z</dc:date>
    </item>
    <item>
      <title>Hi Yang,</title>
      <link>https://community.intel.com/t5/Intel-oneAPI-Math-Kernel-Library/Scalapack-Please-Help-with-using-pdgesv/m-p/1017633#M19567</link>
      <description>&lt;P&gt;Hi Yang,&lt;/P&gt;

&lt;P&gt;You are probably using Cray MPI that does not support tags having large value. MKL used to use such tags internally. Now the issue is fixed, and if you use a recent MKL version (e.g. MKL 11.3.1) the test should pass.&lt;/P&gt;

&lt;P&gt;Alternatively, it should work with Intel MPI.&lt;/P&gt;

&lt;P&gt;Thanks&lt;BR /&gt;
	Dima&lt;BR /&gt;
	&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Fri, 15 Jan 2016 06:32:30 GMT</pubDate>
      <guid>https://community.intel.com/t5/Intel-oneAPI-Math-Kernel-Library/Scalapack-Please-Help-with-using-pdgesv/m-p/1017633#M19567</guid>
      <dc:creator>Dmitry_B_Intel</dc:creator>
      <dc:date>2016-01-15T06:32:30Z</dc:date>
    </item>
    <item>
      <title>If I change the number of</title>
      <link>https://community.intel.com/t5/Intel-oneAPI-Math-Kernel-Library/Scalapack-Please-Help-with-using-pdgesv/m-p/1017634#M19568</link>
      <description>&lt;P&gt;If I change the number of processes, the solution of linear equation will be different. Also, the solutions of this code is different from the Matlab solution. Let us solve the linear equation Ax = b&lt;/P&gt;

&lt;P&gt;A is&amp;nbsp;&lt;/P&gt;

&lt;P&gt;&amp;nbsp; &amp;nbsp; 19 &amp;nbsp; &amp;nbsp; 3 &amp;nbsp; &amp;nbsp; 1 &amp;nbsp; &amp;nbsp;12 &amp;nbsp; &amp;nbsp; 1 &amp;nbsp; &amp;nbsp;16 &amp;nbsp; &amp;nbsp; 1 &amp;nbsp; &amp;nbsp; 3 &amp;nbsp; &amp;nbsp;11&lt;BR /&gt;
	&amp;nbsp; &amp;nbsp;-19 &amp;nbsp; &amp;nbsp; 3 &amp;nbsp; &amp;nbsp; 1 &amp;nbsp; &amp;nbsp;12 &amp;nbsp; &amp;nbsp; 1 &amp;nbsp; &amp;nbsp;16 &amp;nbsp; &amp;nbsp; 1 &amp;nbsp; &amp;nbsp; 3 &amp;nbsp; &amp;nbsp;11&lt;BR /&gt;
	&amp;nbsp; &amp;nbsp;-19 &amp;nbsp; &amp;nbsp;-3 &amp;nbsp; &amp;nbsp; 1 &amp;nbsp; &amp;nbsp;12 &amp;nbsp; &amp;nbsp; 1 &amp;nbsp; &amp;nbsp;16 &amp;nbsp; &amp;nbsp; 1 &amp;nbsp; &amp;nbsp; 3 &amp;nbsp; &amp;nbsp;11&lt;BR /&gt;
	&amp;nbsp; &amp;nbsp;-19 &amp;nbsp; &amp;nbsp;-3 &amp;nbsp; &amp;nbsp;-1 &amp;nbsp; &amp;nbsp;12 &amp;nbsp; &amp;nbsp; 1 &amp;nbsp; &amp;nbsp;16 &amp;nbsp; &amp;nbsp; 1 &amp;nbsp; &amp;nbsp; 3 &amp;nbsp; &amp;nbsp;11&lt;BR /&gt;
	&amp;nbsp; &amp;nbsp;-19 &amp;nbsp; &amp;nbsp;-3 &amp;nbsp; &amp;nbsp;-1 &amp;nbsp; -12 &amp;nbsp; &amp;nbsp; 1 &amp;nbsp; &amp;nbsp;16 &amp;nbsp; &amp;nbsp; 1 &amp;nbsp; &amp;nbsp; 3 &amp;nbsp; &amp;nbsp;11&lt;BR /&gt;
	&amp;nbsp; &amp;nbsp;-19 &amp;nbsp; &amp;nbsp;-3 &amp;nbsp; &amp;nbsp;-1 &amp;nbsp; -12 &amp;nbsp; &amp;nbsp;-1 &amp;nbsp; &amp;nbsp;16 &amp;nbsp; &amp;nbsp; 1 &amp;nbsp; &amp;nbsp; 3 &amp;nbsp; &amp;nbsp;11&lt;BR /&gt;
	&amp;nbsp; &amp;nbsp;-19 &amp;nbsp; &amp;nbsp;-3 &amp;nbsp; &amp;nbsp;-1 &amp;nbsp; -12 &amp;nbsp; &amp;nbsp;-1 &amp;nbsp; -16 &amp;nbsp; &amp;nbsp; 1 &amp;nbsp; &amp;nbsp; 3 &amp;nbsp; &amp;nbsp;11&lt;BR /&gt;
	&amp;nbsp; &amp;nbsp;-19 &amp;nbsp; &amp;nbsp;-3 &amp;nbsp; &amp;nbsp;-1 &amp;nbsp; -12 &amp;nbsp; &amp;nbsp;-1 &amp;nbsp; -16 &amp;nbsp; &amp;nbsp;-1 &amp;nbsp; &amp;nbsp; 3 &amp;nbsp; &amp;nbsp;11&lt;BR /&gt;
	&amp;nbsp; &amp;nbsp;-19 &amp;nbsp; &amp;nbsp;-3 &amp;nbsp; &amp;nbsp;-1 &amp;nbsp; -12 &amp;nbsp; &amp;nbsp;-1 &amp;nbsp; -16 &amp;nbsp; &amp;nbsp;-1 &amp;nbsp; &amp;nbsp;-3 &amp;nbsp; &amp;nbsp;11&lt;/P&gt;

&lt;P&gt;b is&lt;/P&gt;

&lt;P&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;0&lt;BR /&gt;
	&amp;nbsp; &amp;nbsp; &amp;nbsp;0&lt;BR /&gt;
	&amp;nbsp; &amp;nbsp; &amp;nbsp;1&lt;BR /&gt;
	&amp;nbsp; &amp;nbsp; &amp;nbsp;0&lt;BR /&gt;
	&amp;nbsp; &amp;nbsp; &amp;nbsp;0&lt;BR /&gt;
	&amp;nbsp; &amp;nbsp; &amp;nbsp;0&lt;BR /&gt;
	&amp;nbsp; &amp;nbsp; &amp;nbsp;0&lt;BR /&gt;
	&amp;nbsp; &amp;nbsp; &amp;nbsp;0&lt;BR /&gt;
	&amp;nbsp; &amp;nbsp; &amp;nbsp;0&lt;/P&gt;

&lt;P&gt;If we use Matlab, the solution is:&lt;/P&gt;

&lt;P&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;0&lt;BR /&gt;
	&amp;nbsp; &amp;nbsp;-0.1667&lt;BR /&gt;
	&amp;nbsp; &amp;nbsp; 0.5000&lt;BR /&gt;
	&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;0&lt;BR /&gt;
	&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;0&lt;BR /&gt;
	&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;0&lt;BR /&gt;
	&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;0&lt;BR /&gt;
	&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;0&lt;BR /&gt;
	&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;0&lt;/P&gt;

&lt;P&gt;If we use this code for one process, the solution is:&lt;/P&gt;

&lt;P class="p1"&gt;&lt;SPAN class="s1"&gt;answer[0]: 0.000000&lt;/SPAN&gt;&lt;/P&gt;

&lt;P class="p1"&gt;&lt;SPAN class="s1"&gt;answer[1]: 0.000000&lt;/SPAN&gt;&lt;/P&gt;

&lt;P class="p1"&gt;&lt;SPAN class="s1"&gt;answer[2]: 0.500000&lt;/SPAN&gt;&lt;/P&gt;

&lt;P class="p1"&gt;&lt;SPAN class="s1"&gt;answer[3]: -0.500000&lt;/SPAN&gt;&lt;/P&gt;

&lt;P class="p1"&gt;&lt;SPAN class="s1"&gt;answer[4]: -0.000000&lt;/SPAN&gt;&lt;/P&gt;

&lt;P class="p1"&gt;&lt;SPAN class="s1"&gt;answer[5]: -0.000000&lt;/SPAN&gt;&lt;/P&gt;

&lt;P class="p1"&gt;&lt;SPAN class="s1"&gt;answer[6]: 0.000000&lt;/SPAN&gt;&lt;/P&gt;

&lt;P class="p1"&gt;&lt;SPAN class="s1"&gt;answer[7]: -0.000000&lt;/SPAN&gt;&lt;/P&gt;

&lt;P class="p1"&gt;&lt;SPAN class="s1"&gt;answer[8]: -0.000000&lt;/SPAN&gt;&lt;/P&gt;

&lt;P class="p1"&gt;&lt;SPAN style="font-size: 13.008px; line-height: 19.512px;"&gt;If we use this code for two processes, the solution is:&lt;/SPAN&gt;&lt;/P&gt;

&lt;P class="p1"&gt;&lt;SPAN class="s1"&gt;answer[0]: 0.003434&lt;/SPAN&gt;&lt;/P&gt;

&lt;P class="p1"&gt;&lt;SPAN class="s1"&gt;answer[1]: 0.016138&lt;/SPAN&gt;&lt;/P&gt;

&lt;P class="p1"&gt;&lt;SPAN class="s1"&gt;answer[2]: 0.019397&lt;/SPAN&gt;&lt;/P&gt;

&lt;P class="p1"&gt;&lt;SPAN class="s1"&gt;answer[3]: 0.033449&lt;/SPAN&gt;&lt;/P&gt;

&lt;P class="p1"&gt;&lt;SPAN class="s1"&gt;answer[4]: -0.025858&lt;/SPAN&gt;&lt;/P&gt;

&lt;P class="p1"&gt;&lt;SPAN class="s1"&gt;answer[5]: 0.013383&lt;/SPAN&gt;&lt;/P&gt;

&lt;P class="p1"&gt;&lt;SPAN class="s1"&gt;answer[6]: 0.022018&lt;/SPAN&gt;&lt;/P&gt;

&lt;P class="p1"&gt;&lt;SPAN class="s1"&gt;answer[7]: -0.060255&lt;/SPAN&gt;&lt;/P&gt;

&lt;P class="p1"&gt;&lt;SPAN class="s1"&gt;answer[8]: 0.025895&lt;/SPAN&gt;&lt;/P&gt;

&lt;P class="p1"&gt;&lt;SPAN style="font-size: 13.008px; line-height: 19.512px;"&gt;If we use this code for three processes, the solution is:&lt;/SPAN&gt;&lt;/P&gt;

&lt;P class="p1"&gt;&lt;SPAN style="font-size: 1em; line-height: 1.5;"&gt;answer[0]: -0.023551&lt;/SPAN&gt;&lt;/P&gt;

&lt;P class="p1"&gt;&lt;SPAN class="s1"&gt;answer[1]: 0.017566&lt;/SPAN&gt;&lt;/P&gt;

&lt;P class="p1"&gt;&lt;SPAN class="s1"&gt;answer[2]: 0.004775&lt;/SPAN&gt;&lt;/P&gt;

&lt;P class="p1"&gt;&lt;SPAN class="s1"&gt;answer[3]: 0.004377&lt;/SPAN&gt;&lt;/P&gt;

&lt;P class="p1"&gt;&lt;SPAN class="s1"&gt;answer[4]: 0.023704&lt;/SPAN&gt;&lt;/P&gt;

&lt;P class="p1"&gt;&lt;SPAN class="s1"&gt;answer[5]: 0.027967&lt;/SPAN&gt;&lt;/P&gt;

&lt;P class="p1"&gt;&lt;SPAN class="s1"&gt;answer[6]: -0.023534&lt;/SPAN&gt;&lt;/P&gt;

&lt;P class="p1"&gt;&lt;SPAN class="s1"&gt;answer[7]: 0.017509&lt;/SPAN&gt;&lt;/P&gt;

&lt;P class="p1"&gt;&lt;SPAN class="s1"&gt;answer[8]: 0.000398&lt;/SPAN&gt;&lt;/P&gt;

&lt;P class="p1"&gt;&lt;SPAN class="s1"&gt;Can you tell me where went wrong? How can I get the correct solution by this code?&lt;/SPAN&gt;&lt;/P&gt;</description>
      <pubDate>Sat, 20 Feb 2016 18:41:03 GMT</pubDate>
      <guid>https://community.intel.com/t5/Intel-oneAPI-Math-Kernel-Library/Scalapack-Please-Help-with-using-pdgesv/m-p/1017634#M19568</guid>
      <dc:creator>Yang_Y_2</dc:creator>
      <dc:date>2016-02-20T18:41:03Z</dc:date>
    </item>
    <item>
      <title>The matrix should be</title>
      <link>https://community.intel.com/t5/Intel-oneAPI-Math-Kernel-Library/Scalapack-Please-Help-with-using-pdgesv/m-p/1017635#M19569</link>
      <description>&lt;P&gt;&lt;SPAN style="font-size: 1em; line-height: 1.5;"&gt;The matrix should be distributed correctly. For example, consider distribution of rows. Let N be global number of rows, LOCR the local number of rows as obtained with a call to numroc(), B the block size, p my processor row, P the number of processor rows. Then for locn = 0...LOCR-1 the global index n=0...N-1 &amp;nbsp;is computed thus:&lt;/SPAN&gt;&lt;/P&gt;

&lt;P&gt;n = locn % B // offset within current block (block locn/B)&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp;&lt;SPAN style="font-size: 1em; line-height: 1.5;"&gt;&amp;nbsp;+ B*p &amp;nbsp; // offset of the current block within current cycle of block-cyclic distribution&lt;BR /&gt;
	&amp;nbsp; &amp;nbsp;+ P*B*(locn/B) &amp;nbsp; // offset of the current cycle on the grid of P processors&lt;BR /&gt;
	&amp;nbsp; &amp;nbsp;;&lt;/SPAN&gt;&lt;BR /&gt;
	&amp;nbsp;&lt;/P&gt;

&lt;P&gt;Once you know (i,j) for (loci,locj) you can initialize local_matrix[loci + locR*locj] = A[i + matrix_size*j].&amp;nbsp;&lt;SPAN style="font-size: 13.008px; line-height: 19.512px;"&gt;Please note that ScaLAPACK supports only column-major ordering of matrices.&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="font-size: 1em; line-height: 1.5;"&gt;That is, local matrix element (i,j) should be located at offset i+locR*j, not at i*locC + j,&lt;/SPAN&gt;&lt;/P&gt;

&lt;P&gt;&lt;SPAN style="font-size: 1em; line-height: 1.5;"&gt;I hope this will help you.&lt;/SPAN&gt;&lt;/P&gt;

&lt;P&gt;&lt;SPAN style="font-size: 1em; line-height: 1.5;"&gt;Thanks&lt;BR /&gt;
	Dima&lt;/SPAN&gt;&lt;/P&gt;

&lt;P&gt;&amp;nbsp;&lt;/P&gt;

&lt;P&gt;&amp;nbsp;&lt;/P&gt;

&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Wed, 24 Feb 2016 10:38:40 GMT</pubDate>
      <guid>https://community.intel.com/t5/Intel-oneAPI-Math-Kernel-Library/Scalapack-Please-Help-with-using-pdgesv/m-p/1017635#M19569</guid>
      <dc:creator>Dmitry_B_Intel</dc:creator>
      <dc:date>2016-02-24T10:38:40Z</dc:date>
    </item>
    <item>
      <title>Hi Dima,</title>
      <link>https://community.intel.com/t5/Intel-oneAPI-Math-Kernel-Library/Scalapack-Please-Help-with-using-pdgesv/m-p/1017636#M19570</link>
      <description>&lt;P&gt;Hi Dima,&lt;/P&gt;

&lt;P&gt;Thank you much for the correction.&amp;nbsp;&lt;/P&gt;

&lt;P&gt;The proper&amp;nbsp;code for initialization of local matrix&amp;nbsp;should be inserted before the call of pdgesv:&amp;nbsp; ( I will reedit the above of the code)&lt;/P&gt;

&lt;P&gt;for(i=0;i&amp;lt;locR;++i) for(j=0;j&amp;lt;locC;++j) {&lt;/P&gt;

&lt;P style="margin-left: 36pt;"&gt;&amp;nbsp; int gi = i%block + block*myrow + (i/block)*block*nprow;&lt;/P&gt;

&lt;P style="margin-left: 36pt;"&gt;&amp;nbsp; int gj = j%block + block*mycol + (j/block)*block*npcol;&lt;/P&gt;

&lt;P style="margin-left: 36pt;"&gt;&amp;nbsp; local_matrix[i + locR*j] = A[gi*matrix_size + gj]; // note: col-major &amp;lt;- row-major&lt;/P&gt;

&lt;P style="margin-left: 36pt;"&gt;&amp;nbsp; local_know_vector&lt;I&gt; = B[gi];&lt;/I&gt;&lt;/P&gt;

&lt;P style="margin-left: 36pt;"&gt;}&lt;/P&gt;

&lt;P&gt;&amp;nbsp;&lt;/P&gt;

&lt;P&gt;The solution can be gathered to some rank, or it can be just printed:&lt;/P&gt;

&lt;P&gt;&amp;nbsp;&lt;/P&gt;

&lt;P style="margin-left: 36pt;"&gt;for (i = 0; i &amp;lt; locR; i++)&lt;/P&gt;

&lt;P style="margin-left: 36pt;"&gt;{&lt;/P&gt;

&lt;P style="margin-left: 36pt;"&gt;&amp;nbsp; int gi = i%block + block*myrow + (i/block)*block*nprow;&lt;/P&gt;

&lt;P style="margin-left: 36pt;"&gt;&amp;nbsp; if (mycol == 0) printf("res[ %i ]=%lg\n",gi,local_know_vector&lt;I&gt;);&lt;/I&gt;&lt;/P&gt;

&lt;P style="margin-left: 36pt;"&gt;}&lt;/P&gt;

&lt;P&gt;&amp;nbsp;&lt;/P&gt;

&lt;P&gt;&amp;nbsp;&lt;/P&gt;

&lt;P&gt;Here are a few runs:&lt;/P&gt;

&lt;P&gt;&amp;nbsp;&lt;/P&gt;

&lt;P&gt;$ mpirun -np 1 --prepend-rank ./a.out | sort -k2&lt;/P&gt;

&lt;P&gt;[0] res[ 0 ]=0&lt;/P&gt;

&lt;P&gt;[0] res[ 1 ]=-0.166667&lt;/P&gt;

&lt;P&gt;[0] res[ 2 ]=0.5&lt;/P&gt;

&lt;P&gt;[0] res[ 3 ]=0&lt;/P&gt;

&lt;P&gt;[0] res[ 4 ]=0&lt;/P&gt;

&lt;P&gt;[0] res[ 5 ]=0&lt;/P&gt;

&lt;P&gt;[0] res[ 6 ]=0&lt;/P&gt;

&lt;P&gt;[0] res[ 7 ]=0&lt;/P&gt;

&lt;P&gt;[0] res[ 8 ]=0&lt;/P&gt;

&lt;P&gt;&amp;nbsp;&lt;/P&gt;

&lt;P&gt;&amp;nbsp;&lt;/P&gt;

&lt;P&gt;$ mpirun -np 4 --prepend-rank ./a.out | sort -k2&lt;/P&gt;

&lt;P&gt;[0] res[ 0 ]=0&lt;/P&gt;

&lt;P&gt;[0] res[ 1 ]=-0.166667&lt;/P&gt;

&lt;P&gt;[2] res[ 2 ]=0.5&lt;/P&gt;

&lt;P&gt;[2] res[ 3 ]=0&lt;/P&gt;

&lt;P&gt;[0] res[ 4 ]=0&lt;/P&gt;

&lt;P&gt;[0] res[ 5 ]=0&lt;/P&gt;

&lt;P&gt;[2] res[ 6 ]=0&lt;/P&gt;

&lt;P&gt;[2] res[ 7 ]=0&lt;/P&gt;

&lt;P&gt;[0] res[ 8 ]=0&lt;/P&gt;

&lt;P&gt;&amp;nbsp;&lt;/P&gt;

&lt;P&gt;Thanks&lt;/P&gt;

&lt;P&gt;Ying&lt;/P&gt;</description>
      <pubDate>Thu, 25 Feb 2016 06:59:50 GMT</pubDate>
      <guid>https://community.intel.com/t5/Intel-oneAPI-Math-Kernel-Library/Scalapack-Please-Help-with-using-pdgesv/m-p/1017636#M19570</guid>
      <dc:creator>Ying_H_Intel</dc:creator>
      <dc:date>2016-02-25T06:59:50Z</dc:date>
    </item>
    <item>
      <title>Thank you, Dima and Ying, it</title>
      <link>https://community.intel.com/t5/Intel-oneAPI-Math-Kernel-Library/Scalapack-Please-Help-with-using-pdgesv/m-p/1017637#M19571</link>
      <description>&lt;P&gt;Thank you,&amp;nbsp;&lt;SPAN style="font-size: 12px; line-height: 18px;"&gt;Dima and Ying, it works very well :-)&lt;/SPAN&gt;&lt;/P&gt;</description>
      <pubDate>Thu, 17 Mar 2016 02:41:21 GMT</pubDate>
      <guid>https://community.intel.com/t5/Intel-oneAPI-Math-Kernel-Library/Scalapack-Please-Help-with-using-pdgesv/m-p/1017637#M19571</guid>
      <dc:creator>Yang_Y_2</dc:creator>
      <dc:date>2016-03-17T02:41:21Z</dc:date>
    </item>
  </channel>
</rss>

