<?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 Re: Singular value decomposition function DBDSQR in Intel® oneAPI Math Kernel Library</title>
    <link>https://community.intel.com/t5/Intel-oneAPI-Math-Kernel-Library/Singular-value-decomposition-function-DBDSQR/m-p/891531#M10459</link>
    <description>&lt;DIV style="margin:0px;"&gt;
&lt;DIV id="quote_reply" style="width: 100%; margin-top: 5px;"&gt;
&lt;DIV style="margin-left:2px;margin-right:2px;"&gt;Quoting - &lt;A href="https://community.intel.com/en-us/profile/350272"&gt;roland-duerr&lt;/A&gt;&lt;/DIV&gt;
&lt;DIV style="background-color:#E5E5E5; padding:5px;border: 1px; border-style: inset;margin-left:2px;margin-right:2px;"&gt;&lt;EM&gt;
&lt;DIV style="margin:0px;"&gt;&lt;/DIV&gt;
May I ask which one is better? Is it worth to switch from GEBRD/BDSQR to GESVD?&lt;BR /&gt;Especially it is interesting to me which one is faster and whether there are differences in precision.&lt;BR /&gt;&lt;/EM&gt;&lt;/DIV&gt;
&lt;/DIV&gt;
&lt;/DIV&gt;
Roland,&lt;BR /&gt;&lt;BR /&gt;I need to confess that I have not-that-deep knowledge of the algorithm details but I believe GESVD should be fine (this should include calls to &lt;EM&gt;GEBRD &lt;/EM&gt;and &lt;EM&gt;BDSQR).&lt;/EM&gt; You have just a single call. In any case it's superior to LINPACK implementation (as far as I know).&lt;BR /&gt;&lt;BR /&gt;The other algorithm you can use and should be much faster for large problem is &lt;STRONG&gt;&lt;SPAN class="option"&gt;?bdsdc&lt;/SPAN&gt;&lt;/STRONG&gt; and uses the "divide-and-conquer" algorithm (see MKL docs).&lt;BR /&gt;&lt;BR /&gt;A.&lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;</description>
    <pubDate>Thu, 20 Aug 2009 00:58:55 GMT</pubDate>
    <dc:creator>ArturGuzik</dc:creator>
    <dc:date>2009-08-20T00:58:55Z</dc:date>
    <item>
      <title>Singular value decomposition function DBDSQR</title>
      <link>https://community.intel.com/t5/Intel-oneAPI-Math-Kernel-Library/Singular-value-decomposition-function-DBDSQR/m-p/891528#M10456</link>
      <description>To calculate the singular values of a general matrix, the mkl tutorial says two functions are enough, DGERBD followed by DBDSQR. But it seems like another function (DORGBR) needs to be used in the middle.
&lt;DIV&gt;&lt;BR /&gt;&lt;/DIV&gt;
&lt;DIV&gt;Is the tutorial (mkl_man.pdf) right?&lt;/DIV&gt;</description>
      <pubDate>Tue, 18 Aug 2009 21:21:36 GMT</pubDate>
      <guid>https://community.intel.com/t5/Intel-oneAPI-Math-Kernel-Library/Singular-value-decomposition-function-DBDSQR/m-p/891528#M10456</guid>
      <dc:creator>CO_Traut</dc:creator>
      <dc:date>2009-08-18T21:21:36Z</dc:date>
    </item>
    <item>
      <title>Re: Singular value decomposition function DBDSQR</title>
      <link>https://community.intel.com/t5/Intel-oneAPI-Math-Kernel-Library/Singular-value-decomposition-function-DBDSQR/m-p/891529#M10457</link>
      <description>&lt;DIV style="margin:0px;"&gt;
&lt;DIV id="quote_reply" style="width: 100%; margin-top: 5px;"&gt;
&lt;DIV style="margin-left:2px;margin-right:2px;"&gt;Quoting - &lt;A href="https://community.intel.com/en-us/profile/437900"&gt;CO_Traut&lt;/A&gt;&lt;/DIV&gt;
&lt;DIV style="background-color:#E5E5E5; padding:5px;border: 1px; border-style: inset;margin-left:2px;margin-right:2px;"&gt;&lt;EM&gt;To calculate the singular values of a general matrix, the mkl tutorial says two functions are enough, DGERBD followed by DBDSQR. But it seems like another function (DORGBR) needs to be used in the middle.
&lt;DIV&gt;&lt;BR /&gt;&lt;/DIV&gt;
&lt;DIV&gt;Is the tutorial (mkl_man.pdf) right?&lt;/DIV&gt;
&lt;/EM&gt;&lt;/DIV&gt;
&lt;/DIV&gt;
&lt;/DIV&gt;
&lt;BR /&gt;&lt;EM&gt;DGERBD/&lt;/EM&gt;&lt;EM&gt;DBDSQR&lt;/EM&gt; should be enough. You can also call GESVD and get your matrix decomposed (including list of singular values (sorted)).&lt;BR /&gt;&lt;BR /&gt;A.&lt;BR /&gt;</description>
      <pubDate>Wed, 19 Aug 2009 00:21:57 GMT</pubDate>
      <guid>https://community.intel.com/t5/Intel-oneAPI-Math-Kernel-Library/Singular-value-decomposition-function-DBDSQR/m-p/891529#M10457</guid>
      <dc:creator>ArturGuzik</dc:creator>
      <dc:date>2009-08-19T00:21:57Z</dc:date>
    </item>
    <item>
      <title>Re: Singular value decomposition function DBDSQR</title>
      <link>https://community.intel.com/t5/Intel-oneAPI-Math-Kernel-Library/Singular-value-decomposition-function-DBDSQR/m-p/891530#M10458</link>
      <description>&lt;DIV style="margin:0px;"&gt;
&lt;DIV id="quote_reply" style="width: 100%; margin-top: 5px;"&gt;
&lt;DIV style="margin-left:2px;margin-right:2px;"&gt;Quoting - &lt;A href="https://community.intel.com/en-us/profile/342379"&gt;ArturGuzik&lt;/A&gt;&lt;/DIV&gt;
&lt;DIV style="background-color:#E5E5E5; padding:5px;border: 1px; border-style: inset;margin-left:2px;margin-right:2px;"&gt;&lt;EM&gt; &lt;BR /&gt;&lt;EM&gt;DGERBD/&lt;/EM&gt;&lt;EM&gt;DBDSQR&lt;/EM&gt; should be enough. You can also call GESVD and get your matrix decomposed (including list of singular values (sorted)).&lt;BR /&gt;&lt;BR /&gt;&lt;/EM&gt;&lt;/DIV&gt;
&lt;/DIV&gt;
&lt;/DIV&gt;
&lt;BR /&gt;May I ask which one is better? Is it worth to switch from GEBRD/BDSQR to GESVD?&lt;BR /&gt;&lt;BR /&gt;Especially it is interesting to me which one is faster and whether there are differences in precision.&lt;BR /&gt;</description>
      <pubDate>Wed, 19 Aug 2009 08:45:44 GMT</pubDate>
      <guid>https://community.intel.com/t5/Intel-oneAPI-Math-Kernel-Library/Singular-value-decomposition-function-DBDSQR/m-p/891530#M10458</guid>
      <dc:creator>roland-duerr</dc:creator>
      <dc:date>2009-08-19T08:45:44Z</dc:date>
    </item>
    <item>
      <title>Re: Singular value decomposition function DBDSQR</title>
      <link>https://community.intel.com/t5/Intel-oneAPI-Math-Kernel-Library/Singular-value-decomposition-function-DBDSQR/m-p/891531#M10459</link>
      <description>&lt;DIV style="margin:0px;"&gt;
&lt;DIV id="quote_reply" style="width: 100%; margin-top: 5px;"&gt;
&lt;DIV style="margin-left:2px;margin-right:2px;"&gt;Quoting - &lt;A href="https://community.intel.com/en-us/profile/350272"&gt;roland-duerr&lt;/A&gt;&lt;/DIV&gt;
&lt;DIV style="background-color:#E5E5E5; padding:5px;border: 1px; border-style: inset;margin-left:2px;margin-right:2px;"&gt;&lt;EM&gt;
&lt;DIV style="margin:0px;"&gt;&lt;/DIV&gt;
May I ask which one is better? Is it worth to switch from GEBRD/BDSQR to GESVD?&lt;BR /&gt;Especially it is interesting to me which one is faster and whether there are differences in precision.&lt;BR /&gt;&lt;/EM&gt;&lt;/DIV&gt;
&lt;/DIV&gt;
&lt;/DIV&gt;
Roland,&lt;BR /&gt;&lt;BR /&gt;I need to confess that I have not-that-deep knowledge of the algorithm details but I believe GESVD should be fine (this should include calls to &lt;EM&gt;GEBRD &lt;/EM&gt;and &lt;EM&gt;BDSQR).&lt;/EM&gt; You have just a single call. In any case it's superior to LINPACK implementation (as far as I know).&lt;BR /&gt;&lt;BR /&gt;The other algorithm you can use and should be much faster for large problem is &lt;STRONG&gt;&lt;SPAN class="option"&gt;?bdsdc&lt;/SPAN&gt;&lt;/STRONG&gt; and uses the "divide-and-conquer" algorithm (see MKL docs).&lt;BR /&gt;&lt;BR /&gt;A.&lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;</description>
      <pubDate>Thu, 20 Aug 2009 00:58:55 GMT</pubDate>
      <guid>https://community.intel.com/t5/Intel-oneAPI-Math-Kernel-Library/Singular-value-decomposition-function-DBDSQR/m-p/891531#M10459</guid>
      <dc:creator>ArturGuzik</dc:creator>
      <dc:date>2009-08-20T00:58:55Z</dc:date>
    </item>
    <item>
      <title>Re: Singular value decomposition function DBDSQR</title>
      <link>https://community.intel.com/t5/Intel-oneAPI-Math-Kernel-Library/Singular-value-decomposition-function-DBDSQR/m-p/891532#M10460</link>
      <description>&lt;DIV style="margin:0px;"&gt;
&lt;DIV id="quote_reply" style="margin-top: 5px; width: 100%;"&gt;
&lt;DIV style="margin-left:2px;margin-right:2px;"&gt;Quoting - &lt;A href="https://community.intel.com/en-us/profile/437900"&gt;CO_Traut&lt;/A&gt;&lt;/DIV&gt;
&lt;DIV style="background-color:#E5E5E5; padding:5px;border: 1px; border-style: inset;margin-left:2px;margin-right:2px;"&gt;&lt;EM&gt;To calculate the singular values of a general matrix, the mkl tutorial says two functions are enough, DGERBD followed by DBDSQR. But it seems like another function (DORGBR) needs to be used in the middle.
&lt;DIV&gt;&lt;BR /&gt;&lt;/DIV&gt;
&lt;DIV&gt;Is the tutorial (mkl_man.pdf) right?&lt;/DIV&gt;
&lt;/EM&gt;&lt;/DIV&gt;
&lt;/DIV&gt;
&lt;/DIV&gt;
&lt;BR /&gt;Hi,&lt;BR /&gt;&lt;BR /&gt;it depends on whether you need singular vectors along with singular values, or not. In case you need full SVD you certainly need dorgbr to restore orthogonal matrix from its elementary reflectors representation. In case you don't need vectors, there's no need to call dorgbr.&lt;BR /&gt;&lt;BR /&gt;MKL manual doesn't state ina general text that dgebrd and dbdsqr is enough, it just describes the decomposition - main (necessary) parts of the algorithm - just because the full description of all the branches would be too excessive. dorgbr isn't a routine making some decomposition - it just restores an orthogonal form.At last, dorgbr is explicitly mentioned in Figure 4-1 Decision Tree: Singular Value Decomposition at the appropriate bar.&lt;BR /&gt;&lt;BR /&gt;Michael,&lt;BR /&gt;MKL Engineer.</description>
      <pubDate>Wed, 02 Sep 2009 11:01:53 GMT</pubDate>
      <guid>https://community.intel.com/t5/Intel-oneAPI-Math-Kernel-Library/Singular-value-decomposition-function-DBDSQR/m-p/891532#M10460</guid>
      <dc:creator>Michael_C_Intel4</dc:creator>
      <dc:date>2009-09-02T11:01:53Z</dc:date>
    </item>
  </channel>
</rss>

