[en] The goal of this work is to see which di erences graphical processing units can make while working with big data. Creating a real world application is not part of this goal. Data mining and big data analysis allows organizations to nd useful information and insights from huge amounts of structured or unstructured data. This information can be used to improve all kinds of services to customers or get the upper hand over competitors. In the Information Age data mining is becoming more and more popular due to the fact that more data is available. This is where Hadoop comes in. Hadoop provides a scalable and free framework which enables data analysis and operations on big data. Hadoop is very innovative in the eld of big data. GPU's are highly parallel processors. By executing an algorithm in parallel which would otherwise be executed sequentially an increase in performance can be obtained. The Hadoop framework will be combined with NVIDIA's CUDA to complete the task of data analysis. Hadoop will call CUDA from its mapper or reducer. The computational intensive task will be moved away from Java to CUDA and be done in parallel. This will be done by porting two algorithms to CUDA and run these on all the compute nodes of the Hadoop cluster. The two algorithms are sum of rst n integers and factorial n. Both of them will be written in Java and CUDA in order to compare the execution time. Both implementations of the two algorithms will be executed for millions of di erent values for n. The CUDA implementations will compute multiple factorials or sums at the same time while the Java implementations will compute them all sequentially. This work will show that not every algorithm is a viable option. The algorithm has to match certain criteria in order to create an e ective CUDA port. Being time consuming without the need for large amounts of input or output data is the most important criteria. Obviously the algorithm has to allow a parallel version. If the algorithm needs the result from the previous input value parallelizing it will be a lot harder. This is shown by the factorial n algorithm. This algorithm is computationally intensive but produces a lot of output data. Copying data to and from the GPU is a time consuming task. When a lot of input data is required or a lot of output data is generated, copying this data might have such an impact that there is no more gain in execution time when using CUDA. This work proves that certain algorithms which handle big data can be ported to CUDA with a decrease in execution time as result, while also showing that others do not meet the necessary requirements.

[es] El objetivo de este trabajo es para identificar las ventajas que ofrece el uso de unidades de procesamientos gráfico cuando se trabaja con grandes volúmenes de datos. La minería de datos y análisis big data permite a las organizaciones encontrar información útil de las enormes cantidades de datos estructurados y no estructurados. Esta información puede utilizarse para mejorar todo tipo de servicios a los clientes o conseguir ventaja sobre sus competidores. En la Era de la Información la minería de datos es cada vez más popular debido que hay más datos disponibles. Aquí es donde entra Hadoop. Hadoop ofrece un conjunto de herramientas escalables y libres que permiten el análisis de datos y las operaciones con grandes cantidades de datos. Hadoop es muy innovador en el campo de big data. Los GPU's son procesadores altamente paralelos. Mediante la ejecución de un algoritmo en paralelo se puede mejorar el rendimiento del mismo algoritmo ejecutado secuencialmente. El framework Hadoop se combinará con CUDA de NVIDIA para completar la tarea de análisis de datos. Hadoop llamará CUDA de su mapper o reducer. La tarea intensiva computacional se alejó de Java para CUDA y hacerse en paralelo. La integración de Hadoop y CUDA se ha realizado siendo posible ejecutar algoritmos en los nodos de cómputo del clúster Hadoop con GPUs. Los dos algoritmos son la suma de los primeros n enteros y factorial n. Ambos serán escritos en Java y CUDA con el fin de comparar el tiempo de ejecución. Ambas implementaciones de los dos algoritmos se ejecutarán para millones de diferentes valores de n. Las implementaciones CUDA computarán múltiples factoriales o sumas, al mismo tiempo, mientras que las implementaciones Java computarán todos ellos secuencialmente. Este trabajo demuestra que no todos los algoritmos son opciones viables. El algoritmo tiene que cumplir con ciertos criterios para poder portarlos a CUDA y obtener buenos rendimientos. Si consumen mucho tiempo de ejecución sin la necesidad de grandes cantidades de datos de entrada o de salida entonces el resultado será satisfactorio. Obviamente, el algoritmo tiene que permitir una versión paralela. Si el algoritmo necesita el resultado del valor de entrada anterior paralización será mucho más difícil. Esto se muestra para el algoritmo factorial. Este algoritmo es computacionalmente intensivo, pero produce una gran cantidad de datos de salida. Copia de datos desde y hacia la GPU es una tarea que consume mucho tiempo. Cuando se requiere una gran cantidad de datos de entrada o se genera una gran cantidad de datos de salida, la copia de estos datos podrá tener un impacto tan grande que no hay más ganancia en tiempo de ejecución cuando se utiliza CUDA. Este trabajo demuestra que ciertos algoritmos que manejan grandes volúmenes de datos se pueden trasladar a CUDA con una disminución en el tiempo de ejecución.