Too many output arguments while launching workers with parfeval

16 次查看(过去 30 天)
I try to write and read in parallel to/from a hardware device (under Linux) for the purpose of testing the device and it must happen infinitely until instructed to stop.
script:
write_file='testdata';
read_file='result';
pattern=int16([ 0x0102, 0x0304, 0x0506, 0x0708; %test pattern is chosen so individual bytes could be identified
0x090a, 0x0b0c, 0x0d0e, 0x0f10;
0x1112, 0x1314, 0x1516, 0x1718;
0x191a, 0x1b1c, 0x1d1e, 0x1f20]);
repetition=128;
testdata=repmat(pattern, 1, 8192*repetition); %replicate for 32768* repetition test data points
read_dim=[4, 32768*repetition];
write_thread=parfeval(@writeXillybus, 2, write_file, testdata);
read_thread=parfeval(@readXillybus, 2, read_file, read_dim);
pause %let the workers run indefinitely
cancel(write_thread);
cancel(read_thread);
functions:
function out=writeXillybus(device, testdata)
test_fid=fopen(['/dev/xillybus_', device], 'w');%open device file
cleanup = onCleanup(@() fclose(test_fid));
while(true)
out=fwrite(test_fid, testdata,'int16');
end
end
function out=readXillybus(device, format)
data_fid=fopen(['/dev/xillybus_', device], 'r');
cleanup = onCleanup(@() fclose(data_fid));
while(true)
out=fread(data_fid, format, '*int16');
end
end
However the workers crash with future reporting. 'Too many output arguments.' I have trouble making sense out of it, because it rises deep from Matlab internals: remote cause shows line 39 of toolbox/parallel/cluster/+parallel/+internal/+queue/evaluateRequest.m as origin.
Anyway, isn't parfeval supposed to be able to handle arbitrary number of outputs?

采纳的回答

Yongjian Feng
Yongjian Feng 2021-11-18
According to the help of parfeval, the second input argument is NUMOUT. You gave 2?
  1 个评论
Quant
Quant 2021-11-18
I read docs a few times, but every time I somehow understood it refers to the input arguments. what an embarassing lapse in attention

请先登录,再进行评论。

更多回答(0 个)

类别

Help CenterFile Exchange 中查找有关 Asynchronous Parallel Programming 的更多信息

产品


版本

R2020b

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by