在 GNU Octave 中设置基本的 pararrayfun
Setting up basic pararrayfun in GNU Octave
我有一个文件testPowr.m
function testPowr(x)
printf(x^2)
end
我正在与 testPowr.m
位于同一文件夹中的另一个文件 main.m
中尝试以下操作:
clear; clc;
pkg load parallel;
vector = 1:10;
fun = @(x) x^2;
pararrayfun(nproc, @(n) testPowr(n), vector)
%a2 = pararrayfun(nproc, fun, vector)
但是 testPowr
似乎对 pararrayfun
不可见,因为上面的注释行有效。我尝试了多种不同的语法,但我无法正确使用它。
我在其中一种语法中遇到以下错误:
execution error
error: __parcellfun_get_next_result__: could not receive result
error: called from
parcellfun at line 201 column 16
pararrayfun at line 85 column 28
main at line 5 column 1
问题是 testPowr
没有 return 值。
pararrayfun
收集每个函数调用的 return 值,但您的函数所做的只是将结果打印到标准输出。您可以通过 returning 解决此问题,如下所示:
function xp = testPowr (x)
xp = x^2;
endfunction
您的脚本将正常运行:
octave> pkg load parallel;
octave> rv = pararrayfun (nproc, @(n) testPowr(n), 1:10)
parcellfun: 10/10 jobs done
rv =
1 4 9 16 25 36 49 64 81 100
我有一个文件testPowr.m
function testPowr(x)
printf(x^2)
end
我正在与 testPowr.m
位于同一文件夹中的另一个文件 main.m
中尝试以下操作:
clear; clc;
pkg load parallel;
vector = 1:10;
fun = @(x) x^2;
pararrayfun(nproc, @(n) testPowr(n), vector)
%a2 = pararrayfun(nproc, fun, vector)
但是 testPowr
似乎对 pararrayfun
不可见,因为上面的注释行有效。我尝试了多种不同的语法,但我无法正确使用它。
我在其中一种语法中遇到以下错误:
execution error
error: __parcellfun_get_next_result__: could not receive result
error: called from
parcellfun at line 201 column 16
pararrayfun at line 85 column 28
main at line 5 column 1
问题是 testPowr
没有 return 值。
pararrayfun
收集每个函数调用的 return 值,但您的函数所做的只是将结果打印到标准输出。您可以通过 returning 解决此问题,如下所示:
function xp = testPowr (x)
xp = x^2;
endfunction
您的脚本将正常运行:
octave> pkg load parallel;
octave> rv = pararrayfun (nproc, @(n) testPowr(n), 1:10)
parcellfun: 10/10 jobs done
rv =
1 4 9 16 25 36 49 64 81 100