# Octave, ATLAS, and Large Matricies

4 messages
Open this post in threaded view
|

## Octave, ATLAS, and Large Matricies

 I've been careful to vectorize my programs so that they'll be efficient.  My computer has lots of RAM (1TB) and many cores (32), but when it comes to matrix operations, performance is less than what I would expect. Here's an example of a simple program. A = rand(162000000,15)>0.5; B = rand(162000000,15); C = rand(162000000,15); tic; D = ~A&B~=0; B(D) = B(D)+C(D); toc; When I run this program, the "tic/toc" section takes 85.2911 seconds. Because these are all matrix operations, I expected this to run very quickly.  However I later learned that Octave doesn't use multiple cores, by default, and that compiling with ATLAS may allow Octave to use multiple cores.  Am I correct to believe that compiling Octave with ATLAS would speed up this program, or would multi-threading not help this situation? I have no experience with multi-threaded programs.  Am I on the right track? Would compiling, with ATLAS, improve performance in this scenario? If anyone has any experience with an ATLAS/Octave installation, I'd love to hear your thoughts on this.  Thanks for your time.   -- Sent from: http://octave.1599824.n4.nabble.com/Octave-General-f1599825.html_______________________________________________ Help-octave mailing list [hidden email] https://lists.gnu.org/mailman/listinfo/help-octave
Open this post in threaded view
|

## Re: Octave, ATLAS, and Large Matricies

 On Mon, Sep 11, 2017 at 12:26 PM, evansste wrote:I've been careful to vectorize my programs so that they'll be efficient.  My computer has lots of RAM (1TB) and many cores (32), but when it comes to matrix operations, performance is less than what I would expect. Here's an example of a simple program. A = rand(162000000,15)>0.5; B = rand(162000000,15); C = rand(162000000,15); tic; D = ~A&B~=0; B(D) = B(D)+C(D); toc; When I run this program, the "tic/toc" section takes 85.2911 seconds. Because these are all matrix operations, I expected this to run very quickly.  However I later learned that Octave doesn't use multiple cores, by default, and that compiling with ATLAS may allow Octave to use multiple cores.  Am I correct to believe that compiling Octave with ATLAS would speed up this program, or would multi-threading not help this situation? I have no experience with multi-threaded programs.  Am I on the right track? Would compiling, with ATLAS, improve performance in this scenario? If anyone has any experience with an ATLAS/Octave installation, I'd love to hear your thoughts on this.  Thanks for your time. ​I do not believe those particular operations involve blas/lapack library, so I do not think using threaded atlas (or openblas) would help. But you would see a lot of improvements on things likea\b or a*b​Dmitri.-- ​ _______________________________________________ Help-octave mailing list [hidden email] https://lists.gnu.org/mailman/listinfo/help-octave