<?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, in Intel® oneAPI Math Kernel Library</title>
    <link>https://community.intel.com/t5/Intel-oneAPI-Math-Kernel-Library/Example-of-submatrix-multiplication/m-p/1005968#M18887</link>
    <description>&lt;P&gt;Hi,&lt;/P&gt;

&lt;P&gt;I looked into the example on dgemm. It is not quiet clear how to set lda etc for subblocks.&lt;/P&gt;

&lt;P&gt;Here is an example I create.&lt;/P&gt;

&lt;P&gt;A = [ 0&amp;nbsp; 1&amp;nbsp; 2&amp;nbsp;&amp;nbsp; 3&amp;nbsp;&amp;nbsp; 4&amp;nbsp;&amp;nbsp; 5&amp;nbsp;&amp;nbsp; 6&amp;nbsp;&amp;nbsp; 7&amp;nbsp;&amp;nbsp; 8&amp;nbsp;&amp;nbsp; 9&lt;/P&gt;

&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 10 11 12 13 14 15 16 17 18 19&lt;/P&gt;

&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 20 21 22 23 24 25 26 27 28 29&lt;/P&gt;

&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 30 31 32 33 34 35 36 37 38 39&lt;/P&gt;

&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 40 41 42 43 44 45 46 47 48 49&lt;/P&gt;

&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 50 51 52 53 54 55 56 57 58 59&lt;/P&gt;

&lt;P&gt;]&lt;/P&gt;

&lt;P&gt;B&amp;nbsp; =&amp;nbsp; [&lt;/P&gt;

&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0&amp;nbsp; 1&amp;nbsp; 2&amp;nbsp; 3&amp;nbsp; 4&amp;nbsp; 5&lt;/P&gt;

&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 6&amp;nbsp; 7&amp;nbsp; 8&amp;nbsp; 9 10 11&lt;/P&gt;

&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 12 13 14 15 16 17&lt;/P&gt;

&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 18 19 20 21 22 23&lt;/P&gt;

&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 24 25 26 27 28 29&lt;/P&gt;

&lt;P&gt;]&lt;/P&gt;

&lt;P&gt;&amp;nbsp;&lt;/P&gt;

&lt;P&gt;C&amp;nbsp; = [ 0&amp;nbsp; 1&amp;nbsp; 2&amp;nbsp;&amp;nbsp; 3&amp;nbsp;&amp;nbsp; 4&amp;nbsp;&amp;nbsp; 5&amp;nbsp; 6&amp;nbsp;&amp;nbsp; 7&lt;/P&gt;

&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 8&amp;nbsp;&amp;nbsp; 9 10 11 12 13 14 15&lt;/P&gt;

&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 16 17 18 19 20 21 22 23&lt;/P&gt;

&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 24 25 26 27 28 29 30 31&lt;/P&gt;

&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 32 33 34 35 36 37 38 39&lt;/P&gt;

&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 40 41 42 43 44 45 46 47&lt;/P&gt;

&lt;P&gt;]&lt;/P&gt;

&lt;P&gt;All right! Now I want to operate on submatrices. Let us say I want to multiply a 4x3 submatrix of A as&lt;/P&gt;

&lt;P&gt;follows&lt;/P&gt;

&lt;P&gt;&amp;nbsp;&amp;nbsp;&lt;/P&gt;

&lt;P&gt;sub_matrix_A = [&amp;nbsp;&lt;/P&gt;

&lt;P&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; 14 15 16&lt;/P&gt;

&lt;P&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; 24 25 26&lt;/P&gt;

&lt;P&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; 34 35 36&lt;/P&gt;

&lt;P&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; 44 45 46&lt;/P&gt;

&lt;P&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; ]&lt;/P&gt;

&lt;P&gt;&amp;nbsp;&lt;/P&gt;

&lt;P&gt;with a 3x2 sub-matrix of B as follows&lt;/P&gt;

&lt;P&gt;sub_matrix_B = [&lt;/P&gt;

&lt;P&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; 7&amp;nbsp; 8&amp;nbsp;&lt;/P&gt;

&lt;P&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; 13 14&lt;/P&gt;

&lt;P&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; 19 20&lt;/P&gt;

&lt;P&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; ]&lt;/P&gt;

&lt;P&gt;to put in the 4x2 sub-matrix of C as follows&lt;/P&gt;

&lt;P&gt;sub_matrix_C = [&lt;/P&gt;

&lt;P&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 12 13&amp;nbsp;&lt;/P&gt;

&lt;P&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp; 20 21&amp;nbsp;&lt;/P&gt;

&lt;P&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 28 29&amp;nbsp;&lt;/P&gt;

&lt;P&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 36 37 &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;/P&gt;

&lt;P&gt;Could someone work out this example for me and future MKL users ? Below are&lt;/P&gt;

&lt;P&gt;the parameters to be filled.&lt;/P&gt;

&lt;PRE&gt;cblas_dgemm(CblasRowMajor, CblasNoTrans, CblasNoTrans, 
                m, n, k, alpha, A, k, B, n, beta, C, n);&lt;/PRE&gt;

&lt;P&gt;I want to know the right values of m, n, k to perform&lt;/P&gt;

&lt;P&gt;&amp;nbsp;&amp;nbsp; sub_matrix_C = sub_matrix_A * sub_matrix_B&lt;/P&gt;

&lt;P&gt;for the example above.&lt;/P&gt;

&lt;P&gt;Regards,&lt;/P&gt;

&lt;P&gt;Pawan&lt;/P&gt;

&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
    <pubDate>Wed, 07 May 2014 06:38:45 GMT</pubDate>
    <dc:creator>pawan_k_</dc:creator>
    <dc:date>2014-05-07T06:38:45Z</dc:date>
    <item>
      <title>Example of submatrix multiplication</title>
      <link>https://community.intel.com/t5/Intel-oneAPI-Math-Kernel-Library/Example-of-submatrix-multiplication/m-p/1005966#M18885</link>
      <description>&lt;P&gt;Hi,&lt;/P&gt;

&lt;P&gt;Are there any example of using dgemm for multiplying submatrices of two matrices?&lt;/P&gt;

&lt;P&gt;&amp;nbsp;&lt;/P&gt;

&lt;P&gt;Thanks,&lt;/P&gt;

&lt;P&gt;Pawan&lt;/P&gt;</description>
      <pubDate>Thu, 01 May 2014 17:08:03 GMT</pubDate>
      <guid>https://community.intel.com/t5/Intel-oneAPI-Math-Kernel-Library/Example-of-submatrix-multiplication/m-p/1005966#M18885</guid>
      <dc:creator>pawan_k_</dc:creator>
      <dc:date>2014-05-01T17:08:03Z</dc:date>
    </item>
    <item>
      <title>Pawan,</title>
      <link>https://community.intel.com/t5/Intel-oneAPI-Math-Kernel-Library/Example-of-submatrix-multiplication/m-p/1005967#M18886</link>
      <description>&lt;P&gt;Pawan,&lt;/P&gt;

&lt;P&gt;Can&amp;nbsp;you look into the examples directory inside MKL Installation folder?&lt;/P&gt;

&lt;P&gt;-Sridevi&lt;/P&gt;</description>
      <pubDate>Fri, 02 May 2014 20:43:23 GMT</pubDate>
      <guid>https://community.intel.com/t5/Intel-oneAPI-Math-Kernel-Library/Example-of-submatrix-multiplication/m-p/1005967#M18886</guid>
      <dc:creator>Sridevi_A_Intel</dc:creator>
      <dc:date>2014-05-02T20:43:23Z</dc:date>
    </item>
    <item>
      <title>Hi,</title>
      <link>https://community.intel.com/t5/Intel-oneAPI-Math-Kernel-Library/Example-of-submatrix-multiplication/m-p/1005968#M18887</link>
      <description>&lt;P&gt;Hi,&lt;/P&gt;

&lt;P&gt;I looked into the example on dgemm. It is not quiet clear how to set lda etc for subblocks.&lt;/P&gt;

&lt;P&gt;Here is an example I create.&lt;/P&gt;

&lt;P&gt;A = [ 0&amp;nbsp; 1&amp;nbsp; 2&amp;nbsp;&amp;nbsp; 3&amp;nbsp;&amp;nbsp; 4&amp;nbsp;&amp;nbsp; 5&amp;nbsp;&amp;nbsp; 6&amp;nbsp;&amp;nbsp; 7&amp;nbsp;&amp;nbsp; 8&amp;nbsp;&amp;nbsp; 9&lt;/P&gt;

&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 10 11 12 13 14 15 16 17 18 19&lt;/P&gt;

&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 20 21 22 23 24 25 26 27 28 29&lt;/P&gt;

&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 30 31 32 33 34 35 36 37 38 39&lt;/P&gt;

&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 40 41 42 43 44 45 46 47 48 49&lt;/P&gt;

&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 50 51 52 53 54 55 56 57 58 59&lt;/P&gt;

&lt;P&gt;]&lt;/P&gt;

&lt;P&gt;B&amp;nbsp; =&amp;nbsp; [&lt;/P&gt;

&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0&amp;nbsp; 1&amp;nbsp; 2&amp;nbsp; 3&amp;nbsp; 4&amp;nbsp; 5&lt;/P&gt;

&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 6&amp;nbsp; 7&amp;nbsp; 8&amp;nbsp; 9 10 11&lt;/P&gt;

&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 12 13 14 15 16 17&lt;/P&gt;

&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 18 19 20 21 22 23&lt;/P&gt;

&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 24 25 26 27 28 29&lt;/P&gt;

&lt;P&gt;]&lt;/P&gt;

&lt;P&gt;&amp;nbsp;&lt;/P&gt;

&lt;P&gt;C&amp;nbsp; = [ 0&amp;nbsp; 1&amp;nbsp; 2&amp;nbsp;&amp;nbsp; 3&amp;nbsp;&amp;nbsp; 4&amp;nbsp;&amp;nbsp; 5&amp;nbsp; 6&amp;nbsp;&amp;nbsp; 7&lt;/P&gt;

&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 8&amp;nbsp;&amp;nbsp; 9 10 11 12 13 14 15&lt;/P&gt;

&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 16 17 18 19 20 21 22 23&lt;/P&gt;

&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 24 25 26 27 28 29 30 31&lt;/P&gt;

&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 32 33 34 35 36 37 38 39&lt;/P&gt;

&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 40 41 42 43 44 45 46 47&lt;/P&gt;

&lt;P&gt;]&lt;/P&gt;

&lt;P&gt;All right! Now I want to operate on submatrices. Let us say I want to multiply a 4x3 submatrix of A as&lt;/P&gt;

&lt;P&gt;follows&lt;/P&gt;

&lt;P&gt;&amp;nbsp;&amp;nbsp;&lt;/P&gt;

&lt;P&gt;sub_matrix_A = [&amp;nbsp;&lt;/P&gt;

&lt;P&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; 14 15 16&lt;/P&gt;

&lt;P&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; 24 25 26&lt;/P&gt;

&lt;P&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; 34 35 36&lt;/P&gt;

&lt;P&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; 44 45 46&lt;/P&gt;

&lt;P&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; ]&lt;/P&gt;

&lt;P&gt;&amp;nbsp;&lt;/P&gt;

&lt;P&gt;with a 3x2 sub-matrix of B as follows&lt;/P&gt;

&lt;P&gt;sub_matrix_B = [&lt;/P&gt;

&lt;P&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; 7&amp;nbsp; 8&amp;nbsp;&lt;/P&gt;

&lt;P&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; 13 14&lt;/P&gt;

&lt;P&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; 19 20&lt;/P&gt;

&lt;P&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; ]&lt;/P&gt;

&lt;P&gt;to put in the 4x2 sub-matrix of C as follows&lt;/P&gt;

&lt;P&gt;sub_matrix_C = [&lt;/P&gt;

&lt;P&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 12 13&amp;nbsp;&lt;/P&gt;

&lt;P&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp; 20 21&amp;nbsp;&lt;/P&gt;

&lt;P&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 28 29&amp;nbsp;&lt;/P&gt;

&lt;P&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 36 37 &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;/P&gt;

&lt;P&gt;Could someone work out this example for me and future MKL users ? Below are&lt;/P&gt;

&lt;P&gt;the parameters to be filled.&lt;/P&gt;

&lt;PRE&gt;cblas_dgemm(CblasRowMajor, CblasNoTrans, CblasNoTrans, 
                m, n, k, alpha, A, k, B, n, beta, C, n);&lt;/PRE&gt;

&lt;P&gt;I want to know the right values of m, n, k to perform&lt;/P&gt;

&lt;P&gt;&amp;nbsp;&amp;nbsp; sub_matrix_C = sub_matrix_A * sub_matrix_B&lt;/P&gt;

&lt;P&gt;for the example above.&lt;/P&gt;

&lt;P&gt;Regards,&lt;/P&gt;

&lt;P&gt;Pawan&lt;/P&gt;

&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Wed, 07 May 2014 06:38:45 GMT</pubDate>
      <guid>https://community.intel.com/t5/Intel-oneAPI-Math-Kernel-Library/Example-of-submatrix-multiplication/m-p/1005968#M18887</guid>
      <dc:creator>pawan_k_</dc:creator>
      <dc:date>2014-05-07T06:38:45Z</dc:date>
    </item>
    <item>
      <title>Could anyone workout this</title>
      <link>https://community.intel.com/t5/Intel-oneAPI-Math-Kernel-Library/Example-of-submatrix-multiplication/m-p/1005969#M18888</link>
      <description>&lt;P&gt;Could anyone workout this example?&lt;/P&gt;

&lt;P&gt;Regards,&lt;/P&gt;

&lt;P&gt;Pawan&lt;/P&gt;</description>
      <pubDate>Mon, 19 May 2014 09:13:59 GMT</pubDate>
      <guid>https://community.intel.com/t5/Intel-oneAPI-Math-Kernel-Library/Example-of-submatrix-multiplication/m-p/1005969#M18888</guid>
      <dc:creator>pawan_k_</dc:creator>
      <dc:date>2014-05-19T09:13:59Z</dc:date>
    </item>
    <item>
      <title>I suggest that you perform</title>
      <link>https://community.intel.com/t5/Intel-oneAPI-Math-Kernel-Library/Example-of-submatrix-multiplication/m-p/1005970#M18889</link>
      <description>&lt;P&gt;I suggest that you perform this operation in two steps. Keeping in mind that CBLAS functions are wrappers around the underlying Fortran BLAS routines, and that terms such as "leading dimension" are confusing and possibly incorrect if the C convention of storing matrices as a 1-D array obtained from concatenation of the rows, examine the attached Fortran example and see if it does what you want.&lt;/P&gt;

&lt;P&gt;After noting that the results are as expected, we can move on to replicating the same using C and CBLAS, as in the second attached file.&lt;/P&gt;</description>
      <pubDate>Tue, 20 May 2014 20:00:00 GMT</pubDate>
      <guid>https://community.intel.com/t5/Intel-oneAPI-Math-Kernel-Library/Example-of-submatrix-multiplication/m-p/1005970#M18889</guid>
      <dc:creator>mecej4</dc:creator>
      <dc:date>2014-05-20T20:00:00Z</dc:date>
    </item>
    <item>
      <title>Hi Pawan, </title>
      <link>https://community.intel.com/t5/Intel-oneAPI-Math-Kernel-Library/Example-of-submatrix-multiplication/m-p/1005971#M18890</link>
      <description>&lt;P&gt;Hi Pawan,&amp;nbsp;&lt;/P&gt;

&lt;P&gt;You can calculate the sub_matrix multiply by the below parameters&lt;/P&gt;

&lt;P&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;double alpha = 1.0, beta = 0.;&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp; &amp;nbsp;int m=4; int k=3; int n=2;&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp; &amp;nbsp;int lda=10; // the stride of row&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp; &amp;nbsp;int ldb=6;&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp; &amp;nbsp;int ldc=8;&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp; &amp;nbsp;double * subA=&amp;amp;A[0][0]+14;&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp; &amp;nbsp;double * subB=&amp;amp;B[0][0]+7;&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp; &amp;nbsp;double * subC=&amp;amp;C[0][0]+12;&lt;/P&gt;

&lt;P&gt;I attached the cpp file for you reference.&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;

&lt;P&gt;#include &amp;lt;stdio.h&amp;gt;&lt;BR /&gt;
	#include &amp;lt;stdlib.h&amp;gt;&lt;BR /&gt;
	#include &amp;lt;time.h&amp;gt;&lt;BR /&gt;
	#include &amp;lt;mkl.h&amp;gt;&lt;/P&gt;

&lt;P&gt;void init_arr(int N, double* a);&lt;/P&gt;

&lt;P&gt;int main(int argc, char* argv[])&lt;BR /&gt;
	{&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp; &amp;nbsp;double A[6][10];&amp;nbsp;&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp; &amp;nbsp;double B[5][6];&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp; &amp;nbsp;double C[6][8];&amp;nbsp;&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp; &amp;nbsp;init_arr(60,&amp;amp;A[0][0]);&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp; &amp;nbsp;init_arr(30,&amp;amp;B[0][0]);&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp; &amp;nbsp;init_arr(48,&amp;amp;C[0][0]);&lt;/P&gt;

&lt;P&gt;&amp;nbsp; &amp;nbsp; double alpha = 1.0, beta = 0.;&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp; &amp;nbsp;int m=4; int k=3; int n=2;&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp; &amp;nbsp;int lda=10; // the stride of row&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp; &amp;nbsp;int ldb=6;&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp; &amp;nbsp;int ldc=8;&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp; &amp;nbsp;double * subA=&amp;amp;A[0][0]+14;&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp; &amp;nbsp;double * subB=&amp;amp;B[0][0]+7;&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp; &amp;nbsp;double * subC=&amp;amp;C[0][0]+12;&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp; &amp;nbsp;cblas_dgemm(CblasRowMajor,CblasNoTrans,CblasNoTrans,m,n,k,alpha,subA,lda,subB,ldb,beta,subC,ldc);&lt;/P&gt;

&lt;P&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;printf("Sub Matrix C(mxn): %d x %d\n", m, n);&lt;/P&gt;

&lt;P&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;for (int i=0;i&amp;lt;m;i++){&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp; &amp;nbsp;for (int j=0;j&amp;lt;2;j++) {&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;printf("%g\t",subC[ldc*i+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;printf("\n");}&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp; &amp;nbsp;return 1;&lt;BR /&gt;
	}&lt;/P&gt;

&lt;P&gt;&lt;BR /&gt;
	void init_arr(int N, double* a)&lt;BR /&gt;
	{&amp;nbsp;&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp; &amp;nbsp;int i=0;&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp; &amp;nbsp;for(i=0; i&amp;lt;N;i++)&amp;nbsp;&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;a&lt;I&gt; = i;&amp;nbsp;&lt;BR /&gt;
	}&lt;/I&gt;&lt;/P&gt;

&lt;P&gt;build it with mkl library and get&amp;nbsp;&lt;/P&gt;

&lt;P&gt;The result is as below&amp;nbsp;&lt;/P&gt;

&lt;P&gt;Sub Matrix C(mxn): 4 x 2&lt;BR /&gt;
	597 &amp;nbsp; &amp;nbsp; 642&lt;BR /&gt;
	987 &amp;nbsp; &amp;nbsp; 1062&lt;BR /&gt;
	1377 &amp;nbsp; &amp;nbsp;1482&lt;BR /&gt;
	1767 &amp;nbsp; &amp;nbsp;1902&lt;BR /&gt;
	Press any key to continue . . .&lt;/P&gt;

&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Wed, 21 May 2014 07:02:57 GMT</pubDate>
      <guid>https://community.intel.com/t5/Intel-oneAPI-Math-Kernel-Library/Example-of-submatrix-multiplication/m-p/1005971#M18890</guid>
      <dc:creator>Ying_H_Intel</dc:creator>
      <dc:date>2014-05-21T07:02:57Z</dc:date>
    </item>
  </channel>
</rss>

