Comment 9 for bug 1911400

Revision history for this message
Christian Ehrhardt  (paelzer) wrote :

This can be split in several secitons.
- load the lib from the build-dir or the system pkg (the latter in this case)
- test file in inst/*: pararrayfun.m, pserver.m, parcellfun.m in our case
- checking C++ files
- run tests in debian/check.m

Knowing that we can simplify this to:

$ cat > foo << EOF
pkg ('load', 'parallel');
test ("inst/pararrayfun.m", "verbose");
EOF
$ xvfb-run -a octave-cli --no-history --silent --no-init-file --no-window-system foo

That is much better ...

That can be used in the interactive mode like:

And that can be used like this then:
$ octave-cli
octave:1> pkg ('load', 'parallel');
octave:2> pararrayfun (2, @ (x, y) x * y, [1, 2, 3, 4], [2, 3, 4, 5], "ChunksPerProc", 2, "CumFunc", @ (a, b) a + b), 40
error: int32 scalar cannot be indexed with {
error: called from
    parcellfun at line 206 column 25
    chunk_parcellfun at line 47 column 25
    parcellfun at line 142 column 28
    pararrayfun at line 85 column 28

Even that can be more simplified:

Good:
octave:33> pararrayfun (1, @ (x, y) x * y, [1, 2], "ChunksPerProc", 1, "CumFunc", @ (a, b) a + b), 40
ans = 40

Bad:
octave:35> pararrayfun (1, @ (x, y) x * y, [1, 2], "ChunksPerProc", 2, "CumFunc", @ (a, b) a + b), 40
error: int32 scalar cannot be indexed with {
error: called from
    parcellfun at line 206 column 25
    pararrayfun at line 85 column 28

ChunksPerProc > 1 breaks it.
Might it be that we need at least 2 vcpus for the test?

Going into a 4 cpu env where things worked fine before.
But there it is also broken:

octave:1> pkg ('load', 'parallel');
octave:2> pararrayfun (1, @ (x, y) x * y, [1, 2], "ChunksPerProc", 2, "CumFunc", @ (a, b) a + b), 40
error: int32 scalar cannot be indexed with {
error: called from
    parcellfun at line 206 column 25
    pararrayfun at line 85 column 28