Параллельная генерация матрицы расстояний треугольного графа в R

У меня есть массив из n графиков, и мне нужно создать треугольную матрицу n x n с расстоянием между графиками. Я сделал непараллельную программу, то есть у меня есть функция, которая вычисляет число. вершин для каждой пары 2-х графов размера n1 и n2, No_MaxCommonSubgraph(graph1,graph2,n1,n2) и у меня есть 2 вложения для, и которые строят матрицу. Это работает нормально. Я преобразовал первый for в foreach, и у меня есть

foreach(i <- 1:n-1)
    for(j in i:n){
       nn <- No_MaxCommonSubgraph(graph1,graph2,n1,n2)
       mat[i,j] <- max(n1,n2)-nn ##this should construct the matrix
}

Проблема в том, что когда я выхожу из foreach, матричный мат имеет все значения NA. Пробовал записывать файл матрицы в foreach, после for j, построчно, но он пишет строки в другом порядке, так как строки вычисляются ядрами. А иногда пишите строку внутри другой строки.

Я использую линуксовый комп. с 12 ядрами, и я могу использовать другой комп. с 8 ядрами. Для размера графика 8 у меня есть 11117 графиков, и мне нужно перейти к размеру 9 или 10. Я новичок в R.


person Monicam    schedule 17.04.2015    source источник


Ответы (1)


Использование foreach:

 m2 <-foreach(i=1:(len-1), .combine='rbind', .multicombine=TRUE) %dopar% {     
        f_foreach(erg, i, len)} 

so

  1. использовать %dopar% в foreach

  2. функция "f_foreach()" возвращает вектор и, используя ".combine='rbind'" в foreach, объединяет векторы для формирования матрицы m2 в результате foreach.

  3. внутри f_foreach() второй для

person Monicam    schedule 24.06.2016