[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: Execution time for SVD
From: |
Kai Torben Ohlhus |
Subject: |
Re: Execution time for SVD |
Date: |
Thu, 30 Jan 2020 16:11:12 +0900 |
User-agent: |
Mozilla/5.0 (X11; Linux x86_64; rv:68.0) Gecko/20100101 Thunderbird/68.4.1 |
On 1/30/20 4:24 AM, Henk Borsje wrote:
> I am at a loss explaining the difference in time for Octave 5.1.90 to
> execute the following statements:
>
>
>
> tic; svd(rand(3000));
> toc
> (I a)
>
> Elapsed time is 11.3338 seconds
>
>
>
> tic; [a,b,c] = svd(rand(3000)); toc
> (II a)
>
> Elapsed time is 148.349 seconds.
>
>
>
> tic; a = rand(3000);b=rand(3000);c=rand(3000);
> toc (III a)
>
> Elapsed time is 0.263816 seconds.
>
>
>
> Why is there this very large difference in execution time in statement
> (II) ?
>
>
>
> For comparison, here is what MATLAB does:
>
>
>
> tic; svd(rand(3000));
> toc
> (I b)
>
> Elapsed time is 10.845707 seconds.
>
>
>
> tic; [a,b,c] = svd(rand(3000));
> toc (II b)
>
> Elapsed time is 13.388534 seconds.
>
>
>
> tic; a = rand(3000);b = rand(3000); c = rand(3000);
> toc (III b)
>
> Elapsed time is 0.252371 seconds.
>
>
>
> I have repeated these statements several times and found the reported
> times to be consistent.
>
>
>
> Henk Borsje
>
You can try to change the svd driver function to "gesdd" [1], if it
proves to be stable enough for your purpose. Read the bug cited in [1].
>> svd_driver ("gesdd");
>> tic; svd(rand(3000)); toc
Elapsed time is 13.2037 seconds.
>> tic; [a,b,c] = svd(rand(3000)); toc
Elapsed time is 16.3084 seconds.
HTH,
Kai
[1] https://octave.org/doc/v5.1.0/XREFsvd_005fdriver.html