Re: Instructions for Installing BLAS and LAPACK library on Octave 5.2.0

Ian McCallion <[email protected]>
Newsgroups gmane.comp.gnu.octave.general
Message-ID <CAFgLC_HT6Fgvhw3CKkXEHg=OT61+gWD-33Kn7_6qeuqJ1UO-Hg@mail.gmail.com>
On Tue, 29 Sep 2020 at 17:54, Ian McCallion <[email protected]> wrote:
>
>
>
> On Tuesday, 29 September 2020, Nicholas Jankowski <[email protected]> wrote:
>>>>
>>>> Downloading Octave 5.2.0-64 bit executable from the official GNU Octave website(https://www.gnu.org/software/octave/download.html#ms-windows) for Win 10
>>>> Installing the same and checking with the default OPENBLAS library.
>>>> Assigning the value for the environment variable  OPENBLAS_NUM_THREADS = "the number of processors we need to utilize"
>>>
>>>
>>> The second step is not necessary. Otherwise yes.
>>>
>>> Ian
>>
>>
>>  Do you mean the installing or assigning step?
>>
> My apologies. I was away from my desk any failed to give the question my full attention.
>
> Install ( of course), but the default installation does result in libopenblas.dll being copied to libblass.dll so that "checking with the default OPENBLAS library" is not necessary.
>
>> In my default config zip install, OPENBLAS_NUM_THREADS was empty.  I set it to different values from 1-4 since I have a 4 core machine, and didn't notice any real difference running that test routine you posted.  i extended the 1e8 to 2e8 and 1e9 to get meaningful runtimes, but there seemed to be no difference changing the value of that option.  in all cases multiple cores were taxed on execution.  It's a managed machine so I don't have Process Explorer to actually verify the thread count, so maybe other things are happening that I'm not noticing.
>
>
> I have the same result. I have task manager and whatever the value of  OPENBLAS_NUM_THREADS the execution time is the same and the cpu utilisation peaks at the same level so it would appear the environment variable is being ignored. I will investigate further as my system uses this, succesfully I believe!

Progress. It all comes flooding back to me now! You must set
OPENBLAS_NUM_THREADS before launching Octave, which is of course a
real pain and cannot surely be justified as you might actually want to
change the number of threads used. I Imagine the DLL is loaded at
Octave startup and the value of OPENBLAS_NUM_THREADS is read at that
time.

If you don't set OPENBLAS_NUM_THREADS the default is to use enough
threads to consume most the CPU fully, and on my system I get

  >> tic; a=rand(10000); b=a*a;toc
  Elapsed time is 13.0891 seconds.

setting OPENBLAS_NUM_THREADS=1 and then calling Octave:
   >> tic; a=rand(10000); b=a*a;toc
   Elapsed time is 42.447 seconds.

One way to set OPENBLAS_NUM_THREADS which avoid leaving the Octave
environment is:

  >> setenv('OPENBLAS_NUM_THREADS','1')
  >> system C:/Octave/Octave-5.2.0/octave.vbs

This launches a second copy of Octave with the first as parent hence
inheriting the environment variables.

Cheers... Ian
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.