Сериализуемость Java Matlab

Я использую набор инструментов, написанный на Java javaplex [ https://github.com/javaplex/javaplex.github.io][1]

ссылка на матрицу входной матрицы [ https://drive.google.com/file/d/0B3uM9Np2kJYoTmtkRHV2WU5JeGc/view?usp=sharing][3] первый цикл, который работает очень хорошо, предназначен для

cd C:\ProjetBCodesMatlab\Jplex
javaaddpath('./lib/javaplex.jar');
import edu.stanford.math.plex4.*;

javaaddpath('./lib/plex-viewer.jar');
import edu.stanford.math.plex_viewer.*;

cd './utility';
addpath(pwd);
cd '..';

max_dimension = 3; 
max_filtration_value = 1000; 
num_divisions = 10000;
options.max_filtration_value = max_filtration_value;
options.max_dimension = max_dimension - 1;

%------------------------------------------------------------
for i=1:10
         maColonne = mat(i,:); 
         intervals= Calcul_interval(maColonne,options,max_dimension, max_filtration_value, num_divisions)
         intervals 
         multinterval{i}= intervals;    
 end 

Я использую I7, когда я выполняю функцию функции ('numCores');

MATLAB detected: 4 physical cores.
MATLAB detected: 8 logical cores.
MATLAB was assigned: 8 logical cores by the OS.
MATLAB is using: 4 logical cores.
MATLAB is not using all logical cores because hyper-threading is enabled.

Я запускаю один и тот же код с parfor

cd C:\ProjetBCodesMatlab\Jplex
javaaddpath('./lib/javaplex.jar');
import edu.stanford.math.plex4.*;

javaaddpath('./lib/plex-viewer.jar');
import edu.stanford.math.plex_viewer.*;

cd './utility';
addpath(pwd);
cd '..';

max_dimension = 3; 
max_filtration_value = 1000; 
num_divisions = 10000;
options.max_filtration_value = max_filtration_value;
options.max_dimension = max_dimension - 1;

%------------------------------------------------------------
parfor i=1:10
         maColonne = mat(i,:); 
         intervals= Calcul_interval(maColonne,options,max_dimension, max_filtration_value, num_divisions)
         intervals 
         multinterval{i}= intervals;    
 end 

У меня есть эта ошибка: не сериализуемо.

1 ответ

Решение

Наконец-то я его воспроизвел. Он не может быть сериализован, потому что ваша переменная intervals держит объект типа edu.stanford.math.plex4.homology.barcodes.BarcodeCollection который не сериализуем. Вы должны сделать его сериализуемым или извлечь соответствующие данные о работниках. Набор инструментов параллельных вычислений может передавать только те данные, которые можно сериализовать.

Другие вопросы по тегам