<?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 Sparse matrix and dense matrix multiplication in Intel® oneAPI Math Kernel Library</title>
    <link>https://community.intel.com/t5/Intel-oneAPI-Math-Kernel-Library/Sparse-matrix-and-dense-matrix-multiplication/m-p/1003145#M18667</link>
    <description>&lt;P&gt;Hi,&lt;/P&gt;

&lt;P&gt;Have a quick question to ask, I need to do A x B where A is a sparse matrix stored in CSR format, B is a symmetric dense matrix. Now I am using csrmm to compute the multiplication, but have to convert B into full dense matrix first, which doubles the memory for B. Is there any routine in MKL that can handles this?&lt;/P&gt;

&lt;P&gt;Many thanks!&lt;/P&gt;</description>
    <pubDate>Thu, 17 Jul 2014 10:08:50 GMT</pubDate>
    <dc:creator>Wei_W_</dc:creator>
    <dc:date>2014-07-17T10:08:50Z</dc:date>
    <item>
      <title>Sparse matrix and dense matrix multiplication</title>
      <link>https://community.intel.com/t5/Intel-oneAPI-Math-Kernel-Library/Sparse-matrix-and-dense-matrix-multiplication/m-p/1003145#M18667</link>
      <description>&lt;P&gt;Hi,&lt;/P&gt;

&lt;P&gt;Have a quick question to ask, I need to do A x B where A is a sparse matrix stored in CSR format, B is a symmetric dense matrix. Now I am using csrmm to compute the multiplication, but have to convert B into full dense matrix first, which doubles the memory for B. Is there any routine in MKL that can handles this?&lt;/P&gt;

&lt;P&gt;Many thanks!&lt;/P&gt;</description>
      <pubDate>Thu, 17 Jul 2014 10:08:50 GMT</pubDate>
      <guid>https://community.intel.com/t5/Intel-oneAPI-Math-Kernel-Library/Sparse-matrix-and-dense-matrix-multiplication/m-p/1003145#M18667</guid>
      <dc:creator>Wei_W_</dc:creator>
      <dc:date>2014-07-17T10:08:50Z</dc:date>
    </item>
    <item>
      <title>Any help would be appreciated</title>
      <link>https://community.intel.com/t5/Intel-oneAPI-Math-Kernel-Library/Sparse-matrix-and-dense-matrix-multiplication/m-p/1003146#M18668</link>
      <description>&lt;P&gt;Any help would be appreciated, thanks!&lt;/P&gt;</description>
      <pubDate>Fri, 18 Jul 2014 13:08:00 GMT</pubDate>
      <guid>https://community.intel.com/t5/Intel-oneAPI-Math-Kernel-Library/Sparse-matrix-and-dense-matrix-multiplication/m-p/1003146#M18668</guid>
      <dc:creator>Wei_W_</dc:creator>
      <dc:date>2014-07-18T13:08:00Z</dc:date>
    </item>
    <item>
      <title>Some questions that are</title>
      <link>https://community.intel.com/t5/Intel-oneAPI-Math-Kernel-Library/Sparse-matrix-and-dense-matrix-multiplication/m-p/1003147#M18669</link>
      <description>&lt;P&gt;Some questions that are relevant to the request:&lt;/P&gt;

&lt;UL&gt;
	&lt;LI&gt;How is the symmetric matrix B currently stored (before being converted to full, dense)?&lt;/LI&gt;
	&lt;LI&gt;What do you intend to do with&amp;nbsp;&lt;SPAN style="font-size: 11.818181991577148px; line-height: 16.363636016845703px;"&gt;A x B&amp;nbsp;&lt;/SPAN&gt;, after computing the product matrix?&lt;/LI&gt;
	&lt;LI&gt;How do you wish to store the product matrix?&lt;/LI&gt;
&lt;/UL&gt;</description>
      <pubDate>Fri, 18 Jul 2014 14:55:46 GMT</pubDate>
      <guid>https://community.intel.com/t5/Intel-oneAPI-Math-Kernel-Library/Sparse-matrix-and-dense-matrix-multiplication/m-p/1003147#M18669</guid>
      <dc:creator>mecej4</dc:creator>
      <dc:date>2014-07-18T14:55:46Z</dc:date>
    </item>
    <item>
      <title>Thanks for reply.</title>
      <link>https://community.intel.com/t5/Intel-oneAPI-Math-Kernel-Library/Sparse-matrix-and-dense-matrix-multiplication/m-p/1003148#M18670</link>
      <description>&lt;P&gt;Thanks for reply.&lt;/P&gt;

&lt;P&gt;1. The B matrix is stored column wise, packed form (upper triangle) before converting to full dense matrix.&lt;/P&gt;

&lt;P&gt;2. After computing AxB=C, I will do a for loop i=1:n, for each i, I need to do D_i x C, where D_i is also a sparse matrix. Here I use csrmm for sure since the dense C matrix is not symmetric.&lt;/P&gt;

&lt;P&gt;3. The product matrix C is not symmetric, so just the regular way to store it, we use column major to store dense matrix in our code.&lt;/P&gt;</description>
      <pubDate>Fri, 18 Jul 2014 15:06:14 GMT</pubDate>
      <guid>https://community.intel.com/t5/Intel-oneAPI-Math-Kernel-Library/Sparse-matrix-and-dense-matrix-multiplication/m-p/1003148#M18670</guid>
      <dc:creator>Wei_W_</dc:creator>
      <dc:date>2014-07-18T15:06:14Z</dc:date>
    </item>
    <item>
      <title>Hi Wei, </title>
      <link>https://community.intel.com/t5/Intel-oneAPI-Math-Kernel-Library/Sparse-matrix-and-dense-matrix-multiplication/m-p/1003149#M18671</link>
      <description>&lt;P&gt;Hi Wei,&amp;nbsp;&lt;/P&gt;

&lt;P&gt;It seems there is no good function can operate a spase matrix A*B (parcked upper triangle) form. &amp;nbsp;You may either convert B to dense matrix. Then use &amp;nbsp; mkl_?csrmm. Get sparse C matrix. &amp;nbsp;Then call &amp;nbsp;mkl_?csrmultd. &amp;nbsp;to compute D_i *C.&lt;/P&gt;

&lt;P&gt;&lt;SPAN style="font-size: 1em; line-height: 1.5;"&gt;Or convert B to sparse matrix. use &lt;/SPAN&gt;mkl_?csrmultd.&amp;nbsp;&amp;nbsp;to compute C= A*B. Then mkl_?csrmm do D_i*C. &amp;nbsp;But if convert B to sparse matrix. it still need double memory.&amp;nbsp;&lt;/P&gt;

&lt;P&gt;or call&amp;nbsp;mkl_?csrgemv to compute ci=A*bi (B's colum vector). , then call csrmm do D_i*C.&amp;nbsp;&lt;/P&gt;

&lt;P&gt;Best Regards,&lt;/P&gt;

&lt;P&gt;Ying&amp;nbsp;&lt;/P&gt;

&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Mon, 21 Jul 2014 01:26:42 GMT</pubDate>
      <guid>https://community.intel.com/t5/Intel-oneAPI-Math-Kernel-Library/Sparse-matrix-and-dense-matrix-multiplication/m-p/1003149#M18671</guid>
      <dc:creator>Ying_H_Intel</dc:creator>
      <dc:date>2014-07-21T01:26:42Z</dc:date>
    </item>
  </channel>
</rss>

