<?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 ?gbmv is a routine to in Intel® oneAPI Math Kernel Library</title>
    <link>https://community.intel.com/t5/Intel-oneAPI-Math-Kernel-Library/Use-gbmv-with-a-3d-array/m-p/933197#M13864</link>
    <description>&lt;P&gt;?gbmv is a routine to multiply a 2-D *banded* matrix with a vector. The matrices in your example 3D array are not banded. Why do you want to use ?gbmv instead of ?gemv?. In case you indeed want to use ?gbmv for banded matrices, then you can take look at this for a good explanation on the banded matrix storage format, which is what ?gbmv expects for the matrix argument passed to it: &lt;A href="http://software.intel.com/en-us/node/471382#BAND" target="_blank"&gt;http://software.intel.com/en-us/node/471382#BAND&lt;/A&gt;&lt;/P&gt;</description>
    <pubDate>Mon, 03 Mar 2014 20:32:30 GMT</pubDate>
    <dc:creator>Zhang_Z_Intel</dc:creator>
    <dc:date>2014-03-03T20:32:30Z</dc:date>
    <item>
      <title>Use ?gbmv with a 3d array.</title>
      <link>https://community.intel.com/t5/Intel-oneAPI-Math-Kernel-Library/Use-gbmv-with-a-3d-array/m-p/933196#M13863</link>
      <description>&lt;P&gt;Let assume the we have a 3d array A and a matrix B of size 2x5.&lt;/P&gt;

&lt;PRE class="lang-c prettyprint prettyprinted" style=""&gt;
&lt;CODE&gt;&lt;SPAN class="typ"&gt;int&lt;/SPAN&gt;&lt;SPAN class="pln"&gt; A&lt;/SPAN&gt;&lt;SPAN class="pun"&gt;[&lt;/SPAN&gt;&lt;SPAN class="lit"&gt;3&lt;/SPAN&gt;&lt;SPAN class="pun"&gt;][&lt;/SPAN&gt;&lt;SPAN class="lit"&gt;2&lt;/SPAN&gt;&lt;SPAN class="pun"&gt;][&lt;/SPAN&gt;&lt;SPAN class="lit"&gt;2&lt;/SPAN&gt;&lt;SPAN class="pun"&gt;]=&lt;/SPAN&gt;&lt;SPAN class="pln"&gt; &lt;/SPAN&gt;&lt;SPAN class="pun"&gt;{&lt;/SPAN&gt;&lt;SPAN class="pln"&gt; &lt;/SPAN&gt;&lt;SPAN class="pun"&gt;{{&lt;/SPAN&gt;&lt;SPAN class="lit"&gt;1&lt;/SPAN&gt;&lt;SPAN class="pun"&gt;,&lt;/SPAN&gt;&lt;SPAN class="lit"&gt;2&lt;/SPAN&gt;&lt;SPAN class="pun"&gt;},{&lt;/SPAN&gt;&lt;SPAN class="lit"&gt;3&lt;/SPAN&gt;&lt;SPAN class="pun"&gt;,&lt;/SPAN&gt;&lt;SPAN class="lit"&gt;4&lt;/SPAN&gt;&lt;SPAN class="pun"&gt;}&lt;/SPAN&gt;&lt;SPAN class="pln"&gt; &lt;/SPAN&gt;&lt;SPAN class="pun"&gt;},&lt;/SPAN&gt;&lt;SPAN class="pln"&gt; &lt;/SPAN&gt;&lt;SPAN class="pun"&gt;{{&lt;/SPAN&gt;&lt;SPAN class="lit"&gt;5&lt;/SPAN&gt;&lt;SPAN class="pun"&gt;,&lt;/SPAN&gt;&lt;SPAN class="lit"&gt;6&lt;/SPAN&gt;&lt;SPAN class="pun"&gt;},{&lt;/SPAN&gt;&lt;SPAN class="lit"&gt;7&lt;/SPAN&gt;&lt;SPAN class="pun"&gt;,&lt;/SPAN&gt;&lt;SPAN class="lit"&gt;8&lt;/SPAN&gt;&lt;SPAN class="pun"&gt;}},&lt;/SPAN&gt;&lt;SPAN class="pln"&gt; &lt;/SPAN&gt;&lt;SPAN class="pun"&gt;{{&lt;/SPAN&gt;&lt;SPAN class="lit"&gt;9&lt;/SPAN&gt;&lt;SPAN class="pun"&gt;,&lt;/SPAN&gt;&lt;SPAN class="lit"&gt;10&lt;/SPAN&gt;&lt;SPAN class="pun"&gt;},{&lt;/SPAN&gt;&lt;SPAN class="lit"&gt;11&lt;/SPAN&gt;&lt;SPAN class="pun"&gt;,&lt;/SPAN&gt;&lt;SPAN class="lit"&gt;12&lt;/SPAN&gt;&lt;SPAN class="pun"&gt;}}&lt;/SPAN&gt;&lt;SPAN class="pln"&gt; &lt;/SPAN&gt;&lt;SPAN class="pun"&gt;};&lt;/SPAN&gt;&lt;/CODE&gt;&lt;/PRE&gt;

&lt;P&gt;&amp;nbsp;I want to program the following:&lt;/P&gt;

&lt;P&gt;&lt;CODE&gt;&lt;SPAN class="pln"&gt;cs &lt;/SPAN&gt;&lt;SPAN class="pun"&gt;=&lt;/SPAN&gt;&lt;SPAN class="lit"&gt;0.0&lt;/SPAN&gt;&lt;SPAN class="pun"&gt;;&lt;/SPAN&gt;&lt;/CODE&gt;&lt;/P&gt;

&lt;P&gt;&lt;CODE&gt;&lt;SPAN class="kwd"&gt;for&lt;/SPAN&gt;&lt;SPAN class="pln"&gt; j&lt;/SPAN&gt;&lt;SPAN class="pun"&gt;=&lt;/SPAN&gt;&lt;SPAN class="lit"&gt;1&lt;/SPAN&gt;&lt;SPAN class="pln"&gt; until &lt;/SPAN&gt;&lt;SPAN class="lit"&gt;3&lt;/SPAN&gt;&lt;/CODE&gt;&lt;/P&gt;

&lt;P&gt;&lt;CODE&gt;&lt;SPAN class="typ"&gt;Multiply&lt;/SPAN&gt;&lt;SPAN class="pln"&gt; the &lt;/SPAN&gt;&lt;SPAN class="typ"&gt;Aj&lt;/SPAN&gt;&lt;SPAN class="pln"&gt; matrix with the t&lt;/SPAN&gt;&lt;SPAN class="pun"&gt;-&lt;/SPAN&gt;&lt;SPAN class="pln"&gt;j column of the B matrix and add the result to the term cs&lt;/SPAN&gt;&lt;SPAN class="pun"&gt;.&lt;/SPAN&gt;&lt;SPAN class="pln"&gt; &lt;/SPAN&gt;&lt;/CODE&gt;&lt;/P&gt;

&lt;P&gt;end&lt;/P&gt;

&lt;P&gt;I have read the function &lt;STRONG&gt;?gbmv&lt;/STRONG&gt; which computes a matrix-vector product using a general band matrix, but I don't know how to do that when the matrix is a 3d array. In this site &lt;A href="http://software.intel.com/sites/products/documentation/hpc/mkl/mklman/GUID-2FB74140-ADF9-4D82-8644-FD32025F6B71.htm" target="_blank"&gt;http://software.intel.com/sites/products/documentation/hpc/mkl/mklman/GUID-2FB74140-ADF9-4D82-8644-FD32025F6B71.htm&lt;/A&gt; I read the following&lt;/P&gt;

&lt;P&gt;&lt;EM&gt;"Array, &lt;SPAN class="keyword"&gt;DIMENSION&lt;/SPAN&gt; &lt;SAMP class="codeph"&gt;(&lt;VAR&gt;lda&lt;/VAR&gt;, &lt;VAR&gt;n&lt;/VAR&gt;)&lt;/SAMP&gt;.&lt;/EM&gt;&lt;/P&gt;

&lt;P&gt;&lt;EM&gt;Before entry, the leading &lt;SAMP class="codeph"&gt;(&lt;VAR&gt;kl&lt;/VAR&gt; + &lt;VAR&gt;ku&lt;/VAR&gt; + 1)&lt;/SAMP&gt; by &lt;VAR&gt;n&lt;/VAR&gt; part of the array &lt;VAR&gt;a&lt;/VAR&gt; must contain the matrix of coefficients. This matrix must be supplied column-by-column, with the leading diagonal of the matrix in row &lt;SAMP class="codeph"&gt;(&lt;VAR&gt;ku&lt;/VAR&gt; + 1)&lt;/SAMP&gt; of the array, the first super-diagonal starting at position 2 in row &lt;VAR&gt;ku&lt;/VAR&gt;, the first sub-diagonal starting at position 1 in row &lt;SAMP class="codeph"&gt;(&lt;VAR&gt;ku&lt;/VAR&gt; + 2)&lt;/SAMP&gt;, and so on. Elements in the array &lt;VAR&gt;a&lt;/VAR&gt; that do not correspond to elements in the band matrix (such as the top left &lt;VAR&gt;ku&lt;/VAR&gt; by &lt;VAR&gt;ku&lt;/VAR&gt; triangle) are not referenced.&lt;/EM&gt;"&lt;/P&gt;

&lt;P&gt;But I don't understand it.&lt;/P&gt;

&lt;P&gt;Could you help me, please. A simple example would help me.&lt;/P&gt;

&lt;P&gt;Thank you very much.&lt;/P&gt;

&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Sun, 02 Mar 2014 20:27:40 GMT</pubDate>
      <guid>https://community.intel.com/t5/Intel-oneAPI-Math-Kernel-Library/Use-gbmv-with-a-3d-array/m-p/933196#M13863</guid>
      <dc:creator>Fiori</dc:creator>
      <dc:date>2014-03-02T20:27:40Z</dc:date>
    </item>
    <item>
      <title>?gbmv is a routine to</title>
      <link>https://community.intel.com/t5/Intel-oneAPI-Math-Kernel-Library/Use-gbmv-with-a-3d-array/m-p/933197#M13864</link>
      <description>&lt;P&gt;?gbmv is a routine to multiply a 2-D *banded* matrix with a vector. The matrices in your example 3D array are not banded. Why do you want to use ?gbmv instead of ?gemv?. In case you indeed want to use ?gbmv for banded matrices, then you can take look at this for a good explanation on the banded matrix storage format, which is what ?gbmv expects for the matrix argument passed to it: &lt;A href="http://software.intel.com/en-us/node/471382#BAND" target="_blank"&gt;http://software.intel.com/en-us/node/471382#BAND&lt;/A&gt;&lt;/P&gt;</description>
      <pubDate>Mon, 03 Mar 2014 20:32:30 GMT</pubDate>
      <guid>https://community.intel.com/t5/Intel-oneAPI-Math-Kernel-Library/Use-gbmv-with-a-3d-array/m-p/933197#M13864</guid>
      <dc:creator>Zhang_Z_Intel</dc:creator>
      <dc:date>2014-03-03T20:32:30Z</dc:date>
    </item>
  </channel>
</rss>

