Да, вы можете распараллелить , что является основным смыслом использования HPCC.Без чтения вашего кода сложно ответить.Я предполагаю, что ваш код будет выглядеть примерно так:
EXPORT CalculateDistances :=FUNCTION(parameters)
// For each parameter do your DNA magic(matrix calculation)
RETURN something;
END;
result:= CalculateDistances(A,B,C,D...);
OUTPUT(result, named('result'));
Вы можете распараллелить кодирование вашей функции с базовым матричным вычислением, используя команду PARALLEL ECL и запустив рабочий модуль в Thor (не в HThor).
EXPORT CalculateDistance :=FUNCTION(Matrix1, Matrix2)
// Your DNA magic(basic matrix calculation) for Matrix1&Matrix2
RETURN something;
END;
result01:= CalculateDistance(A,B);
result02:= CalculateDistance(A,C);
result03:= CalculateDistance(A,D);
result04:= CalculateDistance(B,A);
result05:= CalculateDistance(B,C);
result06:= CalculateDistance(B,D);
result07:= CalculateDistance(C,A);
result08:= CalculateDistance(C,B);
result09:= CalculateDistance(C,D);
result10:= CalculateDistance(D,A);
result11:= CalculateDistance(D,B);
result12:= CalculateDistance(D,C);
executeCalculates := PARALLEL(
result01,
result02,
result03,
result04,
result05,
result06,
result07,
result08,
result09,
result10,
result11,
result12
);
executeCalculates;