<?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 Errors using mkl_ddiasv in Intel® oneAPI Math Kernel Library</title>
    <link>https://community.intel.com/t5/Intel-oneAPI-Math-Kernel-Library/Errors-using-mkl-ddiasv/m-p/832542#M5763</link>
    <description>&lt;P&gt;Hi Chubbz,&lt;BR /&gt;&lt;BR /&gt;As I see, you handled the input parameters and matrixstorage formatproperly. The key problem is that the mkl_ddiasv and mkl_dcsrsvis for triangular sparse matrix.while thematrix C from&lt;A href="http://software.intel.com/sites/products/documentation/hpc/mkl/mklman/index.htm"&gt;http://software.intel.com/sites/products/documentation/hpc/mkl/mklman/index.htm&lt;/A&gt;is not a triangular matrx. &lt;BR /&gt;&lt;BR /&gt;See the mkl manual: &lt;/P&gt;&lt;P&gt;The mkl_?csrsv routine solves a system of linear equations with matrix-vector operations for a sparse matrix in the CSR format: &lt;CODE class="code"&gt;&lt;VAR&gt;y&lt;/VAR&gt; := &lt;VAR&gt;alpha&lt;/VAR&gt;*inv(&lt;VAR&gt;A&lt;/VAR&gt;)*&lt;VAR&gt;x&lt;/VAR&gt;&lt;/CODE&gt;&lt;/P&gt;&lt;P&gt;or &lt;CODE class="code"&gt;&lt;VAR&gt;y&lt;/VAR&gt; := &lt;VAR&gt;alpha&lt;/VAR&gt;*inv(&lt;VAR&gt;A&lt;/VAR&gt;')*&lt;VAR&gt;x&lt;/VAR&gt;,&lt;/CODE&gt;&lt;/P&gt;&lt;P&gt;where: &lt;/P&gt;&lt;P&gt;&lt;VAR&gt;alpha&lt;/VAR&gt; is scalar, &lt;VAR&gt;x&lt;/VAR&gt; and &lt;VAR&gt;y&lt;/VAR&gt; are vectors,&lt;STRONG&gt; &lt;VAR&gt;A&lt;/VAR&gt; is a sparse upper or lower triangular matrix&lt;/STRONG&gt; with unit or non-unit main diagonal, &lt;VAR&gt;A'&lt;/VAR&gt; is the transpose of &lt;VAR&gt;A&lt;/VAR&gt;.&lt;BR /&gt;&lt;BR /&gt;So the output arealways not correct. You may try lapack's function orSparse Solver Routines like pardiso/dss to solve the sparse linear system of equations.&lt;BR /&gt;&lt;BR /&gt;For the function mkl_ddiasv and mkl_dcsrsvthemselves, you may testthe mkl example codes likecspblas_dcsr.c,which be default are in in &lt;MKL home=""&gt;&lt;/MKL&gt;&lt;BR /&gt;Best Regards,&lt;BR /&gt;Ying H.&lt;/P&gt;</description>
    <pubDate>Fri, 20 Jan 2012 05:38:20 GMT</pubDate>
    <dc:creator>Ying_H_Intel</dc:creator>
    <dc:date>2012-01-20T05:38:20Z</dc:date>
    <item>
      <title>Errors using mkl_ddiasv</title>
      <link>https://community.intel.com/t5/Intel-oneAPI-Math-Kernel-Library/Errors-using-mkl-ddiasv/m-p/832540#M5761</link>
      <description>Ive been running into issues while trying to use the Diagonal matrix solver routine, mkl_ddiasv. My results vary wildly from what I should be getting, when compared to the results from matlab. The only possible issue is that my matrix is stored in row-major order, but transposing the matrix should take care of that. I've also tried converting my matrix to column-major order and it still didnt work. My calling code is below:&lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;char transa = 'C';&lt;BR /&gt; int m = 100; //the size of the main diagonal - 100&lt;BR /&gt; double alpha = 1.0;&lt;BR /&gt; char matdescr[] = { 'D', 'U', 'N', 'C' };&lt;BR /&gt; //val is created above&lt;BR /&gt; int lval = m; //100&lt;BR /&gt; int distance[] = {-10, -1, 0, 1, 10};&lt;BR /&gt; int ndiag = 5; //5&lt;BR /&gt; y.resize(m);&lt;BR /&gt; &lt;BR /&gt; mkl_ddiasv(&amp;amp;transa, &amp;amp;m, α, matdescr, &amp;amp;val[0], &amp;amp;lval, distance, &amp;amp;ndiag, &amp;amp;B.data[0], &amp;amp;y[0]);&lt;BR /&gt;&lt;BR /&gt;</description>
      <pubDate>Wed, 11 Jan 2012 15:57:38 GMT</pubDate>
      <guid>https://community.intel.com/t5/Intel-oneAPI-Math-Kernel-Library/Errors-using-mkl-ddiasv/m-p/832540#M5761</guid>
      <dc:creator>chubbz</dc:creator>
      <dc:date>2012-01-11T15:57:38Z</dc:date>
    </item>
    <item>
      <title>Errors using mkl_ddiasv</title>
      <link>https://community.intel.com/t5/Intel-oneAPI-Math-Kernel-Library/Errors-using-mkl-ddiasv/m-p/832541#M5762</link>
      <description>&lt;DIV id="_mcePaste"&gt;Alright, I scaled down to a smaller matrix to test out my implementation of the library,I've tried converting my matrix to CSR format, in order to verify I was using the diagonal format correctly. The matrix appeared to be parsing properly. After confirming this, I then used the dcsrsv routine to see whether it was just an error with ddiasv, but I'm still getting the wrong numbers.&lt;/DIV&gt;&lt;DIV id="_mcePaste"&gt;&lt;/DIV&gt;&lt;BR /&gt;&lt;DIV id="_mcePaste"&gt;According to MATLAB, the resulting matrix should be:&lt;/DIV&gt;&lt;DIV id="_mcePaste"&gt;&lt;DIV id="_mcePaste"&gt; 0.322399527186761&lt;/DIV&gt;&lt;DIV id="_mcePaste"&gt; 0.528959810874704&lt;/DIV&gt;&lt;DIV id="_mcePaste"&gt; -0.402186761229315&lt;/DIV&gt;&lt;DIV id="_mcePaste"&gt; 0.870567375886525&lt;/DIV&gt;&lt;DIV id="_mcePaste"&gt; -0.153664302600473&lt;/DIV&gt;&lt;DIV id="_mcePaste"&gt;&lt;/DIV&gt;&lt;BR /&gt;&lt;DIV id="_mcePaste"&gt;However the various MKL routines are outuptting:&lt;/DIV&gt;&lt;DIV id="_mcePaste"&gt;&lt;SPAN style="white-space: pre;"&gt;		&lt;/SPAN&gt;[0]&lt;SPAN style="white-space: pre;"&gt;	&lt;/SPAN&gt;1.0000000000000000&lt;SPAN style="white-space: pre;"&gt;	&lt;/SPAN&gt;double&lt;/DIV&gt;&lt;DIV id="_mcePaste"&gt;&lt;DIV id="_mcePaste"&gt;&lt;SPAN style="white-space: pre;"&gt;		&lt;/SPAN&gt;[1]&lt;SPAN style="white-space: pre;"&gt;	&lt;/SPAN&gt;0.40000000000000002&lt;SPAN style="white-space: pre;"&gt;	&lt;/SPAN&gt;double&lt;/DIV&gt;&lt;DIV id="_mcePaste"&gt;&lt;SPAN style="white-space: pre;"&gt;		&lt;/SPAN&gt;[2]&lt;SPAN style="white-space: pre;"&gt;	&lt;/SPAN&gt;0.75000000000000000&lt;SPAN style="white-space: pre;"&gt;	&lt;/SPAN&gt;double&lt;/DIV&gt;&lt;DIV id="_mcePaste"&gt;&lt;SPAN style="white-space: pre;"&gt;		&lt;/SPAN&gt;[3]&lt;SPAN style="white-space: pre;"&gt;	&lt;/SPAN&gt;0.57142857142857140&lt;SPAN style="white-space: pre;"&gt;	&lt;/SPAN&gt;double&lt;/DIV&gt;&lt;DIV id="_mcePaste"&gt;&lt;SPAN style="white-space: pre;"&gt;		&lt;/SPAN&gt;[4]&lt;SPAN style="white-space: pre;"&gt;	&lt;/SPAN&gt;-1.0000000000000000&lt;SPAN style="white-space: pre;"&gt;	&lt;/SPAN&gt;double&lt;/DIV&gt;&lt;DIV id="_mcePaste"&gt;&lt;/DIV&gt;&lt;BR /&gt;&lt;DIV id="_mcePaste"&gt;For my test matrix, I'm using the matrix C from&lt;A href="http://software.intel.com/sites/products/documentation/hpc/mkl/mklman/index.htm"&gt;http://software.intel.com/sites/products/documentation/hpc/mkl/mklman/index.htm&lt;/A&gt;&lt;/DIV&gt;&lt;DIV id="_mcePaste"&gt;and my RHS = [1,2,3,4,5]&lt;/DIV&gt;&lt;DIV&gt;&lt;/DIV&gt;&lt;/DIV&gt;&lt;/DIV&gt;&lt;DIV id="_mcePaste"&gt;&lt;/DIV&gt;&lt;BR /&gt;&lt;DIV id="_mcePaste"&gt;Code I used for the above tests:&lt;/DIV&gt;&lt;DIV id="_mcePaste"&gt;&lt;/DIV&gt;&lt;DIV id="_mcePaste"&gt;	double values[] = { 666,666,666,4,8,&lt;/DIV&gt;&lt;DIV id="_mcePaste"&gt;						666,-2,0,2,0,&lt;/DIV&gt;&lt;DIV id="_mcePaste"&gt;						1,5,4,7,-5,&lt;/DIV&gt;&lt;DIV id="_mcePaste"&gt;						-1,0,6,0,666,&lt;/DIV&gt;&lt;DIV id="_mcePaste"&gt;						-3,0,4,666,666};&lt;/DIV&gt;&lt;DIV id="_mcePaste"&gt;						&lt;/DIV&gt;&lt;DIV id="_mcePaste"&gt;	char transa = 'N';&lt;/DIV&gt;&lt;DIV id="_mcePaste"&gt;	int m = 5;&lt;/DIV&gt;&lt;DIV id="_mcePaste"&gt;	double alpha = 1.0;&lt;/DIV&gt;&lt;DIV id="_mcePaste"&gt;	char matdescr[] = { 'D', 'U', 'N', 'C' };&lt;/DIV&gt;&lt;DIV id="_mcePaste"&gt;	int lval = m; //100&lt;/DIV&gt;&lt;DIV id="_mcePaste"&gt;	int distance[] = {-3,-1,0,1,2};&lt;/DIV&gt;&lt;DIV id="_mcePaste"&gt;	int ndiag = 5; //5&lt;/DIV&gt;&lt;DIV id="_mcePaste"&gt;	double rhs[] = { 1,2,3,4,5 };&lt;/DIV&gt;&lt;DIV id="_mcePaste"&gt;	std::vector&lt;DOUBLE&gt; y (5);&lt;/DOUBLE&gt;&lt;/DIV&gt;&lt;DIV id="_mcePaste"&gt;	&lt;/DIV&gt;&lt;DIV id="_mcePaste"&gt;	int job[] = {1,0,0,0,0,0};&lt;/DIV&gt;&lt;DIV id="_mcePaste"&gt;	std::vector&lt;DOUBLE&gt; ascr (13);&lt;/DOUBLE&gt;&lt;/DIV&gt;&lt;DIV id="_mcePaste"&gt;	std::vector&lt;INT&gt; ja (13);&lt;/INT&gt;&lt;/DIV&gt;&lt;DIV id="_mcePaste"&gt;	std::vector&lt;INT&gt; ia (6);&lt;/INT&gt;&lt;/DIV&gt;&lt;DIV id="_mcePaste"&gt;&lt;/DIV&gt;&lt;DIV id="_mcePaste"&gt;&lt;/DIV&gt;&lt;DIV id="_mcePaste"&gt;&lt;/DIV&gt;&lt;DIV id="_mcePaste"&gt;&lt;/DIV&gt;&lt;DIV id="_mcePaste"&gt;	//mkl_ddiasv(&amp;amp;transa, &amp;amp;m, α, matdescr, values, &amp;amp;lval, distance, &amp;amp;ndiag, rhs, &amp;amp;y[0]);&lt;/DIV&gt;&lt;DIV id="_mcePaste"&gt;	mkl_dcsrdia(job, &amp;amp;m, &amp;amp;ascr[0], &amp;amp;ja[0], &amp;amp;ia[0], &amp;amp;values[0], &amp;amp;m ,distance, &amp;amp;m, NULL, NULL,NULL, NULL);&lt;/DIV&gt;&lt;DIV id="_mcePaste"&gt;	mkl_dcsrsv(&amp;amp;transa, &amp;amp;m, α, matdescr, &amp;amp;ascr[0], &amp;amp;ja[0], &amp;amp;ia[0], &amp;amp;ia[1], rhs, &amp;amp;y[0]);&lt;/DIV&gt;</description>
      <pubDate>Fri, 13 Jan 2012 07:26:18 GMT</pubDate>
      <guid>https://community.intel.com/t5/Intel-oneAPI-Math-Kernel-Library/Errors-using-mkl-ddiasv/m-p/832541#M5762</guid>
      <dc:creator>chubbz</dc:creator>
      <dc:date>2012-01-13T07:26:18Z</dc:date>
    </item>
    <item>
      <title>Errors using mkl_ddiasv</title>
      <link>https://community.intel.com/t5/Intel-oneAPI-Math-Kernel-Library/Errors-using-mkl-ddiasv/m-p/832542#M5763</link>
      <description>&lt;P&gt;Hi Chubbz,&lt;BR /&gt;&lt;BR /&gt;As I see, you handled the input parameters and matrixstorage formatproperly. The key problem is that the mkl_ddiasv and mkl_dcsrsvis for triangular sparse matrix.while thematrix C from&lt;A href="http://software.intel.com/sites/products/documentation/hpc/mkl/mklman/index.htm"&gt;http://software.intel.com/sites/products/documentation/hpc/mkl/mklman/index.htm&lt;/A&gt;is not a triangular matrx. &lt;BR /&gt;&lt;BR /&gt;See the mkl manual: &lt;/P&gt;&lt;P&gt;The mkl_?csrsv routine solves a system of linear equations with matrix-vector operations for a sparse matrix in the CSR format: &lt;CODE class="code"&gt;&lt;VAR&gt;y&lt;/VAR&gt; := &lt;VAR&gt;alpha&lt;/VAR&gt;*inv(&lt;VAR&gt;A&lt;/VAR&gt;)*&lt;VAR&gt;x&lt;/VAR&gt;&lt;/CODE&gt;&lt;/P&gt;&lt;P&gt;or &lt;CODE class="code"&gt;&lt;VAR&gt;y&lt;/VAR&gt; := &lt;VAR&gt;alpha&lt;/VAR&gt;*inv(&lt;VAR&gt;A&lt;/VAR&gt;')*&lt;VAR&gt;x&lt;/VAR&gt;,&lt;/CODE&gt;&lt;/P&gt;&lt;P&gt;where: &lt;/P&gt;&lt;P&gt;&lt;VAR&gt;alpha&lt;/VAR&gt; is scalar, &lt;VAR&gt;x&lt;/VAR&gt; and &lt;VAR&gt;y&lt;/VAR&gt; are vectors,&lt;STRONG&gt; &lt;VAR&gt;A&lt;/VAR&gt; is a sparse upper or lower triangular matrix&lt;/STRONG&gt; with unit or non-unit main diagonal, &lt;VAR&gt;A'&lt;/VAR&gt; is the transpose of &lt;VAR&gt;A&lt;/VAR&gt;.&lt;BR /&gt;&lt;BR /&gt;So the output arealways not correct. You may try lapack's function orSparse Solver Routines like pardiso/dss to solve the sparse linear system of equations.&lt;BR /&gt;&lt;BR /&gt;For the function mkl_ddiasv and mkl_dcsrsvthemselves, you may testthe mkl example codes likecspblas_dcsr.c,which be default are in in &lt;MKL home=""&gt;&lt;/MKL&gt;&lt;BR /&gt;Best Regards,&lt;BR /&gt;Ying H.&lt;/P&gt;</description>
      <pubDate>Fri, 20 Jan 2012 05:38:20 GMT</pubDate>
      <guid>https://community.intel.com/t5/Intel-oneAPI-Math-Kernel-Library/Errors-using-mkl-ddiasv/m-p/832542#M5763</guid>
      <dc:creator>Ying_H_Intel</dc:creator>
      <dc:date>2012-01-20T05:38:20Z</dc:date>
    </item>
  </channel>
</rss>

