Запуск матричного алгоритма на сколько ядер? - PullRequest
0 голосов
/ 22 сентября 2018

Я запускаю программу dnadist от PHYLIP (http://evolution.genetics.washington.edu/phylip/doc/dnadist.html).. Она создает матрицу расстояний ДНК из числа введенных вами последовательностей.

В настоящее время я хочу создать матрицу из 14 778 последовательностей.Я отправляю это для запуска на HPCC моего университета, и, исходя из моей расчетной оценки, потребуется 10 дней для запуска.

Я хочу запросить больше ядер, чтобы ускорить время, но меня смущает, еслиэто даже можно разделить работающий алгоритм? Или он должен работать все на 1 ядре? Я предполагаю, что мне придется изменить сам алгоритм, чтобы разлить производимую матрицу, а затем объединить все это обратно вместе.правильно предположить?

Ответы [ 2 ]

0 голосов
/ 24 сентября 2018

Я не уверен в некоторых вещах здесь: как Филип выполняет парные сравнения (если это все сразу, это чертовски вычисление!), Что вы секвенируете (бактериальные белки на порядки легче помещать в памятьчем будет геном пшеницы) и как это настроить для работы на HPCC (Филип, как я полагаю, CI, как он был развернут?).

Короче говоря, генетический анализ проводится все время, поэтому написание программ на заказ, чтобы сделать это самостоятельно, вероятно, не является началом.Существуют и другие инструменты, такие как MEGA, которые могут вычислять расстояния для вас, но стоит посмотреть, что используется в литературе для вашей проблемы и на каком оборудовании.Возможно также попробуйте функцию R's dist.dna () ?Вы могли бы это сделать, если бы хотели это сделать ( ссылка ), но вам понадобятся некоторые покерные игры, чтобы убедиться, что вы прошли все расстояния, прежде чем объединить их.

Важна ли скорость расчета?Если у вас есть 15 000 целых бактериальных последовательностей (по 1300 кбит / с каждая), они поместятся в память на приличной машине.Опять же, я предполагаю, что у кого-то уже есть что-то, что будет делать это, несколько дней на рабочем столе, у которого вы лежите, в порядке, дает вам возможность написать свое вступление и методы!

0 голосов
/ 24 сентября 2018

Да, вы можете распараллелить , что является основным смыслом использования 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;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...