SlideShare una empresa de Scribd logo
1 de 23
Operaciones Colectivas en MPI




        Manuel Martín Salvador
        draxus@correo.ugr.es
          http://draxus.org



           Programación Concurrente
          I.T. Informática de Sistemas
            Granada, 16 enero 2007

                                          
Operaciones colectivas


        Operaciones en las que participan todos los
               procesos de un comunicador


    -   Barreras de sincronización
    -   Broadcast (difusión)
    -   Gather (recolección)
    -   Scatter (distribución)
    -   Operaciones de reducción (suma, mínimo...)
    -   Combinaciones de todas ellas
                                         
Barrier (barerra)

int MPI_Barrier(MPI_Comm comm)
   Bloquea a los procesos de un comunicador hasta que todos ellos
han llegado a la barrera.

int main()
{  ...
   rank = MPI_Rank();
   if(rank==0){
      a[0][0] = b[0][0] + c[0][0];
      a[0][1] = b[0][1] + c[0][1];
   }else{
      a[1][0] = b[1][0] + c[1][0];
      a[1][1] = b[1][1] + c[1][1];
   }
   MPI_Barrier(MPI_COMMWORLD);
   if(MPI_Rank()==0) 
      //Imprimo matriz a
                                                  
}
Broadcast (difusión)

int MPI_Bcast(void *buffer, int count, 
MPI_Datatype datatype, int root, MPI_Comm com)

    Sirve para que un proceso, el raíz, envíe un
mensaje a todos los miembros del comunicador.




                                          
Broadcast (difusión)

                                        0

                        0                               1
                0               2               1               3

            0       4       2       6       1       5       3       7


    Ejemplo: Difusión de un vector de 100 enteros

    int main(){
       MPI_Comm comm; 
       int array[100]; 
       int root=0; 
       ... 
       MPI_Bcast(array, 100, MPI_INT, root, comm);
       ...
    }                                    
Gather (recolección)

int MPI_Gather(void *sendbuf, int sendcount, 
MPI_Datatype sendtype, void *recvbuf, int recvcount, 
MPI_Datatype recvtype, int root, MPI_Comm comm)

      Realiza una recolección de datos en el proceso raíz.
Recopila un vector de datos, al que contribuyen todos los
procesos del comunicador con la misma cantidad de datos.
Almacena las contribuciones de forma consecutiva.




                                               
Gather (recolección)

Ejemplo: Recolectar 100 enteros de cada proceso en el proceso raíz

int main(){
    MPI_Comm comm; 
   int gsize,sendarray[100]; 
   int root, myrank, *rbuf; 
   ... 
   MPI_Comm_rank(comm, myrank); 
   if (myrank == root) { 
      MPI_Comm_size(comm, &gsize); 
      rbuf = (int *)malloc(gsize*100*sizeof(int)); 
   } 
   MPI_Gather(sendarray, 100, MPI_INT, rbuf, 100, 
MPI_INT, root, comm); 
    ...
}




                                                                      
Gather (recolección)

int MPI_Gatherv(void *sendbuf, int sendcount, 
MPI_Datatype sendtype, void *recvbuf, int 
*recvcounts, int *displs, MPI_Datatype 
recvtype, int root, MPI_Comm comm)

     Permite almacenar los datos recogidos en forma
no consecutiva y que cada proceso contribuya con
bloques de datos de diferente tamaño.




                                        
Gather (recolección)

Ejemplo: Recolectar 100 enteros de cada proceso en el proceso raíz

int main(){
    MPI_Comm comm; 
    int gsize,sendarray[100]; 
    int root, *rbuf, stride; 
    int *displs,i,*rcounts; 
    ...
    MPI_Comm_size( comm, &gsize);
    rbuf = (int *)malloc(gsize*stride*sizeof(int));
    displs = (int *)malloc(gsize*sizeof(int));
    rcounts = (int *)malloc(gsize*sizeof(int));
    for (i=0; i<gsize; ++i) {
        displs[i] = i*stride;
        rcounts[i] = 100;
    }
    MPI_Gatherv( sendarray, 100, MPI_INT, rbuf, 
rcounts, displs, MPI_INT, root, comm); 
    ...
}


                                                                      
Gather (recolección)
int MPI_Allgather(void *sendbuf, int sendcount, 
MPI_Datatype sendtype, void *recvbuf, int recvcount, 
MPI_Datatype recvtype, int root, MPI_Comm comm)

int MPI_Allgatherv(void *sendbuf, int sendcount, 
MPI_Datatype sendtype, void *recvbuf, int *recvcounts, 
int *displs, MPI_Datatype recvtype, int root, MPI_Comm 
comm)

Distribuyen a todos los procesos el resultado de una recolección
previa.




                                                
Gather (recolección)

Ejemplo: recoger en todos los procesos 100 enteros que han distribuido todos 
los procesos.

int main(){
   MPI_Comm comm; 
   int gsize,sendarray[100]; 
   int *rbuf; 
   ... 
   MPI_Comm_size(comm, &gsize); 
   rbuf = (int *)malloc(gsize*100*sizeof(int)); 
   MPI_Allgather(sendarray, 100, MPI_INT, rbuf, 100, 
MPI_INT, comm); 
   ...
}

Después de la ejecución, cada proceso tiene la concatenación de cada uno de 
los arrays de los otros procesos.
                                                           
Scatter (distribución)

int MPI_Scatter(void *sendbuf, int sendcount, 
MPI_Datatype sendtype, void *recvbuf, int 
recvcount, MPI_Datatype recvtype, int root, 
MPI_Comm comm)

      El proceso raíz posee un vector de elementos, uno por
cada proceso del comunicador. Tras realizar la distribución,
cada proceso tiene una copia del vector inicial.




                                              
Scatter (distribución)

Ejemplo: distribuir 100 enteros desde el raíz a todos los procesos

int main(){
   MPI_Comm comm; 
   int gsize,*sendbuf; 
   int root, rbuf[100]; 
   ... 
   MPI_Comm_size(comm, &gsize); 
   sendbuf = (int *)malloc(gsize*100*sizeof(int)); 
   ... 
   MPI_Scatter(sendbuf, 100, MPI_INT, rbuf, 100, MPI_INT, root, 
comm);
   ...
}




                                                                      
Scatter (distribución)

int MPI_Scatterv(void *sendbuf, int 
*sendcounts, int *displs, MPI_Datatype 
sendtype, void *recvbuf, int recvcount, 
MPI_Datatype recvtype, int root, MPI_Comm comm)

     Si los datos a enviar no están almacenados de
forma consecutiva en memoria, o los bloques a enviar a
cada proceso no son todos del mismo tamaño.




                                         
Scatter (distribución)
Ejemplo: distribuir 100 enteros desde el raíz a todos los procesos

int main(){
    MPI_Comm comm; 
    int gsize,*sendbuf; 
    int root, rbuf[100], i, *displs, *scounts; 
    ...
    MPI_Comm_size(comm, &gsize);
    sendbuf = (int *)malloc(gsize*stride*sizeof(int));
    ...
    displs = (int *)malloc(gsize*sizeof(int));
    scounts = (int *)malloc(gsize*sizeof(int));
    for (i=0; i<gsize; ++i) {
        displs[i] = i*stride;
        scounts[i] = 100;
    }
    MPI_Scatterv(sendbuf, scounts, displs, MPI_INT, rbuf, 100, MPI_INT, 
root, comm);
    ...
}




                                                                      
Comunicación todos con todos
int MPI_Alltoall(void *sendbuf, int sendcount, MPI_Datatype 
sendtype, void *recvbuf, int recvcount, MPI_Datatype 
recvtype, MPI_Comm comm)

int MPI_Alltoall(void *sendbuf, int *sendcounts, int 
*sdispls, MPI_Datatype sendtype, void *recvbuf, int 
*recvcounts, MPI_Datatype recvtype, int *rdispls, MPI_Comm 
comm)

      Cada proceso tiene un vector con tantos elementos como
procesos hay en el comunicador. Sean i, j y k entre 0 y N-1 (siendo
N=nº procesos). Cada proceso i envía una copia de sendbuf[j] al
proceso j, y recibe del proceso k un elemento que almacena en
recvbuf[k].




                                                     
Reduce (reducción)

int MPI_Reduce(void *sendbuf, void *recvbuf, 
int count, MPI_Datatype datatype, MPI_Op op, 
int root, MPI_Comm comm)

     Una reducción es una operación realizada de
forma cooperativa entre todos los procesos de un
comunicador. El resultado final se almacena en el
proceso raíz.

       Operaciones por defecto: MPI_MAX (máximo),
MPI_MIN (mínimo), MPI_SUM (suma), MPI_PROD
(producto), MPI_LAND (and lógico), MPI_BAND (and bit a
bit), etc.

int MPI_Op_create(MPI_User_function *function, 
                                    
int commute, MPI_Op *op)
Reduce (reducción)
      En ocasiones resulta útil que el resultado de una
reducción esté disponible para todos los procesos.

int MPI_Allreduce(void *sendbuf, void *recvbuf, int 
count, MPI_Datatype datatype, MPI_Op op, MPI_Comm 
comm)

      Si el resultado es un vector que hay que distribuir entre todos los 
procesos, usaremos:

int MPI_Reduce_scatter(void *sendbuf, void *recvbuf, 
int *recvcounts, MPI_Datatype datatype, MPI_Op op, 
MPI_Comm comm) 

       Si queremos que cada proceso reciba un resultado parcial:

int MPI_Scan(void *sendbuf, void *recvbuf, int count, 
                                         
MPI_Datatype datatype, MPI_Op op, MPI_Comm comm)
Gráficamente




                
Gráficamente




                
Ejemplo: cálculo de Pi

double f( double a ){                                           if (n == 0)
    return (4.0 / (1.0 + a*a));                                     done = 1;
}                                                               else{
                                                                    h   = 1.0 / (double) n;
int main( int argc, char *argv[]){                                  sum = 0.0;
    int done = 0, n, myid, numprocs, i;                             for (i = myid + 1; i <= n; i += 
    double PI25DT = 3.141592653589793238462643;         numprocs){
    double mypi, pi, h, sum, x;                                         x = h * ((double)i ­ 0.5);
    double startwtime = 0.0, endwtime;                                  sum += f(x);
    int  namelen;                                                   }
    char processor_name[MPI_MAX_PROCESSOR_NAME];                    mypi = h * sum;

    MPI_Init(&argc,&argv);                                          MPI_Reduce(&mypi, &pi, 1, 
    MPI_Comm_size(MPI_COMM_WORLD,&numprocs);            MPI_DOUBLE, MPI_SUM, 0, MPI_COMM_WORLD);
    MPI_Comm_rank(MPI_COMM_WORLD,&myid);
    MPI_Get_processor_name(processor_name,&namelen);                if (myid == 0){
                                                                        printf("pi is approximately 
    fprintf(stderr,"Proceso %d en %sn", myid,          %.16f, Error is %.16fn", pi, fabs(pi ­ 
processor_name);                                        PI25DT));
                                                                   endwtime = MPI_Wtime();
    n = 0;                                                         printf("wall clock time = %fn", 
    while (!done){                                      endwtime­startwtime);
        if (myid == 0){                                        }
         if (n==0) n=100; else n=0;                             }
         startwtime = MPI_Wtime();                          }
        }                                                   MPI_Finalize();
        MPI_Bcast(&n, 1, MPI_INT, 0, MPI_COMM_WORLD);
                                                            return 0;
                                                        }

                                                                           
Referencias

    ●   MPI: The Complete Reference
        http://www.netlib.org/utk/papers/mpi-book/mpi-book.html
    ●   Parallel programming with MPI - Peter S. Pacheco
    ●   Cálculo de PI
        http://www.ace.ual.es/~jamartin/Multi_2005_2006_html/practica1.html
    ●   Especificación de MPI http://www-unix.mcs.anl.gov/mpi/www/
    ●   Servidor público de MPI ftp://ftp.mcs.anl.gov/pub/mpi/




                                                          
FIN




      Gracias por vuestra atención




                               

Más contenido relacionado

La actualidad más candente

Firewall (Corta Fuegos)
Firewall (Corta Fuegos)Firewall (Corta Fuegos)
Firewall (Corta Fuegos)Charxavier_00
 
Ccna 1 capitulo 05
Ccna 1 capitulo 05Ccna 1 capitulo 05
Ccna 1 capitulo 05Hack '
 
Herramientas de gestiòn de redes
Herramientas de gestiòn de redesHerramientas de gestiòn de redes
Herramientas de gestiòn de redesDelaCruzSanchez
 
MANUAL DE PRACTICAS DE LINUX (Alberto Hdz)
MANUAL DE PRACTICAS DE LINUX (Alberto Hdz) MANUAL DE PRACTICAS DE LINUX (Alberto Hdz)
MANUAL DE PRACTICAS DE LINUX (Alberto Hdz) Alberto Hdz
 
4. listas de control de acceso
4. listas de control de acceso4. listas de control de acceso
4. listas de control de accesoEduardo Lange
 
1.4 llamadassistemasoperativos
1.4 llamadassistemasoperativos1.4 llamadassistemasoperativos
1.4 llamadassistemasoperativosFernando Solis
 
Presentacion firewall
Presentacion firewallPresentacion firewall
Presentacion firewallJakol Inugami
 
Reto resuelto 7.5.2 PacketTracer
Reto resuelto 7.5.2 PacketTracerReto resuelto 7.5.2 PacketTracer
Reto resuelto 7.5.2 PacketTracermictla
 
Informe mantenimiento de Computadoras
Informe mantenimiento de ComputadorasInforme mantenimiento de Computadoras
Informe mantenimiento de Computadorasgalejandro12
 
Resumen comandos ospf
Resumen comandos ospfResumen comandos ospf
Resumen comandos ospf1 2d
 
Cuestionario de Redes Informáticas
Cuestionario de Redes InformáticasCuestionario de Redes Informáticas
Cuestionario de Redes InformáticasLaddy Mathita
 
Ejemplo de RPC (Servidor de Archivos) enviar archivo en Java utilizando RPC
Ejemplo de RPC (Servidor de Archivos) enviar archivo en Java utilizando RPCEjemplo de RPC (Servidor de Archivos) enviar archivo en Java utilizando RPC
Ejemplo de RPC (Servidor de Archivos) enviar archivo en Java utilizando RPCIvan Luis Jimenez
 

La actualidad más candente (20)

Firewall (Corta Fuegos)
Firewall (Corta Fuegos)Firewall (Corta Fuegos)
Firewall (Corta Fuegos)
 
Nmap
NmapNmap
Nmap
 
Routers CIsco: configu
Routers CIsco: configuRouters CIsco: configu
Routers CIsco: configu
 
Ccna 1 capitulo 05
Ccna 1 capitulo 05Ccna 1 capitulo 05
Ccna 1 capitulo 05
 
Herramientas de gestiòn de redes
Herramientas de gestiòn de redesHerramientas de gestiòn de redes
Herramientas de gestiòn de redes
 
Firewall
Firewall Firewall
Firewall
 
Cómo utilizar el programa everest
Cómo utilizar el programa everestCómo utilizar el programa everest
Cómo utilizar el programa everest
 
MANUAL DE PRACTICAS DE LINUX (Alberto Hdz)
MANUAL DE PRACTICAS DE LINUX (Alberto Hdz) MANUAL DE PRACTICAS DE LINUX (Alberto Hdz)
MANUAL DE PRACTICAS DE LINUX (Alberto Hdz)
 
Comandos redes
Comandos  redesComandos  redes
Comandos redes
 
4. listas de control de acceso
4. listas de control de acceso4. listas de control de acceso
4. listas de control de acceso
 
Reporte de prácticas capítulo 1 cisco
Reporte de prácticas capítulo 1 ciscoReporte de prácticas capítulo 1 cisco
Reporte de prácticas capítulo 1 cisco
 
1.4 llamadassistemasoperativos
1.4 llamadassistemasoperativos1.4 llamadassistemasoperativos
1.4 llamadassistemasoperativos
 
Presentacion firewall
Presentacion firewallPresentacion firewall
Presentacion firewall
 
Reto resuelto 7.5.2 PacketTracer
Reto resuelto 7.5.2 PacketTracerReto resuelto 7.5.2 PacketTracer
Reto resuelto 7.5.2 PacketTracer
 
Informe mantenimiento de Computadoras
Informe mantenimiento de ComputadorasInforme mantenimiento de Computadoras
Informe mantenimiento de Computadoras
 
Resumen comandos ospf
Resumen comandos ospfResumen comandos ospf
Resumen comandos ospf
 
Cuestionario de Redes Informáticas
Cuestionario de Redes InformáticasCuestionario de Redes Informáticas
Cuestionario de Redes Informáticas
 
Ejemplo de RPC (Servidor de Archivos) enviar archivo en Java utilizando RPC
Ejemplo de RPC (Servidor de Archivos) enviar archivo en Java utilizando RPCEjemplo de RPC (Servidor de Archivos) enviar archivo en Java utilizando RPC
Ejemplo de RPC (Servidor de Archivos) enviar archivo en Java utilizando RPC
 
Virtualizacion
VirtualizacionVirtualizacion
Virtualizacion
 
Introducción a CentOS 7
Introducción a CentOS 7Introducción a CentOS 7
Introducción a CentOS 7
 

Similar a Operaciones Colectivas en MPI

Similar a Operaciones Colectivas en MPI (20)

Matriz Vector
Matriz VectorMatriz Vector
Matriz Vector
 
6.funciones y recursividad en c++
6.funciones y recursividad en c++6.funciones y recursividad en c++
6.funciones y recursividad en c++
 
ESTRUCTURAS DE CONTROL: BUCLES EN C++
ESTRUCTURAS DE CONTROL: BUCLES EN C++ESTRUCTURAS DE CONTROL: BUCLES EN C++
ESTRUCTURAS DE CONTROL: BUCLES EN C++
 
Ejclase mpi
Ejclase mpiEjclase mpi
Ejclase mpi
 
Revista digital
Revista digitalRevista digital
Revista digital
 
Problemas+resueltos+de+c$2 b$2b
Problemas+resueltos+de+c$2 b$2bProblemas+resueltos+de+c$2 b$2b
Problemas+resueltos+de+c$2 b$2b
 
Problemas resueltos de c++
Problemas  resueltos de c++Problemas  resueltos de c++
Problemas resueltos de c++
 
Introduccion a C++
Introduccion a C++Introduccion a C++
Introduccion a C++
 
Informe tecnico
Informe tecnicoInforme tecnico
Informe tecnico
 
Cesar lenguaje c_
Cesar lenguaje c_Cesar lenguaje c_
Cesar lenguaje c_
 
Lenguaje c neo
Lenguaje c neoLenguaje c neo
Lenguaje c neo
 
Presnetación Go
Presnetación GoPresnetación Go
Presnetación Go
 
07 funciones
07 funciones07 funciones
07 funciones
 
Arrays unidimensionales
Arrays unidimensionalesArrays unidimensionales
Arrays unidimensionales
 
if-while-for.ppsx
if-while-for.ppsxif-while-for.ppsx
if-while-for.ppsx
 
Interpolaion c++
Interpolaion c++Interpolaion c++
Interpolaion c++
 
Python científico (introducción a numpy y matplotlib))
Python científico (introducción a numpy y matplotlib))Python científico (introducción a numpy y matplotlib))
Python científico (introducción a numpy y matplotlib))
 
Metodología y Tecnología de la Programación I (II Bimestre)
Metodología y Tecnología de la Programación I (II Bimestre)Metodología y Tecnología de la Programación I (II Bimestre)
Metodología y Tecnología de la Programación I (II Bimestre)
 
Video Segundo Bimestre Metodologia Abierta
Video Segundo Bimestre Metodologia AbiertaVideo Segundo Bimestre Metodologia Abierta
Video Segundo Bimestre Metodologia Abierta
 
Programas básico en Lenguaje C
Programas básico en Lenguaje CProgramas básico en Lenguaje C
Programas básico en Lenguaje C
 

Más de Manuel Martín

Automatizando el aprendizaje basado en datos
Automatizando el aprendizaje basado en datosAutomatizando el aprendizaje basado en datos
Automatizando el aprendizaje basado en datosManuel Martín
 
Modelling Multi-Component Predictive Systems as Petri Nets
Modelling Multi-Component Predictive Systems as Petri NetsModelling Multi-Component Predictive Systems as Petri Nets
Modelling Multi-Component Predictive Systems as Petri NetsManuel Martín
 
Brand engagement with mobile gamification apps from a developer perspective
Brand engagement with mobile gamification apps from a developer perspectiveBrand engagement with mobile gamification apps from a developer perspective
Brand engagement with mobile gamification apps from a developer perspectiveManuel Martín
 
Effects of change propagation resulting from adaptive preprocessing in multic...
Effects of change propagation resulting from adaptive preprocessing in multic...Effects of change propagation resulting from adaptive preprocessing in multic...
Effects of change propagation resulting from adaptive preprocessing in multic...Manuel Martín
 
Improving transport timetables usability for mobile devices
Improving transport timetables usability for mobile devicesImproving transport timetables usability for mobile devices
Improving transport timetables usability for mobile devicesManuel Martín
 
Automating Machine Learning - Is it feasible?
Automating Machine Learning - Is it feasible?Automating Machine Learning - Is it feasible?
Automating Machine Learning - Is it feasible?Manuel Martín
 
Towards Automatic Composition of Multicomponent Predictive Systems
Towards Automatic Composition of Multicomponent Predictive SystemsTowards Automatic Composition of Multicomponent Predictive Systems
Towards Automatic Composition of Multicomponent Predictive SystemsManuel Martín
 
From sensor readings to prediction: on the process of developing practical so...
From sensor readings to prediction: on the process of developing practical so...From sensor readings to prediction: on the process of developing practical so...
From sensor readings to prediction: on the process of developing practical so...Manuel Martín
 
Quick presentation for the OpenML workshop in Eindhoven 2014
Quick presentation for the OpenML workshop in Eindhoven 2014Quick presentation for the OpenML workshop in Eindhoven 2014
Quick presentation for the OpenML workshop in Eindhoven 2014Manuel Martín
 
Online Detection of Shutdown Periods in Chemical Plants: A Case Study
Online Detection of Shutdown Periods in Chemical Plants: A Case StudyOnline Detection of Shutdown Periods in Chemical Plants: A Case Study
Online Detection of Shutdown Periods in Chemical Plants: A Case StudyManuel Martín
 
Artificial Intelligence for Automating Data Analysis
Artificial Intelligence for Automating Data AnalysisArtificial Intelligence for Automating Data Analysis
Artificial Intelligence for Automating Data AnalysisManuel Martín
 
Handling concept drift in data stream mining
Handling concept drift in data stream miningHandling concept drift in data stream mining
Handling concept drift in data stream miningManuel Martín
 
Minería de secuencias de datos
Minería de secuencias de datosMinería de secuencias de datos
Minería de secuencias de datosManuel Martín
 
Minería de secuencias de datos
Minería de secuencias de datosMinería de secuencias de datos
Minería de secuencias de datosManuel Martín
 
AndalucíaPeople: Un sistema de recomendación para sitios de ocio de Andalucía
AndalucíaPeople: Un sistema de recomendación para sitios de ocio de AndalucíaAndalucíaPeople: Un sistema de recomendación para sitios de ocio de Andalucía
AndalucíaPeople: Un sistema de recomendación para sitios de ocio de AndalucíaManuel Martín
 
Introducción a GNU/Linux
Introducción a GNU/LinuxIntroducción a GNU/Linux
Introducción a GNU/LinuxManuel Martín
 
Presentación Día de la Libertad del Software 2011
Presentación Día de la Libertad del Software 2011Presentación Día de la Libertad del Software 2011
Presentación Día de la Libertad del Software 2011Manuel Martín
 
Presentacion Taller de Introducción a Linux SFD2010
Presentacion Taller de Introducción a Linux SFD2010Presentacion Taller de Introducción a Linux SFD2010
Presentacion Taller de Introducción a Linux SFD2010Manuel Martín
 

Más de Manuel Martín (20)

Hogar (Des)Conectado
Hogar (Des)ConectadoHogar (Des)Conectado
Hogar (Des)Conectado
 
Automatizando el aprendizaje basado en datos
Automatizando el aprendizaje basado en datosAutomatizando el aprendizaje basado en datos
Automatizando el aprendizaje basado en datos
 
Modelling Multi-Component Predictive Systems as Petri Nets
Modelling Multi-Component Predictive Systems as Petri NetsModelling Multi-Component Predictive Systems as Petri Nets
Modelling Multi-Component Predictive Systems as Petri Nets
 
Brand engagement with mobile gamification apps from a developer perspective
Brand engagement with mobile gamification apps from a developer perspectiveBrand engagement with mobile gamification apps from a developer perspective
Brand engagement with mobile gamification apps from a developer perspective
 
Effects of change propagation resulting from adaptive preprocessing in multic...
Effects of change propagation resulting from adaptive preprocessing in multic...Effects of change propagation resulting from adaptive preprocessing in multic...
Effects of change propagation resulting from adaptive preprocessing in multic...
 
Improving transport timetables usability for mobile devices
Improving transport timetables usability for mobile devicesImproving transport timetables usability for mobile devices
Improving transport timetables usability for mobile devices
 
Automating Machine Learning - Is it feasible?
Automating Machine Learning - Is it feasible?Automating Machine Learning - Is it feasible?
Automating Machine Learning - Is it feasible?
 
Towards Automatic Composition of Multicomponent Predictive Systems
Towards Automatic Composition of Multicomponent Predictive SystemsTowards Automatic Composition of Multicomponent Predictive Systems
Towards Automatic Composition of Multicomponent Predictive Systems
 
From sensor readings to prediction: on the process of developing practical so...
From sensor readings to prediction: on the process of developing practical so...From sensor readings to prediction: on the process of developing practical so...
From sensor readings to prediction: on the process of developing practical so...
 
Quick presentation for the OpenML workshop in Eindhoven 2014
Quick presentation for the OpenML workshop in Eindhoven 2014Quick presentation for the OpenML workshop in Eindhoven 2014
Quick presentation for the OpenML workshop in Eindhoven 2014
 
Online Detection of Shutdown Periods in Chemical Plants: A Case Study
Online Detection of Shutdown Periods in Chemical Plants: A Case StudyOnline Detection of Shutdown Periods in Chemical Plants: A Case Study
Online Detection of Shutdown Periods in Chemical Plants: A Case Study
 
Artificial Intelligence for Automating Data Analysis
Artificial Intelligence for Automating Data AnalysisArtificial Intelligence for Automating Data Analysis
Artificial Intelligence for Automating Data Analysis
 
Handling concept drift in data stream mining
Handling concept drift in data stream miningHandling concept drift in data stream mining
Handling concept drift in data stream mining
 
Minería de secuencias de datos
Minería de secuencias de datosMinería de secuencias de datos
Minería de secuencias de datos
 
Minería de secuencias de datos
Minería de secuencias de datosMinería de secuencias de datos
Minería de secuencias de datos
 
AndalucíaPeople: Un sistema de recomendación para sitios de ocio de Andalucía
AndalucíaPeople: Un sistema de recomendación para sitios de ocio de AndalucíaAndalucíaPeople: Un sistema de recomendación para sitios de ocio de Andalucía
AndalucíaPeople: Un sistema de recomendación para sitios de ocio de Andalucía
 
Decompiladores
DecompiladoresDecompiladores
Decompiladores
 
Introducción a GNU/Linux
Introducción a GNU/LinuxIntroducción a GNU/Linux
Introducción a GNU/Linux
 
Presentación Día de la Libertad del Software 2011
Presentación Día de la Libertad del Software 2011Presentación Día de la Libertad del Software 2011
Presentación Día de la Libertad del Software 2011
 
Presentacion Taller de Introducción a Linux SFD2010
Presentacion Taller de Introducción a Linux SFD2010Presentacion Taller de Introducción a Linux SFD2010
Presentacion Taller de Introducción a Linux SFD2010
 

Operaciones Colectivas en MPI