<?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 MKL help with mkl_sparse_s_create_coo and MKL_SPARSE_CONVERT_CSR in Intel® oneAPI Math Kernel Library</title>
    <link>https://community.intel.com/t5/Intel-oneAPI-Math-Kernel-Library/MKL-help-with-mkl-sparse-s-create-coo-and-MKL-SPARSE-CONVERT-CSR/m-p/1081170#M22803</link>
    <description>&lt;P&gt;Hello,&lt;/P&gt;

&lt;P&gt;I am trying to use mkl_spblas and I am having some strange issues. Firstly, here is the code I am trying to compile using&amp;nbsp;&lt;SPAN class="s1"&gt;mkl-16.2.181 and&amp;nbsp;impi-intel-5.1.3-16.0.2.&lt;/SPAN&gt;&lt;/P&gt;

&lt;P&gt;&amp;nbsp;&lt;/P&gt;

&lt;P class="p5"&gt;&lt;SPAN class="s1"&gt;MODULE&lt;/SPAN&gt;&lt;SPAN class="s2"&gt; &lt;/SPAN&gt;&lt;SPAN class="s4"&gt;test&lt;/SPAN&gt;&lt;/P&gt;

&lt;P class="p5"&gt;&lt;SPAN style="font-size: 1em; line-height: 1.5;"&gt;contains&lt;/SPAN&gt;&lt;/P&gt;

&lt;P class="p5"&gt;&lt;SPAN class="s1"&gt;subroutine&lt;/SPAN&gt;&lt;SPAN class="s2"&gt; &lt;/SPAN&gt;&lt;SPAN class="s4"&gt;tester_sub&lt;/SPAN&gt;&lt;SPAN class="s2"&gt;(l,N,Pf)&lt;/SPAN&gt;&lt;/P&gt;

&lt;P class="p6"&gt;&lt;SPAN class="s5"&gt;use&lt;/SPAN&gt;&lt;SPAN class="s2"&gt; &lt;/SPAN&gt;&lt;SPAN class="s1"&gt;MKL_SPBLAS&lt;/SPAN&gt;&lt;/P&gt;

&lt;P class="p7"&gt;&lt;SPAN class="s5"&gt;include&lt;/SPAN&gt;&lt;SPAN class="s2"&gt; &lt;/SPAN&gt;&lt;SPAN class="s1"&gt;'mkl_spblas.fi'&lt;/SPAN&gt;&lt;/P&gt;

&lt;P class="p7"&gt;&lt;SPAN class="s5"&gt;include&lt;/SPAN&gt;&lt;SPAN class="s2"&gt; &lt;/SPAN&gt;&lt;SPAN class="s1"&gt;'mkl_sparse_handle.fi'&lt;/SPAN&gt;&lt;/P&gt;

&lt;P class="p8"&gt;&lt;SPAN class="s1"&gt;!declaring variables &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; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;

&lt;P class="p1"&gt;&lt;SPAN class="s6"&gt;integer&lt;/SPAN&gt;&lt;SPAN class="s1"&gt;, &lt;/SPAN&gt;&lt;SPAN class="s5"&gt;intent&lt;/SPAN&gt;&lt;SPAN class="s1"&gt;(in) ::&lt;/SPAN&gt;&lt;SPAN class="s7"&gt; l,N&lt;/SPAN&gt;&lt;/P&gt;

&lt;P class="p9"&gt;&lt;SPAN class="s6"&gt;integer&lt;/SPAN&gt;&lt;SPAN class="s2"&gt;, &lt;/SPAN&gt;&lt;SPAN class="s5"&gt;DIMENSION&lt;/SPAN&gt;&lt;SPAN class="s2"&gt;(1) ::&lt;/SPAN&gt;&lt;SPAN class="s1"&gt; seed = (/300/)&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;

&lt;P class="p10"&gt;&lt;SPAN class="s1"&gt;real&lt;/SPAN&gt;&lt;SPAN class="s2"&gt; ::&lt;/SPAN&gt;&lt;SPAN class="s7"&gt; num&lt;/SPAN&gt;&lt;SPAN style="font-size: 1em; line-height: 1.5;"&gt;&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; &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; &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; &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; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;

&lt;P class="p9"&gt;&lt;SPAN class="s6"&gt;real&lt;/SPAN&gt;&lt;SPAN class="s2"&gt;, &lt;/SPAN&gt;&lt;SPAN class="s5"&gt;dimension&lt;/SPAN&gt;&lt;SPAN class="s2"&gt;(4) ::&lt;/SPAN&gt;&lt;SPAN class="s1"&gt; sum1 &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; &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; &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;&lt;/SPAN&gt;&lt;/P&gt;

&lt;P class="p5"&gt;&lt;SPAN class="s6"&gt;real&lt;/SPAN&gt;&lt;SPAN class="s2"&gt;, &lt;/SPAN&gt;&lt;SPAN class="s1"&gt;dimension&lt;/SPAN&gt;&lt;SPAN class="s2"&gt;(2) ::&lt;/SPAN&gt;&lt;SPAN class="s7"&gt; sum2&lt;/SPAN&gt;&lt;/P&gt;

&lt;P class="p9"&gt;&lt;SPAN class="s6"&gt;real&lt;/SPAN&gt;&lt;SPAN class="s2"&gt; ::&lt;/SPAN&gt;&lt;SPAN class="s1"&gt; hf,hc,U,Z&lt;/SPAN&gt;&lt;/P&gt;

&lt;P class="p1"&gt;&lt;SPAN class="s6"&gt;real&lt;/SPAN&gt;&lt;SPAN class="s1"&gt;, &lt;/SPAN&gt;&lt;SPAN class="s5"&gt;intent&lt;/SPAN&gt;&lt;SPAN class="s1"&gt;(out) ::&lt;/SPAN&gt;&lt;SPAN class="s7"&gt; pf&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;

&lt;P class="p9"&gt;&lt;SPAN class="s6"&gt;integer&lt;/SPAN&gt;&lt;SPAN class="s2"&gt; ::&lt;/SPAN&gt;&lt;SPAN class="s1"&gt; i,nf,nc,N1&lt;/SPAN&gt;&lt;/P&gt;

&lt;P class="p9"&gt;&lt;SPAN class="s6"&gt;real&lt;/SPAN&gt;&lt;SPAN class="s2"&gt;, &lt;/SPAN&gt;&lt;SPAN class="s5"&gt;allocatable&lt;/SPAN&gt;&lt;SPAN class="s2"&gt;, &lt;/SPAN&gt;&lt;SPAN class="s5"&gt;dimension&lt;/SPAN&gt;&lt;SPAN class="s2"&gt;(:) ::&lt;/SPAN&gt;&lt;SPAN class="s1"&gt; cf_m,cfd,cf_p,cf,cc_m,ccd,cc_p,cc,RHS,ones_f,ones_c,uf,uc&lt;/SPAN&gt;&lt;/P&gt;

&lt;P class="p9"&gt;&lt;SPAN class="s6"&gt;integer&lt;/SPAN&gt;&lt;SPAN class="s2"&gt;, &lt;/SPAN&gt;&lt;SPAN class="s5"&gt;allocatable&lt;/SPAN&gt;&lt;SPAN class="s2"&gt;, &lt;/SPAN&gt;&lt;SPAN class="s5"&gt;dimension&lt;/SPAN&gt;&lt;SPAN class="s2"&gt;(:,:) ::&lt;/SPAN&gt;&lt;SPAN class="s1"&gt; coords_d, coords_m,coords_p&lt;/SPAN&gt;&lt;/P&gt;

&lt;P class="p9"&gt;&lt;SPAN class="s6"&gt;type (SPARSE_MATRIX_T)&lt;/SPAN&gt;&lt;SPAN class="s2"&gt; :: &lt;/SPAN&gt;&lt;SPAN class="s1"&gt;A0f,A1f,A0c,A1c,LHS,Identity_c,Identity_f,A1f_csr&lt;/SPAN&gt;&lt;/P&gt;

&lt;P class="p10"&gt;&lt;SPAN class="s1"&gt;integer&lt;/SPAN&gt;&lt;SPAN class="s2"&gt; ::&lt;/SPAN&gt;&lt;SPAN class="s7"&gt; stat&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;

&lt;P class="p5"&gt;&lt;SPAN class="s6"&gt;real&lt;/SPAN&gt;&lt;SPAN class="s2"&gt;, &lt;/SPAN&gt;&lt;SPAN class="s1"&gt;allocatable&lt;/SPAN&gt;&lt;SPAN class="s2"&gt;,&lt;/SPAN&gt;&lt;SPAN class="s1"&gt;dimension&lt;/SPAN&gt;&lt;SPAN class="s2"&gt;(:) ::&lt;/SPAN&gt;&lt;SPAN class="s7"&gt; cf_full,cc_full&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;

&lt;P class="p8"&gt;&lt;SPAN class="s6"&gt;type(MATRIX_DESCR)&lt;/SPAN&gt;&lt;SPAN class="s2"&gt; :: &lt;/SPAN&gt;&lt;SPAN class="s7"&gt;descr&lt;/SPAN&gt;&lt;SPAN class="s1"&gt;!SPARSE_MATRIX_TYPE_GENERAL &amp;nbsp; &lt;/SPAN&gt;&lt;/P&gt;

&lt;P class="p8"&gt;&lt;SPAN style="font-size: 1em; line-height: 1.5;"&gt;nf = 2**(l+1)&lt;/SPAN&gt;&lt;/P&gt;

&lt;P class="p8"&gt;&lt;SPAN class="s1"&gt;!creating a ones array for f &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; &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;&lt;/SPAN&gt;&lt;/P&gt;

&lt;P class="p1"&gt;&lt;SPAN class="s5"&gt;ALLOCATE&lt;/SPAN&gt;&lt;SPAN class="s1"&gt;(ones_f(nf-1))&lt;/SPAN&gt;&lt;/P&gt;

&lt;P class="p1"&gt;&lt;SPAN class="s1"&gt;ones_f = &lt;/SPAN&gt;&lt;SPAN class="s5"&gt;real&lt;/SPAN&gt;&lt;SPAN class="s1"&gt;(-1)&lt;/SPAN&gt;&lt;/P&gt;

&lt;P class="p1"&gt;&lt;SPAN class="s5"&gt;ALLOCATE&lt;/SPAN&gt;&lt;SPAN class="s1"&gt;(cf(nf),cf_m(nf-1),cfd(nf-1),cf_p(nf-1))&lt;/SPAN&gt;&lt;/P&gt;

&lt;P class="p1"&gt;&lt;SPAN class="s1"&gt;hf = &lt;/SPAN&gt;&lt;SPAN class="s5"&gt;real&lt;/SPAN&gt;&lt;SPAN class="s1"&gt;(1)/&lt;/SPAN&gt;&lt;SPAN class="s5"&gt;real&lt;/SPAN&gt;&lt;SPAN class="s1"&gt;(nf)&lt;/SPAN&gt;&lt;/P&gt;

&lt;P class="p1"&gt;&lt;SPAN class="s1"&gt;cf = &lt;/SPAN&gt;&lt;SPAN class="s5"&gt;real&lt;/SPAN&gt;&lt;SPAN class="s1"&gt;(1)&lt;/SPAN&gt;&lt;/P&gt;

&lt;P class="p1"&gt;&lt;SPAN class="s1"&gt;cf_m = hf**(-2)*cf(2:&lt;/SPAN&gt;&lt;SPAN class="s5"&gt;size&lt;/SPAN&gt;&lt;SPAN class="s1"&gt;(cf))&lt;/SPAN&gt;&lt;/P&gt;

&lt;P class="p1"&gt;&lt;SPAN class="s1"&gt;cfd = hf**(-2)*-cf(2:&lt;/SPAN&gt;&lt;SPAN class="s5"&gt;size&lt;/SPAN&gt;&lt;SPAN class="s1"&gt;(cf)) - hf**(-2)*cf(1:&lt;/SPAN&gt;&lt;SPAN class="s5"&gt;size&lt;/SPAN&gt;&lt;SPAN class="s1"&gt;(cf)-1)&lt;/SPAN&gt;&lt;/P&gt;

&lt;P class="p1"&gt;&lt;SPAN class="s1"&gt;cf_p = hf**(-2)*cf(1:&lt;/SPAN&gt;&lt;SPAN class="s5"&gt;size&lt;/SPAN&gt;&lt;SPAN class="s1"&gt;(cf)-1)&lt;/SPAN&gt;&lt;/P&gt;

&lt;P class="p1"&gt;&lt;SPAN class="s5"&gt;ALLOCATE&lt;/SPAN&gt;&lt;SPAN class="s1"&gt;(coords_d(nf-1,2))&lt;/SPAN&gt;&lt;/P&gt;

&lt;P class="p1"&gt;&lt;SPAN class="s5"&gt;ALLOCATE&lt;/SPAN&gt;&lt;SPAN class="s1"&gt;(coords_m(nf-1,2))&lt;/SPAN&gt;&lt;/P&gt;

&lt;P class="p1"&gt;&lt;SPAN class="s5"&gt;ALLOCATE&lt;/SPAN&gt;&lt;SPAN class="s1"&gt;(coords_p(nf-1,2))&lt;/SPAN&gt;&lt;/P&gt;

&lt;P class="p2"&gt;&lt;SPAN style="font-size: 1em; line-height: 1.5;"&gt;!creating the coordinates of the vectors &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; &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; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;

&lt;P class="p1"&gt;&lt;SPAN class="s5"&gt;do&lt;/SPAN&gt;&lt;SPAN class="s1"&gt; i = 1,nf-1&lt;/SPAN&gt;&lt;/P&gt;

&lt;P class="p1"&gt;&lt;SPAN class="s1"&gt;&amp;nbsp;&amp;nbsp; coords_d(i,:) = i&lt;/SPAN&gt;&lt;/P&gt;

&lt;P class="p8"&gt;&lt;SPAN style="font-size: 1em; line-height: 1.5;"&gt;end do&lt;/SPAN&gt;&lt;/P&gt;

&lt;P class="p8"&gt;&lt;SPAN class="s1"&gt;!don't want last row of 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; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;

&lt;P class="p8"&gt;&lt;SPAN class="s5" style="font-size: 1em; line-height: 1.5;"&gt;do&lt;/SPAN&gt;&lt;SPAN class="s1" style="font-size: 1em; line-height: 1.5;"&gt; i = 1,nf-1&lt;/SPAN&gt;&lt;/P&gt;

&lt;P class="p8"&gt;&lt;SPAN class="s2"&gt;&amp;nbsp;&amp;nbsp; coords_m(i,1) = i + 1 &amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;&lt;SPAN class="s1"&gt;!row position &amp;nbsp; &amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;

&lt;P class="p8"&gt;&lt;SPAN class="s2" style="font-size: 1em; line-height: 1.5;"&gt;&amp;nbsp; &amp;nbsp;coords_m(i,2) = i &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;&lt;SPAN class="s1" style="font-size: 1em; line-height: 1.5;"&gt;!column position &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; &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; &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; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;&lt;SPAN class="s1" style="font-size: 1em; line-height: 1.5;"&gt;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="font-size: 1em; line-height: 1.5;"&gt;end do&lt;/SPAN&gt;&lt;/P&gt;

&lt;P class="p2"&gt;&lt;SPAN style="font-size: 1em; line-height: 1.5;"&gt;!don't want last row of 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; &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; &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; &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; &amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;&lt;SPAN class="s5" style="font-size: 1em; line-height: 1.5;"&gt;do&lt;/SPAN&gt;&lt;SPAN class="s1" style="font-size: 1em; line-height: 1.5;"&gt; i = 1,nf-1&lt;/SPAN&gt;&lt;/P&gt;

&lt;P class="p2"&gt;&lt;SPAN class="s2" style="font-size: 1em; line-height: 1.5;"&gt;&amp;nbsp; &amp;nbsp;coords_p(i,1) = i &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;&lt;SPAN class="s1" style="font-size: 1em; line-height: 1.5;"&gt;!row position &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; &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; &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; &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;&lt;/SPAN&gt;&lt;SPAN class="s2" style="font-size: 1em; line-height: 1.5;"&gt;coords_p(i,2) = i + 1 &amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;&lt;SPAN class="s1" style="font-size: 1em; line-height: 1.5;"&gt;!column position &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; &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; &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; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="font-size: 1em; line-height: 1.5;"&gt;end do&lt;/SPAN&gt;&lt;/P&gt;

&lt;P class="p2"&gt;&lt;SPAN class="s5" style="font-size: 1em; line-height: 1.5;"&gt;allocate&lt;/SPAN&gt;&lt;SPAN class="s1" style="font-size: 1em; line-height: 1.5;"&gt;(cf_full(3*nf-3))&lt;/SPAN&gt;&lt;/P&gt;

&lt;P class="p8"&gt;&lt;SPAN class="s1"&gt;!holding all of the values for the sparse matrix &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;

&lt;P class="p8"&gt;&lt;SPAN style="font-size: 1em; line-height: 1.5;"&gt;cf_full = (/ cf_m,cfd,cf_p&amp;nbsp; /)&lt;/SPAN&gt;&lt;/P&gt;

&lt;P class="p1"&gt;&lt;SPAN class="s1"&gt;stat = mkl_sparse_s_create_coo(A0f,1,nf-1,nf-1,&lt;/SPAN&gt;&lt;SPAN class="s2"&gt;size&lt;/SPAN&gt;&lt;SPAN class="s1"&gt;(cf_full),(/ coords_m(1:nf-2,1),coords_d(:,1), &lt;/SPAN&gt;&lt;SPAN class="s2"&gt;&amp;amp;&lt;/SPAN&gt;&lt;/P&gt;

&lt;P class="p1"&gt;&lt;SPAN class="s1"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; coords_p(1:nf-2,1) /),(/ coords_m(1:nf-2,2),coords_d(:,2),coords_p(1:nf-2,2) /),cf_full)&lt;/SPAN&gt;&lt;/P&gt;

&lt;P class="p1"&gt;&lt;SPAN class="s2"&gt;print&lt;/SPAN&gt;&lt;SPAN class="s1"&gt; *, stat&lt;/SPAN&gt;&lt;SPAN style="font-size: 1em; line-height: 1.5;"&gt;&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; &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; &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; &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; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;

&lt;P class="p4"&gt;&lt;SPAN class="s2"&gt;print&lt;/SPAN&gt;&lt;SPAN class="s3"&gt; *, &lt;/SPAN&gt;&lt;SPAN class="s1"&gt;'here 0'&lt;/SPAN&gt;&lt;/P&gt;

&lt;P class="p1"&gt;&lt;SPAN class="s1"&gt;stat = MKL_SPARSE_CONVERT_CSR(A0f,SPARSE_OPERATION_NON_TRANSPOSE,A0f)&lt;/SPAN&gt;&lt;/P&gt;

&lt;P class="p4"&gt;&lt;SPAN class="s2"&gt;print&lt;/SPAN&gt;&lt;SPAN class="s3"&gt; *, &lt;/SPAN&gt;&lt;SPAN class="s1"&gt;'here 1'&lt;/SPAN&gt;&lt;/P&gt;

&lt;P class="p1"&gt;&lt;SPAN class="s1"&gt;end subroutine&lt;/SPAN&gt;&lt;SPAN class="s2"&gt; &lt;/SPAN&gt;&lt;SPAN class="s3"&gt;tester_sub&lt;/SPAN&gt;&lt;/P&gt;

&lt;P class="p1"&gt;&lt;SPAN class="s1"&gt;end MODULE&lt;/SPAN&gt;&lt;SPAN class="s2"&gt; &lt;/SPAN&gt;&lt;SPAN class="s3"&gt;test&lt;/SPAN&gt;&lt;/P&gt;

&lt;P class="p1"&gt;&amp;nbsp;&lt;/P&gt;

&lt;P class="p1"&gt;I can compile the code so I believe that all of the libraries are linked correctly.&lt;/P&gt;

&lt;P class="p1"&gt;When I do print *, stat &amp;nbsp;after &lt;SPAN style="font-size: 13.008px; line-height: 19.512px;"&gt;mkl_sparse_s_create_coo&amp;nbsp;&lt;/SPAN&gt;I get the value 3. I am unsure of what this value actually means. From&amp;nbsp;https://software.intel.com/en-us/node/590112 it seems like&amp;nbsp;&lt;SPAN style="font-size: 13.008px; line-height: 19.512px;"&gt;mkl_sparse_s_create_coo is supposed to return a Character, but I can only use integer type for stat.&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;

&lt;P class="p1"&gt;&lt;SPAN style="line-height: 19.512px;"&gt;Once I try to use&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="font-size: 13.008px; line-height: 19.512px;"&gt;&amp;nbsp;MKL_SPARSE_CONVERT_CSR the program either has a segmentation fault or it hangs. I believe this is because A0f is not created correctly.&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;

&lt;P class="p1"&gt;&lt;SPAN style="font-size: 13.008px; line-height: 19.512px;"&gt;So, I guess my question is&lt;/SPAN&gt;&lt;/P&gt;

&lt;P class="p1"&gt;&lt;SPAN style="font-size: 13.008px; line-height: 19.512px;"&gt;1) What does stat = 3 mean?&lt;/SPAN&gt;&lt;/P&gt;

&lt;P class="p1"&gt;&lt;SPAN style="font-size: 13.008px; line-height: 19.512px;"&gt;2) If I am creating the sparse matrix A0f incorrectly, how do I create it correctly?&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;

&lt;P class="p1"&gt;&amp;nbsp;&lt;/P&gt;

&lt;P class="p1"&gt;&amp;nbsp;&lt;/P&gt;</description>
    <pubDate>Tue, 02 Aug 2016 21:34:25 GMT</pubDate>
    <dc:creator>Brandon_R_</dc:creator>
    <dc:date>2016-08-02T21:34:25Z</dc:date>
    <item>
      <title>MKL help with mkl_sparse_s_create_coo and MKL_SPARSE_CONVERT_CSR</title>
      <link>https://community.intel.com/t5/Intel-oneAPI-Math-Kernel-Library/MKL-help-with-mkl-sparse-s-create-coo-and-MKL-SPARSE-CONVERT-CSR/m-p/1081170#M22803</link>
      <description>&lt;P&gt;Hello,&lt;/P&gt;

&lt;P&gt;I am trying to use mkl_spblas and I am having some strange issues. Firstly, here is the code I am trying to compile using&amp;nbsp;&lt;SPAN class="s1"&gt;mkl-16.2.181 and&amp;nbsp;impi-intel-5.1.3-16.0.2.&lt;/SPAN&gt;&lt;/P&gt;

&lt;P&gt;&amp;nbsp;&lt;/P&gt;

&lt;P class="p5"&gt;&lt;SPAN class="s1"&gt;MODULE&lt;/SPAN&gt;&lt;SPAN class="s2"&gt; &lt;/SPAN&gt;&lt;SPAN class="s4"&gt;test&lt;/SPAN&gt;&lt;/P&gt;

&lt;P class="p5"&gt;&lt;SPAN style="font-size: 1em; line-height: 1.5;"&gt;contains&lt;/SPAN&gt;&lt;/P&gt;

&lt;P class="p5"&gt;&lt;SPAN class="s1"&gt;subroutine&lt;/SPAN&gt;&lt;SPAN class="s2"&gt; &lt;/SPAN&gt;&lt;SPAN class="s4"&gt;tester_sub&lt;/SPAN&gt;&lt;SPAN class="s2"&gt;(l,N,Pf)&lt;/SPAN&gt;&lt;/P&gt;

&lt;P class="p6"&gt;&lt;SPAN class="s5"&gt;use&lt;/SPAN&gt;&lt;SPAN class="s2"&gt; &lt;/SPAN&gt;&lt;SPAN class="s1"&gt;MKL_SPBLAS&lt;/SPAN&gt;&lt;/P&gt;

&lt;P class="p7"&gt;&lt;SPAN class="s5"&gt;include&lt;/SPAN&gt;&lt;SPAN class="s2"&gt; &lt;/SPAN&gt;&lt;SPAN class="s1"&gt;'mkl_spblas.fi'&lt;/SPAN&gt;&lt;/P&gt;

&lt;P class="p7"&gt;&lt;SPAN class="s5"&gt;include&lt;/SPAN&gt;&lt;SPAN class="s2"&gt; &lt;/SPAN&gt;&lt;SPAN class="s1"&gt;'mkl_sparse_handle.fi'&lt;/SPAN&gt;&lt;/P&gt;

&lt;P class="p8"&gt;&lt;SPAN class="s1"&gt;!declaring variables &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; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;

&lt;P class="p1"&gt;&lt;SPAN class="s6"&gt;integer&lt;/SPAN&gt;&lt;SPAN class="s1"&gt;, &lt;/SPAN&gt;&lt;SPAN class="s5"&gt;intent&lt;/SPAN&gt;&lt;SPAN class="s1"&gt;(in) ::&lt;/SPAN&gt;&lt;SPAN class="s7"&gt; l,N&lt;/SPAN&gt;&lt;/P&gt;

&lt;P class="p9"&gt;&lt;SPAN class="s6"&gt;integer&lt;/SPAN&gt;&lt;SPAN class="s2"&gt;, &lt;/SPAN&gt;&lt;SPAN class="s5"&gt;DIMENSION&lt;/SPAN&gt;&lt;SPAN class="s2"&gt;(1) ::&lt;/SPAN&gt;&lt;SPAN class="s1"&gt; seed = (/300/)&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;

&lt;P class="p10"&gt;&lt;SPAN class="s1"&gt;real&lt;/SPAN&gt;&lt;SPAN class="s2"&gt; ::&lt;/SPAN&gt;&lt;SPAN class="s7"&gt; num&lt;/SPAN&gt;&lt;SPAN style="font-size: 1em; line-height: 1.5;"&gt;&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; &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; &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; &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; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;

&lt;P class="p9"&gt;&lt;SPAN class="s6"&gt;real&lt;/SPAN&gt;&lt;SPAN class="s2"&gt;, &lt;/SPAN&gt;&lt;SPAN class="s5"&gt;dimension&lt;/SPAN&gt;&lt;SPAN class="s2"&gt;(4) ::&lt;/SPAN&gt;&lt;SPAN class="s1"&gt; sum1 &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; &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; &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;&lt;/SPAN&gt;&lt;/P&gt;

&lt;P class="p5"&gt;&lt;SPAN class="s6"&gt;real&lt;/SPAN&gt;&lt;SPAN class="s2"&gt;, &lt;/SPAN&gt;&lt;SPAN class="s1"&gt;dimension&lt;/SPAN&gt;&lt;SPAN class="s2"&gt;(2) ::&lt;/SPAN&gt;&lt;SPAN class="s7"&gt; sum2&lt;/SPAN&gt;&lt;/P&gt;

&lt;P class="p9"&gt;&lt;SPAN class="s6"&gt;real&lt;/SPAN&gt;&lt;SPAN class="s2"&gt; ::&lt;/SPAN&gt;&lt;SPAN class="s1"&gt; hf,hc,U,Z&lt;/SPAN&gt;&lt;/P&gt;

&lt;P class="p1"&gt;&lt;SPAN class="s6"&gt;real&lt;/SPAN&gt;&lt;SPAN class="s1"&gt;, &lt;/SPAN&gt;&lt;SPAN class="s5"&gt;intent&lt;/SPAN&gt;&lt;SPAN class="s1"&gt;(out) ::&lt;/SPAN&gt;&lt;SPAN class="s7"&gt; pf&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;

&lt;P class="p9"&gt;&lt;SPAN class="s6"&gt;integer&lt;/SPAN&gt;&lt;SPAN class="s2"&gt; ::&lt;/SPAN&gt;&lt;SPAN class="s1"&gt; i,nf,nc,N1&lt;/SPAN&gt;&lt;/P&gt;

&lt;P class="p9"&gt;&lt;SPAN class="s6"&gt;real&lt;/SPAN&gt;&lt;SPAN class="s2"&gt;, &lt;/SPAN&gt;&lt;SPAN class="s5"&gt;allocatable&lt;/SPAN&gt;&lt;SPAN class="s2"&gt;, &lt;/SPAN&gt;&lt;SPAN class="s5"&gt;dimension&lt;/SPAN&gt;&lt;SPAN class="s2"&gt;(:) ::&lt;/SPAN&gt;&lt;SPAN class="s1"&gt; cf_m,cfd,cf_p,cf,cc_m,ccd,cc_p,cc,RHS,ones_f,ones_c,uf,uc&lt;/SPAN&gt;&lt;/P&gt;

&lt;P class="p9"&gt;&lt;SPAN class="s6"&gt;integer&lt;/SPAN&gt;&lt;SPAN class="s2"&gt;, &lt;/SPAN&gt;&lt;SPAN class="s5"&gt;allocatable&lt;/SPAN&gt;&lt;SPAN class="s2"&gt;, &lt;/SPAN&gt;&lt;SPAN class="s5"&gt;dimension&lt;/SPAN&gt;&lt;SPAN class="s2"&gt;(:,:) ::&lt;/SPAN&gt;&lt;SPAN class="s1"&gt; coords_d, coords_m,coords_p&lt;/SPAN&gt;&lt;/P&gt;

&lt;P class="p9"&gt;&lt;SPAN class="s6"&gt;type (SPARSE_MATRIX_T)&lt;/SPAN&gt;&lt;SPAN class="s2"&gt; :: &lt;/SPAN&gt;&lt;SPAN class="s1"&gt;A0f,A1f,A0c,A1c,LHS,Identity_c,Identity_f,A1f_csr&lt;/SPAN&gt;&lt;/P&gt;

&lt;P class="p10"&gt;&lt;SPAN class="s1"&gt;integer&lt;/SPAN&gt;&lt;SPAN class="s2"&gt; ::&lt;/SPAN&gt;&lt;SPAN class="s7"&gt; stat&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;

&lt;P class="p5"&gt;&lt;SPAN class="s6"&gt;real&lt;/SPAN&gt;&lt;SPAN class="s2"&gt;, &lt;/SPAN&gt;&lt;SPAN class="s1"&gt;allocatable&lt;/SPAN&gt;&lt;SPAN class="s2"&gt;,&lt;/SPAN&gt;&lt;SPAN class="s1"&gt;dimension&lt;/SPAN&gt;&lt;SPAN class="s2"&gt;(:) ::&lt;/SPAN&gt;&lt;SPAN class="s7"&gt; cf_full,cc_full&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;

&lt;P class="p8"&gt;&lt;SPAN class="s6"&gt;type(MATRIX_DESCR)&lt;/SPAN&gt;&lt;SPAN class="s2"&gt; :: &lt;/SPAN&gt;&lt;SPAN class="s7"&gt;descr&lt;/SPAN&gt;&lt;SPAN class="s1"&gt;!SPARSE_MATRIX_TYPE_GENERAL &amp;nbsp; &lt;/SPAN&gt;&lt;/P&gt;

&lt;P class="p8"&gt;&lt;SPAN style="font-size: 1em; line-height: 1.5;"&gt;nf = 2**(l+1)&lt;/SPAN&gt;&lt;/P&gt;

&lt;P class="p8"&gt;&lt;SPAN class="s1"&gt;!creating a ones array for f &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; &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;&lt;/SPAN&gt;&lt;/P&gt;

&lt;P class="p1"&gt;&lt;SPAN class="s5"&gt;ALLOCATE&lt;/SPAN&gt;&lt;SPAN class="s1"&gt;(ones_f(nf-1))&lt;/SPAN&gt;&lt;/P&gt;

&lt;P class="p1"&gt;&lt;SPAN class="s1"&gt;ones_f = &lt;/SPAN&gt;&lt;SPAN class="s5"&gt;real&lt;/SPAN&gt;&lt;SPAN class="s1"&gt;(-1)&lt;/SPAN&gt;&lt;/P&gt;

&lt;P class="p1"&gt;&lt;SPAN class="s5"&gt;ALLOCATE&lt;/SPAN&gt;&lt;SPAN class="s1"&gt;(cf(nf),cf_m(nf-1),cfd(nf-1),cf_p(nf-1))&lt;/SPAN&gt;&lt;/P&gt;

&lt;P class="p1"&gt;&lt;SPAN class="s1"&gt;hf = &lt;/SPAN&gt;&lt;SPAN class="s5"&gt;real&lt;/SPAN&gt;&lt;SPAN class="s1"&gt;(1)/&lt;/SPAN&gt;&lt;SPAN class="s5"&gt;real&lt;/SPAN&gt;&lt;SPAN class="s1"&gt;(nf)&lt;/SPAN&gt;&lt;/P&gt;

&lt;P class="p1"&gt;&lt;SPAN class="s1"&gt;cf = &lt;/SPAN&gt;&lt;SPAN class="s5"&gt;real&lt;/SPAN&gt;&lt;SPAN class="s1"&gt;(1)&lt;/SPAN&gt;&lt;/P&gt;

&lt;P class="p1"&gt;&lt;SPAN class="s1"&gt;cf_m = hf**(-2)*cf(2:&lt;/SPAN&gt;&lt;SPAN class="s5"&gt;size&lt;/SPAN&gt;&lt;SPAN class="s1"&gt;(cf))&lt;/SPAN&gt;&lt;/P&gt;

&lt;P class="p1"&gt;&lt;SPAN class="s1"&gt;cfd = hf**(-2)*-cf(2:&lt;/SPAN&gt;&lt;SPAN class="s5"&gt;size&lt;/SPAN&gt;&lt;SPAN class="s1"&gt;(cf)) - hf**(-2)*cf(1:&lt;/SPAN&gt;&lt;SPAN class="s5"&gt;size&lt;/SPAN&gt;&lt;SPAN class="s1"&gt;(cf)-1)&lt;/SPAN&gt;&lt;/P&gt;

&lt;P class="p1"&gt;&lt;SPAN class="s1"&gt;cf_p = hf**(-2)*cf(1:&lt;/SPAN&gt;&lt;SPAN class="s5"&gt;size&lt;/SPAN&gt;&lt;SPAN class="s1"&gt;(cf)-1)&lt;/SPAN&gt;&lt;/P&gt;

&lt;P class="p1"&gt;&lt;SPAN class="s5"&gt;ALLOCATE&lt;/SPAN&gt;&lt;SPAN class="s1"&gt;(coords_d(nf-1,2))&lt;/SPAN&gt;&lt;/P&gt;

&lt;P class="p1"&gt;&lt;SPAN class="s5"&gt;ALLOCATE&lt;/SPAN&gt;&lt;SPAN class="s1"&gt;(coords_m(nf-1,2))&lt;/SPAN&gt;&lt;/P&gt;

&lt;P class="p1"&gt;&lt;SPAN class="s5"&gt;ALLOCATE&lt;/SPAN&gt;&lt;SPAN class="s1"&gt;(coords_p(nf-1,2))&lt;/SPAN&gt;&lt;/P&gt;

&lt;P class="p2"&gt;&lt;SPAN style="font-size: 1em; line-height: 1.5;"&gt;!creating the coordinates of the vectors &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; &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; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;

&lt;P class="p1"&gt;&lt;SPAN class="s5"&gt;do&lt;/SPAN&gt;&lt;SPAN class="s1"&gt; i = 1,nf-1&lt;/SPAN&gt;&lt;/P&gt;

&lt;P class="p1"&gt;&lt;SPAN class="s1"&gt;&amp;nbsp;&amp;nbsp; coords_d(i,:) = i&lt;/SPAN&gt;&lt;/P&gt;

&lt;P class="p8"&gt;&lt;SPAN style="font-size: 1em; line-height: 1.5;"&gt;end do&lt;/SPAN&gt;&lt;/P&gt;

&lt;P class="p8"&gt;&lt;SPAN class="s1"&gt;!don't want last row of 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; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;

&lt;P class="p8"&gt;&lt;SPAN class="s5" style="font-size: 1em; line-height: 1.5;"&gt;do&lt;/SPAN&gt;&lt;SPAN class="s1" style="font-size: 1em; line-height: 1.5;"&gt; i = 1,nf-1&lt;/SPAN&gt;&lt;/P&gt;

&lt;P class="p8"&gt;&lt;SPAN class="s2"&gt;&amp;nbsp;&amp;nbsp; coords_m(i,1) = i + 1 &amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;&lt;SPAN class="s1"&gt;!row position &amp;nbsp; &amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;

&lt;P class="p8"&gt;&lt;SPAN class="s2" style="font-size: 1em; line-height: 1.5;"&gt;&amp;nbsp; &amp;nbsp;coords_m(i,2) = i &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;&lt;SPAN class="s1" style="font-size: 1em; line-height: 1.5;"&gt;!column position &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; &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; &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; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;&lt;SPAN class="s1" style="font-size: 1em; line-height: 1.5;"&gt;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="font-size: 1em; line-height: 1.5;"&gt;end do&lt;/SPAN&gt;&lt;/P&gt;

&lt;P class="p2"&gt;&lt;SPAN style="font-size: 1em; line-height: 1.5;"&gt;!don't want last row of 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; &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; &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; &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; &amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;&lt;SPAN class="s5" style="font-size: 1em; line-height: 1.5;"&gt;do&lt;/SPAN&gt;&lt;SPAN class="s1" style="font-size: 1em; line-height: 1.5;"&gt; i = 1,nf-1&lt;/SPAN&gt;&lt;/P&gt;

&lt;P class="p2"&gt;&lt;SPAN class="s2" style="font-size: 1em; line-height: 1.5;"&gt;&amp;nbsp; &amp;nbsp;coords_p(i,1) = i &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;&lt;SPAN class="s1" style="font-size: 1em; line-height: 1.5;"&gt;!row position &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; &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; &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; &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;&lt;/SPAN&gt;&lt;SPAN class="s2" style="font-size: 1em; line-height: 1.5;"&gt;coords_p(i,2) = i + 1 &amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;&lt;SPAN class="s1" style="font-size: 1em; line-height: 1.5;"&gt;!column position &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; &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; &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; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="font-size: 1em; line-height: 1.5;"&gt;end do&lt;/SPAN&gt;&lt;/P&gt;

&lt;P class="p2"&gt;&lt;SPAN class="s5" style="font-size: 1em; line-height: 1.5;"&gt;allocate&lt;/SPAN&gt;&lt;SPAN class="s1" style="font-size: 1em; line-height: 1.5;"&gt;(cf_full(3*nf-3))&lt;/SPAN&gt;&lt;/P&gt;

&lt;P class="p8"&gt;&lt;SPAN class="s1"&gt;!holding all of the values for the sparse matrix &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;

&lt;P class="p8"&gt;&lt;SPAN style="font-size: 1em; line-height: 1.5;"&gt;cf_full = (/ cf_m,cfd,cf_p&amp;nbsp; /)&lt;/SPAN&gt;&lt;/P&gt;

&lt;P class="p1"&gt;&lt;SPAN class="s1"&gt;stat = mkl_sparse_s_create_coo(A0f,1,nf-1,nf-1,&lt;/SPAN&gt;&lt;SPAN class="s2"&gt;size&lt;/SPAN&gt;&lt;SPAN class="s1"&gt;(cf_full),(/ coords_m(1:nf-2,1),coords_d(:,1), &lt;/SPAN&gt;&lt;SPAN class="s2"&gt;&amp;amp;&lt;/SPAN&gt;&lt;/P&gt;

&lt;P class="p1"&gt;&lt;SPAN class="s1"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; coords_p(1:nf-2,1) /),(/ coords_m(1:nf-2,2),coords_d(:,2),coords_p(1:nf-2,2) /),cf_full)&lt;/SPAN&gt;&lt;/P&gt;

&lt;P class="p1"&gt;&lt;SPAN class="s2"&gt;print&lt;/SPAN&gt;&lt;SPAN class="s1"&gt; *, stat&lt;/SPAN&gt;&lt;SPAN style="font-size: 1em; line-height: 1.5;"&gt;&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; &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; &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; &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; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;

&lt;P class="p4"&gt;&lt;SPAN class="s2"&gt;print&lt;/SPAN&gt;&lt;SPAN class="s3"&gt; *, &lt;/SPAN&gt;&lt;SPAN class="s1"&gt;'here 0'&lt;/SPAN&gt;&lt;/P&gt;

&lt;P class="p1"&gt;&lt;SPAN class="s1"&gt;stat = MKL_SPARSE_CONVERT_CSR(A0f,SPARSE_OPERATION_NON_TRANSPOSE,A0f)&lt;/SPAN&gt;&lt;/P&gt;

&lt;P class="p4"&gt;&lt;SPAN class="s2"&gt;print&lt;/SPAN&gt;&lt;SPAN class="s3"&gt; *, &lt;/SPAN&gt;&lt;SPAN class="s1"&gt;'here 1'&lt;/SPAN&gt;&lt;/P&gt;

&lt;P class="p1"&gt;&lt;SPAN class="s1"&gt;end subroutine&lt;/SPAN&gt;&lt;SPAN class="s2"&gt; &lt;/SPAN&gt;&lt;SPAN class="s3"&gt;tester_sub&lt;/SPAN&gt;&lt;/P&gt;

&lt;P class="p1"&gt;&lt;SPAN class="s1"&gt;end MODULE&lt;/SPAN&gt;&lt;SPAN class="s2"&gt; &lt;/SPAN&gt;&lt;SPAN class="s3"&gt;test&lt;/SPAN&gt;&lt;/P&gt;

&lt;P class="p1"&gt;&amp;nbsp;&lt;/P&gt;

&lt;P class="p1"&gt;I can compile the code so I believe that all of the libraries are linked correctly.&lt;/P&gt;

&lt;P class="p1"&gt;When I do print *, stat &amp;nbsp;after &lt;SPAN style="font-size: 13.008px; line-height: 19.512px;"&gt;mkl_sparse_s_create_coo&amp;nbsp;&lt;/SPAN&gt;I get the value 3. I am unsure of what this value actually means. From&amp;nbsp;https://software.intel.com/en-us/node/590112 it seems like&amp;nbsp;&lt;SPAN style="font-size: 13.008px; line-height: 19.512px;"&gt;mkl_sparse_s_create_coo is supposed to return a Character, but I can only use integer type for stat.&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;

&lt;P class="p1"&gt;&lt;SPAN style="line-height: 19.512px;"&gt;Once I try to use&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="font-size: 13.008px; line-height: 19.512px;"&gt;&amp;nbsp;MKL_SPARSE_CONVERT_CSR the program either has a segmentation fault or it hangs. I believe this is because A0f is not created correctly.&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;

&lt;P class="p1"&gt;&lt;SPAN style="font-size: 13.008px; line-height: 19.512px;"&gt;So, I guess my question is&lt;/SPAN&gt;&lt;/P&gt;

&lt;P class="p1"&gt;&lt;SPAN style="font-size: 13.008px; line-height: 19.512px;"&gt;1) What does stat = 3 mean?&lt;/SPAN&gt;&lt;/P&gt;

&lt;P class="p1"&gt;&lt;SPAN style="font-size: 13.008px; line-height: 19.512px;"&gt;2) If I am creating the sparse matrix A0f incorrectly, how do I create it correctly?&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;

&lt;P class="p1"&gt;&amp;nbsp;&lt;/P&gt;

&lt;P class="p1"&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Tue, 02 Aug 2016 21:34:25 GMT</pubDate>
      <guid>https://community.intel.com/t5/Intel-oneAPI-Math-Kernel-Library/MKL-help-with-mkl-sparse-s-create-coo-and-MKL-SPARSE-CONVERT-CSR/m-p/1081170#M22803</guid>
      <dc:creator>Brandon_R_</dc:creator>
      <dc:date>2016-08-02T21:34:25Z</dc:date>
    </item>
    <item>
      <title>Hi Brandon,</title>
      <link>https://community.intel.com/t5/Intel-oneAPI-Math-Kernel-Library/MKL-help-with-mkl-sparse-s-create-coo-and-MKL-SPARSE-CONVERT-CSR/m-p/1081171#M22804</link>
      <description>&lt;P&gt;Hi Brandon,&lt;/P&gt;

&lt;P&gt;You could check the enum value defined in mkl_spbals.f90 , the "status=3" represents invalid input value. Please make sure your type and value of input attributes. In your code, you indicate input array index from 1, row size and column size are 2^(I+1)-1, but what is the value of I? It might be the problem with... Here's an example called "sparse_s_csrmv.f90" in %MKLROOT%\examples\examples_core_f\spblasf\source, you could refer how function "mkl_sparse_s_create_csc" can be used. The function for creating matrix in csc format is similar to function of creating matrix in coo format, just change some attributes. Hope it could help you.&lt;/P&gt;

&lt;P&gt;Best regards,&lt;/P&gt;

&lt;P&gt;Fiona&lt;/P&gt;</description>
      <pubDate>Wed, 03 Aug 2016 06:57:53 GMT</pubDate>
      <guid>https://community.intel.com/t5/Intel-oneAPI-Math-Kernel-Library/MKL-help-with-mkl-sparse-s-create-coo-and-MKL-SPARSE-CONVERT-CSR/m-p/1081171#M22804</guid>
      <dc:creator>Zhen_Z_Intel</dc:creator>
      <dc:date>2016-08-03T06:57:53Z</dc:date>
    </item>
    <item>
      <title>Hello Fiona,</title>
      <link>https://community.intel.com/t5/Intel-oneAPI-Math-Kernel-Library/MKL-help-with-mkl-sparse-s-create-coo-and-MKL-SPARSE-CONVERT-CSR/m-p/1081172#M22805</link>
      <description>&lt;P&gt;Hello Fiona,&lt;/P&gt;

&lt;P&gt;Since the last time we spoke, I have instead created sparse matrices A and B using the CSR format. I am still having some issues though. Here is the code where&lt;/P&gt;

&lt;PRE class="brush:fortran;"&gt;                 |   1       2      0    0     0   |                                                                                                                               
                 |   0       3      4    5     0   |                                                                                                                               
  A    =         |   0       0      6    7     8   |                                                                                                                              
                 |   0       0      0    9     10  |   


                 |   2       2      0    0     0   |                                                                                                                               
                 |   0       2      2    2     0   |                                                                                                                               
  B    =         |   0       0      2    2     2   |                                                                                                                              
                 |   0       0      0    2     2   |                                                                                                                             &lt;/PRE&gt;

&lt;P&gt;&amp;nbsp;&lt;/P&gt;

&lt;PRE class="brush:fortran;"&gt;! code start ***************************************************************************************************************
type (SPARSE_MATRIX_T) :: A,B,C
integer :: stat                                                                                                                                                                                                                                                                                                                                             
real :: values_a(10),values_b(10),values_b_x(10)
integer :: col_a(10),col_b(10),row_start_a(5),row_start_b(5),row_end_a(4),row_end_b(4)
integer :: col_b_x(10),row_start_b_x(5),row_end_b_x(4)
integer :: rows, cols,indexing

values_a(1:10) = real((/1,2,3,4,5,6,7,8,9,10/))
values_b(1:10) = real((/2,2,2,2,2,2,2,2,2,2/))

col_a(1:10) = (/1,2,2,3,4,3,4,5,4,5/)
col_b(1:10) = (/1,2,2,3,4,3,4,5,4,5/)

row_start_a(1:5) = (/1,3,6,9,11/)
row_start_b(1:5) = (/1,3,6,9,11/)

row_end_a(1:4) = (/2,5,8,10/)
row_end_b(1:4) = (/2,5,8,10/)

stat = mkl_sparse_s_create_csr(A,SPARSE_INDEX_BASE_ONE,4,5,row_start_a,row_end_a,col_a,values_a)

print *, stat

stat = mkl_sparse_s_create_csr(B,SPARSE_INDEX_BASE_ONE,4,5,row_start_b,row_end_b,col_b,values_b)

print *, stat

stat = mkl_sparse_s_export_csr(B,indexing,rows,cols,row_start_b_x,row_end_b_x,col_b_x,values_b_x)

print *, stat
print *, row_start_b_x

stat = mkl_sparse_s_add(SPARSE_OPERATION_NON_TRANSPOSE,B,real(1.0),A,C)                                                                                                                                                                    

print *, stat

! code end ***************************************************************************************************************

However, I get the following output:
           0
           0
           0
     7183776           0           0           0           0
           2

It seems like I am not creating the matrices correctly, but I believe I am. Printing stat, shows that creating A and B is 
successful and that exporting the csr format is also successful, but adding the two matrices gives the error &lt;SPAN style="color: rgb(102, 102, 102); font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace; font-size: 13px; line-height: 20.8px; background-color: rgb(242, 242, 242);"&gt;SPARSE_STATUS_ALLOC_FAILED.

What exactly is going on here? 

Thank you,
Brandon 
&lt;/SPAN&gt;
​


&lt;/PRE&gt;

&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Fri, 05 Aug 2016 18:33:46 GMT</pubDate>
      <guid>https://community.intel.com/t5/Intel-oneAPI-Math-Kernel-Library/MKL-help-with-mkl-sparse-s-create-coo-and-MKL-SPARSE-CONVERT-CSR/m-p/1081172#M22805</guid>
      <dc:creator>Brandon_R_</dc:creator>
      <dc:date>2016-08-05T18:33:46Z</dc:date>
    </item>
    <item>
      <title>Hi Brandon,</title>
      <link>https://community.intel.com/t5/Intel-oneAPI-Math-Kernel-Library/MKL-help-with-mkl-sparse-s-create-coo-and-MKL-SPARSE-CONVERT-CSR/m-p/1081173#M22806</link>
      <description>&lt;P&gt;Hi Brandon,&lt;/P&gt;

&lt;P&gt;You didn't assign value for variables "indexing", "rows" and "cols"...... Please check with your code. Thanks.&amp;nbsp;&lt;/P&gt;

&lt;P&gt;Fiona&lt;/P&gt;</description>
      <pubDate>Mon, 08 Aug 2016 05:52:47 GMT</pubDate>
      <guid>https://community.intel.com/t5/Intel-oneAPI-Math-Kernel-Library/MKL-help-with-mkl-sparse-s-create-coo-and-MKL-SPARSE-CONVERT-CSR/m-p/1081173#M22806</guid>
      <dc:creator>Zhen_Z_Intel</dc:creator>
      <dc:date>2016-08-08T05:52:47Z</dc:date>
    </item>
    <item>
      <title>Hi Brandon, Fiona,</title>
      <link>https://community.intel.com/t5/Intel-oneAPI-Math-Kernel-Library/MKL-help-with-mkl-sparse-s-create-coo-and-MKL-SPARSE-CONVERT-CSR/m-p/1081174#M22807</link>
      <description>&lt;P&gt;Hi Brandon, Fiona,&lt;/P&gt;

&lt;P&gt;Parameters &amp;nbsp;"indexing", "rows" and "cols" are output parameters&amp;nbsp;and should not be assigned.&lt;/P&gt;

&lt;P&gt;Brandon, I&amp;nbsp;need some time to&amp;nbsp;check your issue and see how we can help you.&lt;/P&gt;

&lt;P&gt;Best regards,&lt;/P&gt;

&lt;P&gt;Irina&lt;/P&gt;</description>
      <pubDate>Mon, 08 Aug 2016 09:49:54 GMT</pubDate>
      <guid>https://community.intel.com/t5/Intel-oneAPI-Math-Kernel-Library/MKL-help-with-mkl-sparse-s-create-coo-and-MKL-SPARSE-CONVERT-CSR/m-p/1081174#M22807</guid>
      <dc:creator>Irina_S_Intel</dc:creator>
      <dc:date>2016-08-08T09:49:54Z</dc:date>
    </item>
    <item>
      <title>Hello Irina,</title>
      <link>https://community.intel.com/t5/Intel-oneAPI-Math-Kernel-Library/MKL-help-with-mkl-sparse-s-create-coo-and-MKL-SPARSE-CONVERT-CSR/m-p/1081175#M22808</link>
      <description>&lt;P&gt;Hello Irina,&lt;/P&gt;

&lt;P&gt;Thank you very much for your help. Also, I was wondering if you could possibly try to run the program that I have implemented above? It might be possible that I am not correctly linked to the library.&amp;nbsp;&lt;/P&gt;

&lt;P&gt;&amp;nbsp;&lt;/P&gt;

&lt;P&gt;Thank you,&lt;/P&gt;

&lt;P&gt;Brandon&lt;/P&gt;</description>
      <pubDate>Tue, 09 Aug 2016 19:33:45 GMT</pubDate>
      <guid>https://community.intel.com/t5/Intel-oneAPI-Math-Kernel-Library/MKL-help-with-mkl-sparse-s-create-coo-and-MKL-SPARSE-CONVERT-CSR/m-p/1081175#M22808</guid>
      <dc:creator>Brandon_R_</dc:creator>
      <dc:date>2016-08-09T19:33:45Z</dc:date>
    </item>
    <item>
      <title>Hi Brandon,</title>
      <link>https://community.intel.com/t5/Intel-oneAPI-Math-Kernel-Library/MKL-help-with-mkl-sparse-s-create-coo-and-MKL-SPARSE-CONVERT-CSR/m-p/1081176#M22809</link>
      <description>&lt;P&gt;Hi Brandon,&lt;/P&gt;

&lt;P&gt;Concerning the second problem with &lt;CODE&gt;mkl_sparse_s_add&lt;/CODE&gt;, I run your code and see similar behavior. This issue will be fixed in future MKL releases, the problem is caused by incorrect behavior of &lt;CODE&gt;mkl_sparse_s_export_csr. I can suggest you two workarounds:&lt;/CODE&gt;&lt;/P&gt;

&lt;OL&gt;
	&lt;LI&gt;
		&lt;P&gt;If it’s not possible, use C. If it is not possible:&lt;/P&gt;
	&lt;/LI&gt;
	&lt;LI&gt;
		&lt;P&gt;Add correct interface of &lt;CODE&gt;mkl_sparse_s_export_csr &lt;/CODE&gt;in the beginning of your program, pass C pointers in the body of &lt;CODE&gt;mkl_sparse_s_export_csr and cast them to fortran pointers afterwards. Here is an example how&amp;nbsp;this can be done&amp;nbsp;with the code that you’ve sent. Please let me know if you've succeeded in using such approach. &lt;/CODE&gt;&lt;/P&gt;
	&lt;/LI&gt;
&lt;/OL&gt;

&lt;PRE class="brush:fortran;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; PROGRAM test
	USE ISO_C_BINDING
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; USE MKL_SPBLAS
&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; !Declare new interface with aarrays rows, cols, values of type C pointer
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; !Change name of the routine to EXPORT_CSR_FIXED so it doesn’t conflict with existing MKL interface&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; INTERFACE
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; FUNCTION MKL_SPARSE_S_EXPORT_CSR_FIXED(source,indexing,rows,cols,rows_start,rows_end,col_indx,values) &amp;amp;
&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; BIND(C, name='MKL_SPARSE_S_EXPORT_CSR')
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; USE, INTRINSIC :: ISO_C_BINDING , ONLY : C_INT, C_FLOAT, C_PTR
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; IMPORT SPARSE_MATRIX_T
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; TYPE(SPARSE_MATRIX_T), INTENT(IN) :: source
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; INTEGER(C_INT)&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; , INTENT(INOUT) :: indexing
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; INTEGER(C_INT)&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; , INTENT(INOUT) :: rows
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; INTEGER(C_INT)&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; , INTENT(INOUT) :: cols
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; TYPE(C_PTR)&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; , INTENT(INOUT) :: rows_start
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; TYPE(C_PTR)&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; , INTENT(INOUT) :: rows_end
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; TYPE(C_PTR)&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; , INTENT(INOUT) :: col_indx
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; TYPE(C_PTR)&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; , INTENT(INOUT) :: values
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; INTEGER(C_INT) MKL_SPARSE_S_EXPORT_CSR_FIXED
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; END FUNCTION
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; END INTERFACE

&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; type (SPARSE_MATRIX_T) :: A,B,C
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; integer :: stat
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; real :: values_a(10),values_b(10),values_b_x(10)
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; integer :: col_a(10),col_b(10),row_start_a(5),row_start_b(5),row_end_a(4),row_end_b(4)
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; integer :: col_b_x(10),row_start_b_x(5),row_end_b_x(4)
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; integer :: rows, cols,indexing
&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; !declare C and fortran pointers. C pointers will be passed to the body of export_csr routine.
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; integer nnz, nrows
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; type(c_ptr) :: row_start_c, row_end_c, col_c, values_c
&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; integer, pointer, dimension(:) :: row_start_f, row_end_f, col_f
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; real, pointer, dimension(:) :: values_f
&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; values_a(1:10) = real((/1,2,3,4,5,6,7,8,9,10/))
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; values_b(1:10) = real((/2,2,2,2,2,2,2,2,2,3/))

&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; col_a(1:10) = (/1,2,2,3,4,3,4,5,4,5/)
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; col_b(1:10) = (/1,2,2,3,4,3,4,5,4,5/)

&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; row_start_a(1:5) = (/1,3,6,9,11/)
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; row_start_b(1:5) = (/1,3,6,9,11/)

&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; row_end_a(1:4) = (/2,5,8,10/)
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; row_end_b(1:4) = (/2,5,8,10/)

&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; stat = mkl_sparse_s_create_csr(A,SPARSE_INDEX_BASE_ONE,4,5, &amp;amp;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; row_start_a,row_end_a,col_a,values_a)

&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; print *, stat

&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; stat = mkl_sparse_s_create_csr(B,SPARSE_INDEX_BASE_ONE,4,5,&amp;amp;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; row_start_b,row_end_b,col_b,values_b)

&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; print *, stat

&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; stat = mkl_sparse_s_add(SPARSE_OPERATION_NON_TRANSPOSE,&amp;amp;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; B,real(1.0),A,C)

&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; !call export_csr with C pointers&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; stat = mkl_sparse_s_export_csr_fixed(C,indexing,rows,cols,&amp;amp;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; row_start_c,row_end_c,col_c,values_c)

&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; print *, stat
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; print *, 'rows ', rows
&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; print *, 'indexing', indexing

&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; nrows = rows

&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; !Cast C pointers that came from export routine to Fortran pointers
&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; call c_f_pointer(row_start_c, row_start_f, [nrows+1])
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; call c_f_pointer(row_end_c, row_end_f, [nrows])

&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; nnz = row_start_f(nrows+1)-indexing&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; print *, nnz
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; call c_f_pointer(col_c,&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; col_f,&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; [nnz])
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; call c_f_pointer(values_c,&amp;nbsp;&amp;nbsp; values_f,&amp;nbsp;&amp;nbsp; [nnz])

&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; print *,'row_start_f', row_start_f
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; print *,'row_end_f', row_end_f
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; print *,'col_f', col_f
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; print *,'values_f', values_f


&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; print *, stat

&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; END PROGRAM test
&lt;/PRE&gt;

&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Wed, 10 Aug 2016 10:41:51 GMT</pubDate>
      <guid>https://community.intel.com/t5/Intel-oneAPI-Math-Kernel-Library/MKL-help-with-mkl-sparse-s-create-coo-and-MKL-SPARSE-CONVERT-CSR/m-p/1081176#M22809</guid>
      <dc:creator>Irina_S_Intel</dc:creator>
      <dc:date>2016-08-10T10:41:51Z</dc:date>
    </item>
  </channel>
</rss>

