1,228

edits

Jump to navigation
Jump to search

m
~~</code>~~}} ~~The ~~With {{~~Codeline~~codeline|"~~ChunksPerProc~~UniformOutput", false}} ~~option is mandatory with ~~, the outputs are contained in cell arrays (one cell per slice). In the sample above, both {{~~Codeline~~codeline|~~"Vectorized", true~~eigenvectors}} and {{codeline|eigenvalues}}~~. ~~are {{~~Codeline~~codeline|~~1~~1x5}} ~~means that each proc will do its job in one shot (chunk)~~cell arrays. ~~This number ~~ == cluster operation == Documentation can be ~~increased to use less memory for instance~~found in the {{codeline|README. ~~A higher number of ~~parallel}} or {{~~Codeline~~codeline|~~"ChunksPerProc"~~README.bw}} ~~allows also more flexibility in case of long calculations on a busy machine. If one cpu has finished all its jobs~~files, ~~it can take over ~~located inside the ~~pending jobs ~~{{codeline|doc}} directory of ~~another~~the parallel package. [[Category:Octave Forge]]

Remove redundant Category:Packages. Categories at bottom.

The Parallel execution package provides utilities to work with clusters, but also functions to parallelize work among cores of a single machine.

To install: {{Codeline|pkg install -forge parallel}}

And then, once on each octave session, {{Codeline|pkg load parallel}}

== multicore parallelization (parcellfun, pararrayfun) ==

See also the [[NDpar package]], for an extension of these functions to N-dimensional arrays

=== calculation on a single array ===

</pre>

}}

should output

<code><pre>

parcellfun: 10/10 jobs done

1 4 9 16 25 36 49 64 81 100

</pre></code>

{{Codeline|nproc}} returns the number of cpus available (number of cores or twice as much with hyperthreading). One can use {{Codeline|nproc - 1}} instead, in order to leave one cpu free for instance.

should output

<code><pre>

parcellfun: 4/4 jobs done

vector_y =

1 4 9 16 25 36 49 64 81 100

</pre></code>

The {{Codeline|"ChunksPerProc"}} option is mandatory with {{Codeline|"Vectorized", true}}. {{Codeline|1}} means that each proc will do its job in one shot (chunk). This number can be increased to use less memory for instance. A higher number of {{Codeline|"ChunksPerProc"}} allows also more flexibility in case of long calculations on a busy machine. If one cpu has finished all its jobs, it can take over the pending jobs of another.

=== Output in cell arrays ===

The following sample code was an answer to [http://stackoverflow.com/questions/27422219/for-every-row-reshape-and-calculate-eigenvectors-in-a-vectorized-way this question]. The goal was to diagonalize 2x2 matrices contained as rows of a 2d array (each row of the array being a flattened 2x2 matrix).

{{code|diagonalize NxN matrices contained in an array|

<pre>

A = [0.6060168 0.8340029 0.0064574 0.7133187;

0.6325375 0.0919912 0.5692567 0.7432627;

0.8292699 0.5136958 0.4171895 0.2530783;

0.7966113 0.1975865 0.6687064 0.3226548;

0.0163615 0.2123476 0.9868179 0.1478827];

N = 2;

[eigenvectors, eigenvalues] = pararrayfun(nproc,

@(row_idx) eig(reshape(A(row_idx, :), N, N)),

1:rows(A), "UniformOutput", false)

</pre>

Retrieved from "https://wiki.octave.org/Special:MobileDiff/5012...11982"

- Not logged in
- Talk
- Contributions
- Create account
- Log in