Re: [R-es] Paralelizar el cálculo de distancias

2017-08-14 Por tema Jose Manuel de los Reyes
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.fernan...@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 <jorgeivanve...@gmail.com>
> Enviado: domingo, 13 de agosto de 2017 22:51
> Para: Jesús Para Fernández
> Cc: r-help-es@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.fernan...@hotmail.com<mailto:j.para.fernan...@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@r-project.org<mailto:R-help-es@r-project.org>
> https://stat.ethz.ch/mailman/listinfo/r-help-es
>
>
> [[alternative HTML version deleted]]
>
>
> ___
> R-help-es mailing list
> R-help-es@r-project.org
> https://stat.ethz.ch/mailman/listinfo/r-help-es
>

[[alternative HTML version deleted]]

___
R-help-es mailing list
R-help-es@r-project.org
https://stat.ethz.ch/mailman/listinfo/r-help-es


Re: [R-es] Paralelizar el cálculo de distancias

2017-08-13 Por tema Jorge I Velez
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.fernan...@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@r-project.org
> https://stat.ethz.ch/mailman/listinfo/r-help-es
>

[[alternative HTML version deleted]]

___
R-help-es mailing list
R-help-es@r-project.org
https://stat.ethz.ch/mailman/listinfo/r-help-es