help-octave
[Top][All Lists]

## Re: Hardware to run Octave

 From: Jose Ramom Flores das Seixas Subject: Re: Hardware to run Octave Date: Mon, 22 Feb 2021 22:11:21 +0100 User-agent: Mozilla/5.0 (X11; Linux x86_64; rv:68.0) Gecko/20100101 Thunderbird/68.10.0

Às 06:38 de 20/02/21, Etienne Grossmann escreveu:

Hi Ramon,

sorry, I don't have much advice to offer on a new device, I use old hardware too, but don't have bulky tasks for Octave.

About the parallel package. I never had luck either until today when I saw actual examples here: http://wiki.octave.org/Parallel_package. Did you try these examples? They kind of work for me (w/ Octave 6.1):

>> function y = my_func(x), y = 42 * x; end      # Try with command-line-defined function
>> pararrayfun (4, @my_func, 1:8)
>> my_func(3)
ans = 126
>> pararrayfun (4, @(x) my_func(x), 1:8)          # Why no output?
# Try with file-defined function
>> system('echo "function y = my_func2(x), y = 42 * x; end" > my_func2.m')
ans = 0
>> pararrayfun (4, @(x) my_func2(x), 1:8)         # Still no output?
>> my_func2(4)
ans = 168
>> arrayfun (@(x) my_func2(x), 1:8)               # This works but is not parallel
ans =

42    84   126   168   210   252   294   336

>> pararrayfun (4, @(x) my_func2(x), 1:8)
>> z = pararrayfun (4, @(x) my_func2(x), 1:8)          # Aha! A return value is needed?
z =

42    84   126   168   210   252   294   336

>> z = pararrayfun (4, @(x) my_func(x), 1:8)      # That's not the end of the story
z =

-1  -1  -1  -1  -1  -1  -1  -1

>> z = pararrayfun (4, @my_func, 1:8)             # CL-defined my_func() is jinxed?
z =

-1  -1  -1  -1  -1  -1  -1  -1

>> z = pararrayfun (4, @my_func2, 1:8)            # But file-defined my_func2() seems OK
z =

42    84   126   168   210   252   294   336
# Let's check parallelism... LGTM
>> system('echo ''function y = my_delay_func(x), y = 42 * x; printf("Starting %i\\n", x); pause(2); printf ("--Ending %i\\n", x); end'' > my_delay_func.m')
ans = 0
>> system ('cat my_delay_func.m')
function y = my_delay_func(x), y = 42 * x; printf("Starting %i\n", x); pause(2); printf ("--Ending %i\n", x); end
ans = 0
>> my_delay_func(3)
Starting 3
--Ending 3
ans = 126
>> z = pararrayfun (4, @my_delay_func, 1:8)
Starting 1
Starting 4
Starting 3
Starting 2
--Ending 1
Starting 5
--Ending 4
Starting 6
--Ending 3
--Ending 2
Starting 7
Starting 8
--Ending 5
--Ending 6
--Ending 7
--Ending 8
z =

42    84   126   168   210   252   294   336

Does this not work for you? If not, what output do you get w/ the above command? What version of Octave are you using?

HTH,

Etienne

On Thu, Feb 18, 2021 at 7:47 AM Jose Ramom Flores das Seixas <jose.ramom.flores.das.seixas@gmail.com> wrote:
Hi

As part of a research project, I wrote a program that takes about 17
hours to produce the result, using only one of the processor cores. I
tried to use the parallel package, but without success.

Since the amount of time it takes to see the results is so long, the
process of checking and correcting errors is very slow, not to mention
that in my office the power goes out every now and then, wasting hours
spent on calculations.

My current computer will soon be 10 years old, and I was thinking of
buying a new one. Its CPU is an Intel i52500K @ 3.30 GHz with 4 cores

One of the goals I have for the new PC is for it to run Octave nicely.
Previously processors increased their power by, among other things,
increasing the processor speed. But for a number of years now, the speed
of new processors has not increased, and other methods have been used to
improve them, such as using more cores.

So I'd like to read your opinions on which hardware would be more
suitable for running octave.

Surely yours

Ramom

Thanks for the tips.

I was able to reproduce the examples, and even made new attempts successfully. But I have not yet been able to apply the pararrayfun command to my program, since the function to be parallelized is quite complex. I'm still trying it.

Surely yours
Ramom