Too many output arguments while launching workers with parfeval

3 views (last 30 days)
Quant
Quant on 18 Nov 2021
Commented: Quant on 18 Nov 2021
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?

Accepted Answer

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

Sign in to comment.

More Answers (0)

Community Treasure Hunt

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

Start Hunting!