Buenas,
Quiero ver si he paralelizado correctamente el proceso. Tengo dos dataframes, A y B y quiero calcular la distancia euclÃdea de todas las filas de A sobre todas las filas de B. Para ello he hecho lo siguiente
#cargo las librerias
library(foreach)
library(doParallel)
#establezco el numero de clusters, en mi caso 4, ya que el procesador tiene 4 nucleos
cl<-makeCluster(4)
registerDoParallel(cl)
#Creo los dataframes
A<-as.data.frame(matrix(rnorm(50,10,2),ncol=5,nrow=10))
B<-as.data.frame(matrix(rnorm(50,10,2),ncol=5,nrow=10))
#calculo las distancias
foreach(j in 1:nrow(B),.combine="cbind") %:%
foreach(i in 1:nrow(A),.combine="c") %dopar% {
sqrt(sum((A[i,]-B[j,])^2))
}
¿Cómo lo veis?
Un saludo
Jesús
[R-es] Paralelizar el cálculo de distancias
4 messages · Jesús Para Fernández, Jorge I Velez, Jose Manuel de los Reyes
Buenas tardes, Jesús.
Inicialmente no me funcionó tu código. Al hacer algunas correcciones
foreach(j = 1:nrow(B),.combine="cbind")%:%
foreach(i = 1:nrow(A),.combine="c") %dopar%{
sqrt(sum((A[i,]-B[j,])^2))
}
obtuve una matriz de 10x10. Es eso lo que buscas?
Saludos,
Jorge.-
2017-08-13 15:40 GMT-05:00 Jesús Para Fernández <
j.para.fernandez en hotmail.com>:
Buenas,
Quiero ver si he paralelizado correctamente el proceso. Tengo dos
dataframes, A y B y quiero calcular la distancia euclÃdea de todas las
filas de A sobre todas las filas de B. Para ello he hecho lo siguiente
#cargo las librerias
library(foreach)
library(doParallel)
#establezco el numero de clusters, en mi caso 4, ya que el procesador
tiene 4 nucleos
cl<-makeCluster(4)
registerDoParallel(cl)
#Creo los dataframes
A<-as.data.frame(matrix(rnorm(50,10,2),ncol=5,nrow=10))
B<-as.data.frame(matrix(rnorm(50,10,2),ncol=5,nrow=10))
#calculo las distancias
foreach(j in 1:nrow(B),.combine="cbind") %:%
foreach(i in 1:nrow(A),.combine="c") %dopar% {
sqrt(sum((A[i,]-B[j,])^2))
}
¿Cómo lo veis?
Un saludo
Jesús
[[alternative HTML version deleted]]
_______________________________________________ R-help-es mailing list R-help-es en r-project.org https://stat.ethz.ch/mailman/listinfo/r-help-es
Cierto, fallo porque puse en el bucle foreach un in en lugar de un =. Lo que busco es ver si he paralelizado bien el proceso o no.... ¿Como puedo saber si lo he paralelizado bien? Gracias!!! Jesús
De: Jorge I Velez <jorgeivanvelez en gmail.com>
Enviado: domingo, 13 de agosto de 2017 22:51
Para: Jesús Para Fernández
Cc: r-help-es en r-project.org
Asunto: Re: [R-es] Paralelizar el cálculo de distancias
Buenas tardes, Jesús.
Inicialmente no me funcionó tu código. Al hacer algunas correcciones
foreach(j = 1:nrow(B),.combine="cbind")%:%
foreach(i = 1:nrow(A),.combine="c") %dopar%{
sqrt(sum((A[i,]-B[j,])^2))
}
obtuve una matriz de 10x10. Es eso lo que buscas?
Saludos,
Jorge.-
2017-08-13 15:40 GMT-05:00 Jesús Para Fernández <j.para.fernandez en hotmail.com<mailto:j.para.fernandez en hotmail.com>>:
Buenas,
Quiero ver si he paralelizado correctamente el proceso. Tengo dos dataframes, A y B y quiero calcular la distancia euclÃdea de todas las filas de A sobre todas las filas de B. Para ello he hecho lo siguiente
#cargo las librerias
library(foreach)
library(doParallel)
#establezco el numero de clusters, en mi caso 4, ya que el procesador tiene 4 nucleos
cl<-makeCluster(4)
registerDoParallel(cl)
#Creo los dataframes
A<-as.data.frame(matrix(rnorm(50,10,2),ncol=5,nrow=10))
B<-as.data.frame(matrix(rnorm(50,10,2),ncol=5,nrow=10))
#calculo las distancias
foreach(j in 1:nrow(B),.combine="cbind") %:%
foreach(i in 1:nrow(A),.combine="c") %dopar% {
sqrt(sum((A[i,]-B[j,])^2))
}
¿Cómo lo veis?
Un saludo
Jesús
[[alternative HTML version deleted]]
_______________________________________________
R-help-es mailing list
R-help-es en r-project.org<mailto:R-help-es en r-project.org>
https://stat.ethz.ch/mailman/listinfo/r-help-es
Buenas, lo más sencillo si lo estás corriendo en Linux, puedes usar el comando htop en la consola para ver todos los procesadores de tu máquina y ver si están ejecutando trabajos. En windows (yo tengo 7, pero 10 creo que será igual) puedes abrir el monitor de recursos y activar la pestaña de CPU, en vistas verás una ventana por cada procesador, y ahà puedes ver rápida y fácilmente si están corriendo todos tus cores cuando lanzas un proceso en paralelo. También puedes usar una resta sencilla de sys.time para ver cuánto tarda en ejecutarse en paralelo respecto a en serie. O usar algún paquete más complejo de benchmarking. Saludos jose El 13 de agosto de 2017, 23:39, Jesús Para Fernández < j.para.fernandez en hotmail.com> escribió:
Cierto, fallo porque puse en el bucle foreach un in en lugar de un =. Lo que busco es ver si he paralelizado bien el proceso o no.... ¿Como puedo saber si lo he paralelizado bien? Gracias!!! Jesús
________________________________
De: Jorge I Velez <jorgeivanvelez en gmail.com>
Enviado: domingo, 13 de agosto de 2017 22:51
Para: Jesús Para Fernández
Cc: r-help-es en r-project.org
Asunto: Re: [R-es] Paralelizar el cálculo de distancias
Buenas tardes, Jesús.
Inicialmente no me funcionó tu código. Al hacer algunas correcciones
foreach(j = 1:nrow(B),.combine="cbind")%:%
foreach(i = 1:nrow(A),.combine="c") %dopar%{
sqrt(sum((A[i,]-B[j,])^2))
}
obtuve una matriz de 10x10. Es eso lo que buscas?
Saludos,
Jorge.-
2017-08-13 15:40 GMT-05:00 Jesús Para Fernández <
j.para.fernandez en hotmail.com<mailto:j.para.fernandez en hotmail.com>>:
Buenas,
Quiero ver si he paralelizado correctamente el proceso. Tengo dos
dataframes, A y B y quiero calcular la distancia euclÃdea de todas las
filas de A sobre todas las filas de B. Para ello he hecho lo siguiente
#cargo las librerias
library(foreach)
library(doParallel)
#establezco el numero de clusters, en mi caso 4, ya que el procesador
tiene 4 nucleos
cl<-makeCluster(4)
registerDoParallel(cl)
#Creo los dataframes
A<-as.data.frame(matrix(rnorm(50,10,2),ncol=5,nrow=10))
B<-as.data.frame(matrix(rnorm(50,10,2),ncol=5,nrow=10))
#calculo las distancias
foreach(j in 1:nrow(B),.combine="cbind") %:%
foreach(i in 1:nrow(A),.combine="c") %dopar% {
sqrt(sum((A[i,]-B[j,])^2))
}
¿Cómo lo veis?
Un saludo
Jesús
[[alternative HTML version deleted]]
_______________________________________________
R-help-es mailing list
R-help-es en r-project.org<mailto:R-help-es en r-project.org>
https://stat.ethz.ch/mailman/listinfo/r-help-es
[[alternative HTML version deleted]]
_______________________________________________
R-help-es mailing list
R-help-es en r-project.org
https://stat.ethz.ch/mailman/listinfo/r-help-es