<?xml version="1.0" encoding="ISO-8859-1"?><article xmlns:mml="http://www.w3.org/1998/Math/MathML" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<front>
<journal-meta>
<journal-id>2227-1899</journal-id>
<journal-title><![CDATA[Revista Cubana de Ciencias Informáticas]]></journal-title>
<abbrev-journal-title><![CDATA[Rev cuba cienc informat]]></abbrev-journal-title>
<issn>2227-1899</issn>
<publisher>
<publisher-name><![CDATA[Editorial Ediciones Futuro]]></publisher-name>
</publisher>
</journal-meta>
<article-meta>
<article-id>S2227-18992017000200009</article-id>
<title-group>
<article-title xml:lang="es"><![CDATA[Algoritmo paralelo para la obtención de predicados difusos: Parallel Algorithm to obtain fuzzy predicates]]></article-title>
</title-group>
<contrib-group>
<contrib contrib-type="author">
<name>
<surname><![CDATA[Lapeira Mena]]></surname>
<given-names><![CDATA[Orenia]]></given-names>
</name>
<xref ref-type="aff" rid="A01"/>
</contrib>
<contrib contrib-type="author">
<name>
<surname><![CDATA[Ceruto Cordovés]]></surname>
<given-names><![CDATA[Taymi]]></given-names>
</name>
<xref ref-type="aff" rid="A01"/>
</contrib>
<contrib contrib-type="author">
<name>
<surname><![CDATA[Rosete Suárez]]></surname>
<given-names><![CDATA[Alejandro]]></given-names>
</name>
<xref ref-type="aff" rid="A01"/>
</contrib>
<contrib contrib-type="author">
<name>
<surname><![CDATA[Díaz Pando]]></surname>
<given-names><![CDATA[Humberto]]></given-names>
</name>
<xref ref-type="aff" rid="A01"/>
</contrib>
</contrib-group>
<aff id="A01">
<institution><![CDATA[,Instituto Superior Politécnico José Antonio Echeverría (CUJAE) Facultad de Ingeniería Informática ]]></institution>
<addr-line><![CDATA[ La Habana]]></addr-line>
<country>Cuba</country>
</aff>
<pub-date pub-type="pub">
<day>00</day>
<month>06</month>
<year>2017</year>
</pub-date>
<pub-date pub-type="epub">
<day>00</day>
<month>06</month>
<year>2017</year>
</pub-date>
<volume>11</volume>
<numero>2</numero>
<fpage>117</fpage>
<lpage>133</lpage>
<copyright-statement/>
<copyright-year/>
<self-uri xlink:href="http://scielo.sld.cu/scielo.php?script=sci_arttext&amp;pid=S2227-18992017000200009&amp;lng=en&amp;nrm=iso"></self-uri><self-uri xlink:href="http://scielo.sld.cu/scielo.php?script=sci_abstract&amp;pid=S2227-18992017000200009&amp;lng=en&amp;nrm=iso"></self-uri><self-uri xlink:href="http://scielo.sld.cu/scielo.php?script=sci_pdf&amp;pid=S2227-18992017000200009&amp;lng=en&amp;nrm=iso"></self-uri><abstract abstract-type="short" xml:lang="es"><p><![CDATA[RESUMEN El acelerado desarrollo en las distintas ramas de la ciencia y la ingeniería, exigen el diseño de novedosas técnicas de computación que permitan el procesamiento de grandes cantidades de datos, reduciendo los tiempos de respuesta y posibilitando el tratamiento de problemas complejos. FuzzyPred es un método de minería de datos que permite obtener predicados difusos en forma normal, como vía de representación del conocimiento. Para este método el tamaño de la base de datos es un factor esencial en los tiempos de respuesta del algoritmo, ya que cada predicado generado es evaluado en cada uno de los registros de la base de datos. Cuando este proceso se realiza de forma secuencial, se desaprovechan las arquitecturas de hardware que existen hoy en día para el procesamiento de grandes volúmenes de datos. Esto trae como consecuencia, que, en dependencia del tamaño de la base de datos, se pueden llegar a obtener largos tiempos de ejecución. En este trabajo se propone una versión paralela del algoritmo FuzzyPred, basado en la cantidad de datos que se pueden procesar dentro de cada uno de los hilos de procesamiento, de forma sincrónica e independiente. Los resultados obtenidos durante la experimentación realizada, indican que el algoritmo paralelo puede llegar a ser 10 veces más rápido que el secuencial y es por ello que se considera que puede ser muy útil en la mejora de la eficiencia del algoritmo ante bases de datos muy grandes.]]></p></abstract>
<abstract abstract-type="short" xml:lang="en"><p><![CDATA[ABSTRACT The rapid development in several fields of science and engineering, requires the design of novel computational techniques that allow processing large amounts of data, reducing response times and enabling the treatment of complex problems. FuzzyPred is a data mining method that allows obtaining fuzzy predicates in normal forms. For this method the size of the database is an essential factor in the response time of the algorithm, as each predicate is evaluated in each of the records in the database. When process is performed sequentially, it does not employ current hardware architectures that exist today for processing large volumes of data. This results in long runtimes, depending of the size of the database. This paper proposes a parallelized version of FuzzyPred, based on the amount of data that can be processed within each processing threads, synchronously and independent. The results obtained during experimentation indicate that the parallel algorithm is up to 10 times faster than the sequential version and that is why it is considered that can be very useful in improving the efficiency of the algorithm in very large databases.]]></p></abstract>
<kwd-group>
<kwd lng="es"><![CDATA[Paralelización de Datos]]></kwd>
<kwd lng="es"><![CDATA[Predicados Difusos]]></kwd>
<kwd lng="es"><![CDATA[Minería de Datos]]></kwd>
<kwd lng="en"><![CDATA[Data parallelization]]></kwd>
<kwd lng="en"><![CDATA[Fuzzy Predicates]]></kwd>
<kwd lng="en"><![CDATA[Data Mining.]]></kwd>
</kwd-group>
</article-meta>
</front><body><![CDATA[ <p align="right"><font face="Verdana, Arial, Helvetica, sans-serif" size="2"><B>ART&Iacute;CULO  ORIGINAL</B></font></p>     <p>&nbsp;</p>     <p><font size="4"><strong><font face="Verdana, Arial, Helvetica, sans-serif">Algoritmo  paralelo para la obtenci&oacute;n de predicados difusos</font></strong></font></p>     <p>&nbsp;</p>     <p><font size="3"><strong><font face="Verdana, Arial, Helvetica, sans-serif">Parallel  Algorithm to obtain fuzzy predicates</font></strong></font></p>     <p>&nbsp;</p>     <p>&nbsp;</p>     <P><font size="2"><strong><font face="Verdana, Arial, Helvetica, sans-serif">Orenia Lapeira Mena<strong><sup>1*</sup></strong>,<strong> Taymi Ceruto Cordov&eacute;s<sup>1</sup></strong></font></strong></font><font size="2"><strong><font face="Verdana, Arial, Helvetica, sans-serif">,<strong> Alejandro Rosete Su&aacute;rez<sup>1</sup></strong></font></strong></font><font size="2"><strong><font face="Verdana, Arial, Helvetica, sans-serif">,<strong> Humberto D&iacute;az Pando<sup>1</sup></strong></font></strong></font></p>     <p><font size="2" face="Verdana, Arial, Helvetica, sans-serif"><sup>1</sup>Facultad  de Ingenier&iacute;a Inform&aacute;tica, Instituto Superior Polit&eacute;cnico &ldquo;Jos&eacute; Antonio  Echeverr&iacute;a&rdquo; (CUJAE), 114 #11901 e/ Ciclov&iacute;a y Rotonda, Marianao, La Habana,  Cuba. {olapeira, rosete, hdiazp}@ceis.cujae.edu.cu, taymiceruto@gmail.com </font></p>     <p>&nbsp;</p>     ]]></body>
<body><![CDATA[<P><font face="Verdana, Arial, Helvetica, sans-serif"><span class="class"><font size="2">*Autor para la correspondencia: </font></span></font><font size="2" face="Verdana, Arial, Helvetica, sans-serif"> <a href="mailto:olapeira@ceis.cujae.edu.cu">olapeira@ceis.cujae.edu.cu</a><a href="mailto:ycardosog@uci.cu"></a><a href="mailto:lisvandy@ibp.co.cu"></a><a href="mailto:ycoca@uci.cu"></a><a href="mailto:valery@electrica.cujae.edu.cu"></a><a href="mailto:rtrujillo@edistancia.uo.edu.cu"></a><a href="mailto:jova@uci.cu"></a></font><font face="Verdana, Arial, Helvetica, sans-serif"><a href="mailto:losorio@ismm.edu.cu"></a> </font>     <p>&nbsp;</p>     <p>&nbsp;</p> <hr>     <P><font size="2" face="Verdana, Arial, Helvetica, sans-serif"><b>RESUMEN</b> </font>     <P><font size="2" face="Verdana, Arial, Helvetica, sans-serif">El acelerado desarrollo en las distintas ramas de la ciencia y la  ingenier&iacute;a, exigen el dise&ntilde;o de novedosas t&eacute;cnicas de computaci&oacute;n que permitan  el procesamiento de grandes cantidades de datos, reduciendo los tiempos de  respuesta y posibilitando el tratamiento de problemas complejos. FuzzyPred es  un m&eacute;todo de miner&iacute;a de datos que permite obtener predicados difusos en forma  normal, como v&iacute;a de representaci&oacute;n del conocimiento. Para este m&eacute;todo el tama&ntilde;o  de la base de datos es un factor esencial en los tiempos de respuesta del  algoritmo, ya que cada predicado generado es evaluado en cada uno de los  registros de la base de datos. Cuando este proceso se realiza de forma  secuencial, se desaprovechan las arquitecturas de hardware que existen hoy en  d&iacute;a para el procesamiento de grandes vol&uacute;menes de datos. Esto trae como  consecuencia, que, en dependencia del tama&ntilde;o de la base de datos, se pueden  llegar a obtener largos tiempos de ejecuci&oacute;n. En este trabajo se propone una  versi&oacute;n paralela del algoritmo FuzzyPred, basado en la cantidad de datos que se  pueden procesar dentro de cada uno de los hilos de procesamiento, de forma sincr&oacute;nica  e independiente. Los resultados obtenidos durante la experimentaci&oacute;n realizada,  indican que el algoritmo paralelo puede llegar a ser 10 veces m&aacute;s r&aacute;pido que el  secuencial y es por ello que se considera que puede ser muy &uacute;til en la mejora  de la eficiencia del algoritmo ante bases de datos muy grandes. </font>     <p><font size="2" face="Verdana, Arial, Helvetica, sans-serif"><b><span lang=EN-GB>Palabras clave:</span></b></font> <font size="2" face="Verdana, Arial, Helvetica, sans-serif">Paralelizaci&oacute;n de Datos, Predicados Difusos, Miner&iacute;a de Datos.</font></p> <hr>     <p><font size="2" face="Verdana, Arial, Helvetica, sans-serif"><b><span lang=EN-GB>ABSTRACT</span></b> </font></p>     <p><font size="2" face="Verdana, Arial, Helvetica, sans-serif">The rapid development in several fields of science and engineering,  requires the design of novel computational techniques that allow processing  large amounts of data, reducing response times and enabling the treatment of  complex problems. FuzzyPred is a data mining method that allows obtaining fuzzy  predicates in normal forms. For this method the size of the database is an  essential factor in the response time of the algorithm, as each predicate is  evaluated in each of the records in the database. When process is performed  sequentially, it does not employ current hardware architectures that exist  today for processing large volumes of data. This results in long runtimes,  depending of the size of the database. This paper proposes a parallelized version  of FuzzyPred, based on the amount of data that can be processed within each  processing threads, synchronously and independent. The results obtained during  experimentation indicate that the parallel algorithm is up to 10 times faster  than the sequential version and that is why it is considered that can be very  useful in improving the efficiency of the algorithm in very large databases.</font></p>     <p><font size="2" face="Verdana, Arial, Helvetica, sans-serif"><b><span lang=EN-GB>Key words: </span></b>Data parallelization, Fuzzy Predicates, Data Mining.</font></p> <hr>     <p>&nbsp;</p>     ]]></body>
<body><![CDATA[<p>&nbsp;</p>     <p><font size="3" face="Verdana, Arial, Helvetica, sans-serif"><b>INTRODUCCI&Oacute;N</b></font></p>     <p><font size="2" face="Verdana, Arial, Helvetica, sans-serif">Los avances  tecnol&oacute;gicos han permitido recopilar y almacenar grandes vol&uacute;menes de datos a  lo largo de los a&ntilde;os (Venugopal et al., 2009). Conjuntamente con esto, es significativo  que las aplicaciones actuales posean un gran rendimiento y puedan analizar  estos grandes conjuntos de datos de forma eficaz. Hoy en d&iacute;a, sigue siendo todo  un reto para la miner&iacute;a de datos lograr que sus algoritmos y aplicaciones sean  igual de eficientes ante el aumento del tama&ntilde;o y dimensionalidad de los datos.  Para lograr este objetivo muchas aplicaciones se apoyan en el paralelismo,  debido a que es un &aacute;rea que permite la disminuci&oacute;n del costo en funci&oacute;n del  tiempo de ejecuci&oacute;n de los algoritmos ya que aprovecha las caracter&iacute;sticas de  las arquitecturas de las computadoras actuales para ejecutar varios procesos de  forma concurrente (Mostafa and Hesham, 2005; Hariri and Parashar, 2014).</font></p>     <p><font size="2" face="Verdana, Arial, Helvetica, sans-serif">FuzzyPred es un  m&eacute;todo de miner&iacute;a de datos, que permite la extracci&oacute;n de predicados difusos en  forma normal conjuntiva y disyuntiva(Ceruto, 2014)(Ceruto et al., 2013). Este m&eacute;todo  est&aacute; modelado como un problema de optimizaci&oacute;n combinatoria, debido a que el  espacio de soluciones a recorrer puede llegar a ser muy grande. El algoritmo  encargado de evaluarla calidad de cada predicado tiene una complejidad temporal  polinomial de O (t*k*v), donde t es  cantidad de registros, k es cantidad de cl&aacute;usulas, y v es cantidad de variables)  en el peor caso. Cada soluci&oacute;n (o predicado) generado es evaluado en  cada uno de los registros de la base de datos de forma secuencial. Teniendo en  cuenta lo planteado anteriormente, y debido a que las dimensiones y la cantidad  de variables de las bases de datos actuales, aumentan de tama&ntilde;o todos los d&iacute;as,  se pueden llegar a obtener altos tiempos de respuesta en este proceso por parte  de FuzzyPred. </font></p>     <p><font size="2" face="Verdana, Arial, Helvetica, sans-serif">Debido a que la  computaci&oacute;n paralela deba ser aprovechada en la soluci&oacute;n de problemas de  miner&iacute;a de datos, en este art&iacute;culo se presenta una versi&oacute;n paralela de  FuzzyPred, con el prop&oacute;sito de reducir el tiempo de ejecuci&oacute;n. El objetivo  fundamental del dise&ntilde;o empleado es aplicar un procesamiento paralelo enfocado  en el tama&ntilde;o de la base de datos, donde se aproveche, de forma flexible, las  potencialidades de hardware que existen hoy en d&iacute;a. En el trabajo se realizan  experimentos que permiten comparar la versi&oacute;n secuencial con la versi&oacute;n  paralela de FuzzyPred, en diferentes m&eacute;tricas de rendimiento (particularmente, la  aceleraci&oacute;n y la eficiencia).</font></p>     <p><font size="2" face="Verdana, Arial, Helvetica, sans-serif">El trabajo est&aacute; organizado de la siguiente forma. En  la siguiente secci&oacute;n se exponen las principales tem&aacute;ticas del dise&ntilde;o de  algoritmos paralelos, los paradigmas y herramientas de paralelismo que existen y  sus caracter&iacute;sticas. Adem&aacute;s, se hace una descripci&oacute;n de la biblioteca en la  cual fue dise&ntilde;ado el modelo paralelo del algoritmo. Se establece, la tem&aacute;tica  de FuzzyPred como m&eacute;todo de obtenci&oacute;n de predicados difusos, donde se le da una  especial atenci&oacute;n al proceso de evaluaci&oacute;n de los predicados en la base de  datos y su costo computacional. Seguidamente, se explica la versi&oacute;n paralela  del algoritmo FuzzyPred que se presenta y las bases de su dise&ntilde;o. Posteriormente  se muestran los resultados experimentales obtenidos en varias bases de datos  con diferentes caracter&iacute;sticas, comparando la versi&oacute;n secuencial de este  algoritmo con la versi&oacute;n paralela en diferentes m&eacute;tricas de rendimiento para  algoritmos paralelos. Finalmente, se muestran las conclusiones a las que se  pudo arribar al concluir la etapa de experimentaci&oacute;n.</font> </p>     <p>&nbsp;</p>     <p><font face="Verdana, Arial, Helvetica, sans-serif"><strong><font size="3">MATERIALES Y M&Eacute;TODOS </font></strong></font></p>     <p><font size="2"><strong><font face="Verdana, Arial, Helvetica, sans-serif">Dise&ntilde;o de  Algoritmos Paralelos</font></strong> </font></p>     <p><font size="2" face="Verdana, Arial, Helvetica, sans-serif">Hoy en d&iacute;a muchos problemas necesitan procesar grandes cantidades de datos  y hacer eficientes el tiempo de respuesta de cada una de estas aplicaciones.  Para esto se cuenta con la eficiencia de un computador, el cual depende  directamente del tiempo requerido para ejecutar una instrucci&oacute;n b&aacute;sica y del  n&uacute;mero de instrucciones que pueden ser ejecutadas al mismo tiempo (Ananth et al., 2003). La  programaci&oacute;n paralela es un &aacute;rea de la computaci&oacute;n que permite aprovechar los  recursos de hardware para mejorar el tiempo de ejecuci&oacute;n de los algoritmos.</font></p>     ]]></body>
<body><![CDATA[<p><font size="2" face="Verdana, Arial, Helvetica, sans-serif">En la programaci&oacute;n paralela existen dos tipos de paralelismo (Foster,  2003): paralelismo de control (descomposici&oacute;n funcional) o paralelismo de  datos (descomposici&oacute;n de dominio). La descomposici&oacute;n de dominio o paralelismo  de datos, como tambi&eacute;n se le conoce, consiste en una secuencia de instrucciones  aplicadas a distintos datos. Los datos son divididos en partes y las partes son  asignadas a diferentes procesadores. Cada procesador trabaja solo con la parte  de los datos que son asignados, donde los procesadores pueden necesitar  comunicarse para intercambiar los datos. El paralelismo de datos permite  mantener un flujo &uacute;nico de control y seguir el modelo de Programa &Uacute;nico de  Datos M&uacute;ltiples (SMTP, por sus siglas en ingl&eacute;s). </font></p>     <p><font size="2" face="Verdana, Arial, Helvetica, sans-serif">En la descomposici&oacute;n funcional o paralelismo de tareas (tambi&eacute;n reparto  din&aacute;mico de tareas) el problema se divide en un gran n&uacute;mero de partes m&aacute;s  peque&ntilde;as (muchas m&aacute;s partes que procesadores disponibles) y las sub-tareas son  asignadas a procesadores disponibles. Tan pronto como un procesador termina una  sub-tarea, realiza otra sub-tarea, hasta que terminen todas. El paralelismo de  tareas se implementa sobre un paradigma de maestro y esclavos. El proceso  maestro va asignando las tareas a los procesos esclavos, recogiendo los  resultados producidos y asignando sub-tareas restantes (Foster, 2003). En los a&ntilde;os  recientes, debido al aumento de la escala del paralelismo que es necesaria en  algunas situaciones, se ha llegado a acu&ntilde;ar el t&eacute;rmino Big Data, con su  consiguiente marco conceptual y tecnol&oacute;gico(Fernandez et al., 2014).</font></p>     <p><font size="2" face="Verdana, Arial, Helvetica, sans-serif">Un algoritmo secuencial esencialmente sigue una secuencia de pasos para  resolver un problema utilizando un solo procesador. Similarmente, un algoritmo  paralelo sigue y soluciona la secuencia de pasos usando m&uacute;ltiples procesadores.  Los algoritmos paralelos est&aacute;n dise&ntilde;ados de forma tal que se pueden resolver  varios de estos pasos concurrentemente. Es esencial, para obtener cualquier  beneficio del uso de computadoras paralelas, haber realizado un buen dise&ntilde;o del  algoritmo. </font></p>     <p><font size="2" face="Verdana, Arial, Helvetica, sans-serif">En la pr&aacute;ctica no es trivial realizar este dise&ntilde;o, por lo que se siguen un  conjunto de pasos (se pueden incluir algunos o todos) para el dise&ntilde;o de un  algoritmo paralelo, los cuales se exponen a continuaci&oacute;n (Ananth et al., 2003; Foster, 2003):</font></p> <ol>       <li>         <p><font size="2" face="Verdana, Arial, Helvetica, sans-serif">Identificar  las partes del algoritmo que son m&aacute;s costosas y que puedan ejecutarse de forma  concurrente.</font></p>   </li>       <li>         <p><font size="2" face="Verdana, Arial, Helvetica, sans-serif">Mapear las  partes que se pueden ejecutar concurrentemente dentro de m&uacute;ltiples procesos  paralelos.</font></p>   </li>       <li>         <p><font size="2" face="Verdana, Arial, Helvetica, sans-serif">Distribuir  los datos de entrada, salida e intermedios en el programa.</font></p>   </li>       ]]></body>
<body><![CDATA[<li>         <p><font size="2" face="Verdana, Arial, Helvetica, sans-serif">Permitir  el acceso de los datos a m&uacute;ltiples procesadores.</font></p>   </li>       <li>         <p><font size="2" face="Verdana, Arial, Helvetica, sans-serif">Sincronizar los procesos de varios niveles en  la ejecuci&oacute;n del programa paralelo. </font></p>   </li>     </ol>     <p><font size="2" face="Verdana, Arial, Helvetica, sans-serif"><strong>Paradigmas de la Programaci&oacute;n Paralela</strong></font></p>     <p><font size="2" face="Verdana, Arial, Helvetica, sans-serif">Para mejorar el tiempo de ejecuci&oacute;n de un algoritmo se han creado dos  paradigmas principales: paradigma de memoria compartida y el paradigma de  memoria distribuida. El  paradigma de memoria compartida consiste en que m&uacute;ltiples n&uacute;cleos acceden a la  misma memoria, al contrario de la memoria distribuida, donde se presentan  varios n&uacute;cleos, cada uno con su propia memoria local y que cooperan en conjunto  para resolver tareas mediante alguna herramienta para administrar la ejecuci&oacute;n  de la tarea (Hoeger, 2011; Tosini,2011) . A  continuaci&oacute;n, en la <a href="/img/revistas/rcci/v11n2/t0109217.jpg" target="_blank">tabla 1</a>, se abordan muy brevemente algunas caracter&iacute;sticas  de ellas. </font></p>     <p><font size="2" face="Verdana, Arial, Helvetica, sans-serif">Para cada uno de estos paradigmas muchos investigadores  han desarrollado conjunto de tecnolog&iacute;as que dan soporte a la paralelizaci&oacute;n,  tanto en el paradigma en memoria compartida como en memoria distribuida.</font></p>     <p><font size="2" face="Verdana, Arial, Helvetica, sans-serif">Estas  herramientas ponen en pr&aacute;ctica, todos los conceptos abordados anteriormente y  apoyan el dise&ntilde;o de la programaci&oacute;n paralela. Estas herramientas tambi&eacute;n conocidas como APIs (<em>Aplication Programing Interface</em>)  facilitan el modelado de programas paralelos. A continuaci&oacute;n, se abordan  algunas caracter&iacute;sticas de las tecnolog&iacute;as que existen en la literatura hoy en  d&iacute;a.</font></p>     <p><font size="2" face="Verdana, Arial, Helvetica, sans-serif"><strong>Algunas Tecnolog&iacute;as que implementan la programaci&oacute;n paralela</strong></font></p>     ]]></body>
<body><![CDATA[<p><font size="2" face="Verdana, Arial, Helvetica, sans-serif"><strong>Open MP</strong> (<em>Open  Multi-Processing</em>)(Chapman et al., 2008;  Pas, 2009): proporciona una API, que mediante directivas del compilador y llamadas  a sub-rutinas, proporciona paralelismo de datos. La unidad base es el hilo y  tiene acceso a variables en cache compartida o RAM. Los mejores resultados se  ven cuando los accesos a los datos compartidos tienen bajo coste.&nbsp; Ofrece soporte en C, C++ y FORTRAN, aunque  requiere de compiladores especiales (MP.org, 2014; Pas, 2009). </font></p>     <p><font size="2" face="Verdana, Arial, Helvetica, sans-serif"><strong>Intel TTB</strong> (<em>Intel Threading Building Blocks</em>): Modelo de programaci&oacute;n paralela  basado en rutinas que utilizan hilos. Provee una serie de plantillas, tipos de  datos y algoritmos. TBB est&aacute; pensado de cara al rendimiento, por lo que es  compatible con otras bibliotecas y paquetes (Reinders, 2007).&nbsp; </font></p>     <p><font size="2" face="Verdana, Arial, Helvetica, sans-serif"><strong>Intel ArBB</strong> (<em>Inter Array Building Blocks</em>):  biblioteca para C++ desarrollada para aprovechar diferentes tipos de  procesadores en la resoluci&oacute;n de problemas paralelos. Ofrece un modelo de  programaci&oacute;n basado en la composici&oacute;n din&aacute;mica de patrones estructurados de  programaci&oacute;n paralela. Son m&aacute;s sencillos de entender y depurar.</font></p>     <p><font size="2"><strong><font face="Verdana, Arial, Helvetica, sans-serif">JP</font></strong><font face="Verdana, Arial, Helvetica, sans-serif">: <em>Java Parallel</em> (PJ) es una API de programaci&oacute;n  paralela cuyos principales objetivos son: apoyar tanto a la programaci&oacute;n  paralela en memoria compartida (basadas en hilos de ejecuci&oacute;n) y el grupo de  programaci&oacute;n paralela (basado en paso de mensajes), en una sola API unificada.  Esta biblioteca les brinda a los desarrolladores la posibilidad de implementar  programas paralelos que combinen ambos paradigmas. Es un software libre que se  distribuye bajo los t&eacute;rminos GPL (<em>General  Public License</em>) y est&aacute; implementado 100% en Java, espec&iacute;ficamente en JDK  1.5. Las caracter&iacute;sticas de programaci&oacute;n en memoria compartida est&aacute;n inspiradas  en Open MP (Kaminsky, 2007; Kaminsky, 2015). </font></font></p>     <p><font size="2" face="Verdana, Arial, Helvetica, sans-serif"><strong>Map Reduce Hadoop:</strong>El marco de MapReduce es muy empleado en Big Data (Fernandez et al., 2014). Se basa en el hecho de que la mayor&iacute;a de las tareas de procesamiento de  informaci&oacute;n consideren una estructura similar, es decir, se aplica el mismo  c&aacute;lculo sobre un conjunto de m&aacute;quinas. Los resultados intermedios de cada  computadora se agregan de alguna forma. Esto sobretodo es &uacute;til cuando el  volumen de datos es demasiado grande, lo cual es muy com&uacute;n en entornos como los  asociados al manejo de informaci&oacute;n de las redes sociales. En este marco, es  necesario que el programador especifique las funciones de mapa y reducci&oacute;n  dentro de un trabajo. Luego, el trabajo divide el conjunto de datos de entrada  en subconjuntos independientes que son procesados en paralelo por las tareas de  mapa. MapReduce ordena las salidas de cada tarea y estas se convierten en  entradas que ser&aacute;n procesadas por la tarea Reduce (Dean, 2008).</font></p>     <p><font size="2" face="Verdana, Arial, Helvetica, sans-serif"><strong>CUDA</strong>: (Dispositivo de Arquitectura Computacional Unificada  o <strong><em>C</em></strong><em>ompute <strong>U</strong>nified <strong>D</strong>evice <strong>A</strong>rchitecture</em>): es una  biblioteca para implementaciones paralelas creada por la compa&ntilde;&iacute;a NVIDIA y  basada en el uso de GPUs (tarjetas de procesamiento gr&aacute;fico) de dicha compa&ntilde;&iacute;a.  Se apoya en lenguajes conocidos como C, aunque para alcanzar un alto  rendimiento es necesario realizar optimizaciones manuales sobre la  configuraci&oacute;n y amplio conocimiento de la arquitectura hardware de las GPU (Farber, 2011).</font></p>     <p><font size="2" face="Verdana, Arial, Helvetica, sans-serif"><strong>M&eacute;tricas de  Rendimiento</strong></font></p>     <p><font size="2" face="Verdana, Arial, Helvetica, sans-serif">Cuando se cuenta ya con un algoritmo paralelo, tambi&eacute;n  es necesario conocer el rendimiento que se alcanza al  paralelizarlo, para de esta manera compararlo con la versi&oacute;n secuencial. A los  criterios de evaluaci&oacute;n de los algoritmos paralelos, tambi&eacute;n se les llama  m&eacute;tricas de rendimiento o medidas de rendimiento. El criterio de evaluaci&oacute;n  puede ser simple o compuesto, si se combinan varias m&eacute;tricas (Hesham and Mostafa, 2005) .</font></p>     <p><font size="2" face="Verdana, Arial, Helvetica, sans-serif">La evaluaci&oacute;n  del rendimiento de un algoritmo, se refiere a la medida de alg&uacute;n comportamiento  del algoritmo como la exactitud-precisi&oacute;n, la robustez y adaptabilidad con  diferentes complejidades. Medir el rendimiento de un algoritmo paralelo permite  conocer las caracter&iacute;sticas intr&iacute;nsecas del algoritmo que deben ser  enfatizadas, as&iacute; como la evaluaci&oacute;n de sus beneficios y limitaciones (Hesham and Mostafa, 2005).</font></p>     <p><font size="2" face="Verdana, Arial, Helvetica, sans-serif">Las m&eacute;tricas permiten explorar y refinar el dise&ntilde;o de un algoritmo  paralelo, es decir, son modelos que pueden ser usados para un an&aacute;lisis cualitativo  del rendimiento del algoritmo. Entre estas m&eacute;tricas m&aacute;s empleadas se  encuentran: la aceleraci&oacute;n o <em>speed up,</em> y la eficiencia.</font></p>     ]]></body>
<body><![CDATA[<p><font size="2" face="Verdana, Arial, Helvetica, sans-serif">La aceleraci&oacute;n o <em>speed-up</em> es  una medida que permite calcular el beneficio de un problema paralelo. Se define  como la proporci&oacute;n del tiempo empleado secuencialmente con respecto al tiempo  empleado en la versi&oacute;n paralela, aplicados a procesos id&eacute;nticos(Ananth  et al., 2003). Es decir, permite conocer cu&aacute;ntas veces es m&aacute;s r&aacute;pido el programa  paralelo con respecto al programa secuencial. Se denota por el s&iacute;mbolo S y se  calcula de la manera siguiente, donde Ts representa el tiempo de ejecuci&oacute;n secuencial y Tp el tiempo de ejecuci&oacute;n  paralelo. </font></p>     <p align="center"><img src="/img/revistas/rcci/v11n2/fo0109217.jpg" alt="fo01" width="71" height="43"></p>     <p><font size="2" face="Verdana, Arial, Helvetica, sans-serif">La eficiencia es una  medida que se brinda en funci&oacute;n del tiempo. Est&aacute; definida como la proporci&oacute;n de  aumento de la aceleraci&oacute;n (<em>speed-up</em>)  entre el n&uacute;mero de procesadores. Denota qu&eacute; tan bien se han utilizado los  procesadores, o sea, es la fracci&oacute;n de tiempo que los procesadores emplean para  realizar las tareas asignadas(Ananth et al., 2003).  Matem&aacute;ticamente est&aacute; definida por la siguiente ecuaci&oacute;n, donde Ts es el tiempo  de ejecuci&oacute;n secuencial y Tp es el tiempo de  ejecuci&oacute;n paralelo y P el n&uacute;mero de procesadores empleados.</font></p>     <p align="center"><img src="/img/revistas/rcci/v11n2/fo0209217.jpg" alt="fo09" width="98" height="43"></p>     <p><font size="2" face="Verdana, Arial, Helvetica, sans-serif">El empleo de la computaci&oacute;n paralela se convierte cada d&iacute;a en m&aacute;s grande y  r&aacute;pida, muchos problemas considerados anteriormente muy largos y costosos se  han podido solucionar. El paralelismo se ha utilizado en muchos campos:  estad&iacute;stica, medicina, meteorolog&iacute;a, gen&eacute;tica, geolog&iacute;a, ingenier&iacute;a el&eacute;ctrica y  mec&aacute;nica(Beddo, 2002)(Fernandez et al., 2014) </font></p>     <p><font size="2" face="Verdana, Arial, Helvetica, sans-serif"><strong>La miner&iacute;a de datos  y la programaci&oacute;n paralela</strong></font></p>     <p><font size="2" face="Verdana, Arial, Helvetica, sans-serif">La miner&iacute;a de datos abarca un campo interdisciplinario que tiene como  principal objetivo extraer patrones que permitan identificar un conocimiento  previamente desconocido desde las bases de datos(Han and Kamber, 2011). &nbsp;La tendencia al avance de la tecnolog&iacute;a ha  abierto las puertas a poseer enormes cantidades de datos, donde su an&aacute;lisis tomar&iacute;a  demasiado tiempo y costo realizarlo utilizando herramientas tradicionales, lo  cual ha propiciado la aparici&oacute;n del t&eacute;rmino Big Data(Fernandez et al., 2014). Si al inicio el reto principal para la miner&iacute;a de datos era la obtenci&oacute;n  de patrones que permitan obtener conocimiento, actualmente tambi&eacute;n lo es, el  an&aacute;lisis de los grandes sistemas de datos con los que se cuentan hoy en d&iacute;a. &nbsp;Es por ello que el paralelismo resulta ser de  gran importancia en esta &aacute;rea de la computaci&oacute;n, como v&iacute;a de soluci&oacute;n para que  los algoritmos y t&eacute;cnicas puedan procesar bases de datos con esta  dimensionalidad.</font></p>     <p><font size="2" face="Verdana, Arial, Helvetica, sans-serif">Las tareas de la miner&iacute;a de datos pueden clasificarse en tareas  descriptivas y predictivas. Los objetivos de las tareas de descripci&oacute;n es  encontrar patrones y asociaciones interpretables en los datos. Por otra parte,  las tareas de predicci&oacute;n consisten en encontrar posibles valores y distribuci&oacute;n  de atributos futuros (Hern&aacute;ndez et al., 2004)(Han and Kamber, 2011; Kantardzic, 2011). </font></p>     <p><font face="Verdana, Arial, Helvetica, sans-serif"><strong><font size="2">FuzzyPred</font></strong></font></p>     <p><font size="2" face="Verdana, Arial, Helvetica, sans-serif">FuzzyPred es un m&eacute;todo de miner&iacute;a de datos que propone los predicados  difusos en forma normal conjuntiva y disyuntiva como v&iacute;a de representaci&oacute;n del conocimiento.  Este m&eacute;todo resuelve una tarea descriptiva donde no se conoce a ciencia cierta  qu&eacute; tipo de relaciones se van a encontrar, se trata de buscar patrones que  describan los datos y sus relaciones. Este m&eacute;todo est&aacute; modelado como un  problema de optimizaci&oacute;n combinatoria debido a que el espacio de soluciones por  el que puede transitar puede llegar a ser inmenso(Ceruto T. , 2014).</font></p>     ]]></body>
<body><![CDATA[<p><font size="2" face="Verdana, Arial, Helvetica, sans-serif"><strong>An&aacute;lisis de los  procesos principales de FuzzyPred</strong></font></p>     <p><font size="2" face="Verdana, Arial, Helvetica, sans-serif">Con el prop&oacute;sito de optimizar el tiempo de ejecuci&oacute;n de FuzzyPred, fue  realizado un estudio de los procesos principales, y que necesitan, desde el  punto de vista computacional, m&aacute;s prestaciones, ya que poseen m&aacute;s carga de  trabajo y se demoran en ejecutarse. Debido a sus caracter&iacute;sticas, los procesos  identificados fueron: la evaluaci&oacute;n de cada predicado y la etapa de  post-procesamiento de los resultados. </font></p>     <p><font size="2" face="Verdana, Arial, Helvetica, sans-serif">El proceso de evaluaci&oacute;n de los predicados interact&uacute;a con todo el sistema  de datos. En este proceso resulta clave, tener en cuenta el tama&ntilde;o que estos  sistemas pudieran tener. Es importante en este proceso, recalcar que como  consecuencia a toda la acumulaci&oacute;n de informaci&oacute;n que se tiene actualmente, las  bases de datos pueden llegar a ser inmensas, por lo que paralelizar este  proceso es un aspecto fundamental para un buen funcionamiento de FuzzyPred,  siempre que se ejecute en una computadora que tenga varios hilos de ejecuci&oacute;n.</font></p>     <p><font size="2" face="Verdana, Arial, Helvetica, sans-serif">La etapa de post-procesamiento, por otra parte, tiene como principal  objetivo ofrecer un conjunto de predicados m&aacute;s legibles para la comprensi&oacute;n del  usuario y est&aacute; formado por cuatro m&eacute;todos principales: eliminar predicados repetidos, eliminar  cl&aacute;usulas iguales, decremento de variables y eliminar predicados evidentes.  Estas funciones interact&uacute;an con todos los resultados obtenidos por FuzzyPred, y  necesitan procesar la estructura de cada predicado, y comparar, en la gran  mayor&iacute;a de los casos, con los restantes predicados del conjunto. Uno de los  retos hoy en d&iacute;a de la miner&iacute;a de datos, es el gran n&uacute;mero de soluciones que  pueden estar brindando cada uno de los algoritmos. En el caso espec&iacute;fico de  FuzzyPred, el n&uacute;mero de predicados obtenidos puede ser muy grande, aun cuando  las bases de datos no son tan grandes, ya que el espacio de soluciones que  puede estar recorriendo es enorme, debido a que la cantidad de variables del  problema aumenta, siendo este &uacute;ltimo, un elemento significativo, porque se trabaja con etiquetas ling&uuml;&iacute;sticas y  no con los atributos reales de las bases de datos. </font></p>     <p><font size="2" face="Verdana, Arial, Helvetica, sans-serif">Para el caso de la etapa de post-procesamiento no es aplicable un modelo de  paralelizaci&oacute;n funcional, debido que estas funciones son dependientes unas de  otras. Fueron creadas con un orden definitivo e inviolable ya que los valores  de salida de una representan los valores de entrada de la pr&oacute;xima funci&oacute;n(Lapeira , 2012). </font></p>     <p><font size="2" face="Verdana, Arial, Helvetica, sans-serif">Para analizar cada uno de estos procesos, se tuvo en cuenta su  complejidad algor&iacute;tmica. La complejidad algor&iacute;tmica(Guerequeta&nbsp; and  Vallecillo, 1998)representa la cantidad de recursos temporales que necesita un algoritmo  para resolver un problema y por tanto permite determinar la eficiencia de dicho  algoritmo. Los criterios que se van a emplear para evaluar la complejidad  algor&iacute;tmica no proporcionan medidas absolutas sino medidas relativas al tama&ntilde;o  del problema. </font></p>     <p><font size="2" face="Verdana, Arial, Helvetica, sans-serif">En el proceso de evaluaci&oacute;n existen ciclos anidados, el an&aacute;lisis de cada  uno se va a realizar de adentro hacia afuera. El primer paso del algoritmo es  evaluar cada variable de cada una de las cl&aacute;usulas, este proceso tiene una  complejidad de O (1) para cada variable,  por lo que para todo el conjunto ser&iacute;a una complejidad O (v), donde v representa la cantidad de  variables de una cl&aacute;usula. El segundo proceso es  evaluar cada cl&aacute;usula de un predicado, para este proceso se tiene en cuenta si  el predicado est&aacute; en FNC o FND y la complejidad es O (k) * (O (v) + O (v)) = O  (k) * max (O (v), O (v)) = O (k * v) donde k representa la cantidad de  cl&aacute;usulas.&nbsp; El tercer proceso es evaluar  el predicado para cada registro de la base de datos, para este ciclo tambi&eacute;n se  tiene en cuenta la estructura del predicado y la orden es O  (t) * (O (k *v) + O (k)) = O (t) * max (O (k *v), O (k)) = O (t * k * v) donde  t representa la cantidad de registros de la base de datos(Taymi, 2010).El  tiempo de ejecuci&oacute;n de una secuencia de instrucciones es igual a la suma de sus  tiempos de ejecuci&oacute;n individuales, lo cual es equivalente al m&aacute;ximo orden. En FuzzyPred es: max (O (t  *k *v), O (t)) = O (t *k *v). Este tiempo de ejecuci&oacute;n puede ser considerable  ya que los factores que influyen en el mismo, tambi&eacute;n pueden tomar grandes  valores. Es por ello que la siguiente secci&oacute;n se basa en la propuesta de  paralelizaci&oacute;n de este algoritmo espec&iacute;ficamente en el proceso de evaluaci&oacute;n de  los predicados difusos.</font></p>     <p><font size="2"><strong><font face="Verdana, Arial, Helvetica, sans-serif">Propuesta de dise&ntilde;o  paralelo en FuzzyPred como soluci&oacute;n a la gran dimensionalidad de los datos</font></strong></font></p>     <p><font size="2" face="Verdana, Arial, Helvetica, sans-serif">Para el dise&ntilde;o  de paralelizaci&oacute;n de FuzzyPred espec&iacute;ficamente en el proceso de evaluaci&oacute;n se  aplica el paradigma de paralelismo de datos, aplicado b&aacute;sicamente a la base de  datos que se vaya a utilizar en el proceso de miner&iacute;a.</font></p>     <p><font size="2" face="Verdana, Arial, Helvetica, sans-serif">En este dise&ntilde;o se realiz&oacute; la evaluaci&oacute;n del predicado, en cada parte del  sistema de datos de forma independiente y simult&aacute;neamente. Para esto se sigue  un conjunto de pasos, los cuales se abordan a continuaci&oacute;n:</font></p> <ol>       ]]></body>
<body><![CDATA[<li>         <p><font size="2" face="Verdana, Arial, Helvetica, sans-serif">En  principio, se conoce la cantidad de hilos de ejecuci&oacute;n  del procesador de la computadora. Este  proceso la biblioteca Java Parallel lo realiza de forma escalable. </font></p>   </li>       <li>         <p><font size="2" face="Verdana, Arial, Helvetica, sans-serif">Posteriormente,  se procede a realizar grupos en dependencia de la cantidad de hilos que  contenga la arquitectura donde se ejecute el algoritmo. </font></p>   </li>       <li>         <p><font size="2" face="Verdana, Arial, Helvetica, sans-serif">Consecutivamente,  se asignan los grupos creados, los hilos de ejecuci&oacute;n de forma din&aacute;mica  buscando que todos los hilos tengan la misma cantidad de trabajo. </font></p>   </li>       <li>         <p><font size="2" face="Verdana, Arial, Helvetica, sans-serif">Para concluir se utiliz&oacute; una  barrera (<em>barrier</em>), para realizar la  evaluaci&oacute;n aplicando el cuantificador universal, ya que el mismo necesita  conocer todos los valores de verdad del predicado en cada uno de los registros  de la base de datos. </font></p>   </li>     </ol>     <p><font size="2" face="Verdana, Arial, Helvetica, sans-serif">Posteriormente, en la <a href="#f01">Figura 1</a> se muestra un diagrama de bloque donde se  explica el dise&ntilde;o de paralelizaci&oacute;n para el proceso de evaluaci&oacute;n de los  predicados, identificando los par&aacute;metros de entrada, el dise&ntilde;o paralelo y las  salidas del algoritmo. Este diagrama est&aacute; basado solamente en el modelo de  evaluaci&oacute;n de los predicados difusos.</font></p>     ]]></body>
<body><![CDATA[<p><font size="2" face="Verdana, Arial, Helvetica, sans-serif">Debido a que no se dispone una infraestructura para el paradigma de  memoria distribuida, es necesario en este trabajo emplear el paradigma de  memoria compartida. Hoy en d&iacute;a la responsabilidad de conseguir un buen  rendimiento no solo recae en el dise&ntilde;o, sino tambi&eacute;n en el software, porque los  programas deben adaptarse para aprovechar las ventajas de las caracter&iacute;sticas  paralelas que presenta el hardware. </font></p>     <p><font size="2" face="Verdana, Arial, Helvetica, sans-serif">La biblioteca  seleccionada fue Java Parallel debido a que FuzzyPred se encuentra implementado  en este mismo lenguaje y adem&aacute;s Java Parallel soporta todos los paradigmas  multi-n&uacute;cleo de la programaci&oacute;n paralela, incluyendo la memoria compartida y se  adapta, a las caracter&iacute;sticas de la computadora en la que se ejecute, de forma  escalable, siendo este &uacute;ltimo aspecto muy importante para el paradigma de  memoria compartida. </font></p>     <p><font size="2" face="Verdana, Arial, Helvetica, sans-serif">Seguidamente, se expone el programa que contiene el dise&ntilde;o del modelo  paralelo, utilizando las clases que provee la biblioteca Java Parallel para la  modelaci&oacute;n en memoria compartida.</font></p>     <p><font size="2" face="Verdana, Arial, Helvetica, sans-serif">En la versi&oacute;n paralela propuesta de la evaluaci&oacute;n de  los predicados, el programa crea un <strong><em>Parallel Team</em></strong>, que es un objeto que  contiene un n&uacute;mero de hilos ocultos(Kaminsky,  2015). El n&uacute;mero de hilos se puede especificar utilizando  el m&eacute;todo <em>getThreadCount</em> (), de esta misma clase. Este m&eacute;todo crea un hilo para cada CPU en la m&aacute;quina SMP (Symmetric  Multi-Processing). Entonces, el programa crea una secci&oacute;n paralela (<strong><em>Parallel  Section</em></strong>) para cada hilo de ejecuci&oacute;n y divide la cantidad de datos  seg&uacute;n la cantidad de hilos de ejecuci&oacute;n, asignando paquetes de igual tama&ntilde;o  para ejecutar en la regi&oacute;n paralela.</font> </p>     <p align="center"><img src="/img/revistas/rcci/v11n2/f0109217.jpg" alt="f01" width="427" height="444"><a name="f01"></a></p>     <p><font size="2" face="Verdana, Arial, Helvetica, sans-serif">Cada hilo del equipo invoca al m&eacute;todo de  ejecuci&oacute;n de la regi&oacute;n paralela (<strong><em>Parallel Region</em></strong>), y la m&aacute;quina  virtual de Java (JVM) ejecuta (<strong><em>run</em></strong>) simult&aacute;neamente en cada uno de  los hilos, cada uno en su propio procesador. En cada iteraci&oacute;n de cada secci&oacute;n  (i), se ejecuta cada hilo. Este objeto proporciona un reparto de tareas en  paralelo sobre el rango de &iacute;ndice de 0 hasta la cantidad de secciones. Por lo  tanto, los hilos del equipo ejecutan simult&aacute;neamente diferentes porciones de  los datos. Finalmente se utiliza el m&eacute;todo addAll de java para  agrupar todos los resultados de cada hilo de ejecuci&oacute;n, para realizar el  cuantificador universal. </font></p>     <p>&nbsp;</p>     <p><font face="Verdana, Arial, Helvetica, sans-serif"><strong><font size="3">RESULTADOS Y DISCUSI&Oacute;N </font></strong></font></p>     <p><font size="2" face="Verdana, Arial, Helvetica, sans-serif">En esta secci&oacute;n se presenta la validaci&oacute;n de la soluci&oacute;n propuesta. Para  esto se hace uso de las m&eacute;tricas de rendimiento aplicadas a algoritmos  paralelos y se desarrolla una serie de pruebas comparativas. El objetivo de  este ac&aacute;pite es comprobar que el tiempo de ejecuci&oacute;n del algoritmo paralelo  disminuye respecto a su versi&oacute;n secuencial. </font></p>     <p><font size="2" face="Verdana, Arial, Helvetica, sans-serif">Para los experimentos, se  tuvieron en cuenta varias bases de datos, con diferentes caracter&iacute;sticas (se  muestran en la <a href="#t02">Tabla 2</a>). Estas bases de datos, son del entorno real y fueron  tomadas de la <em>UC Irvine Machine Learning  Repository</em>, la cual pone a disposici&oacute;n de los investigadores, una amplia  gama de datos recopilados de diferentes &aacute;reas. Las bases de datos escogidas  poseen diferentes tama&ntilde;os, con el prop&oacute;sito de valorar esta  caracter&iacute;stica. </font></p>     ]]></body>
<body><![CDATA[<p align="center"><img src="/img/revistas/rcci/v11n2/t0209217.jpg" alt="t02" width="477" height="94"><a name="t02"></a></p>     <p><font size="2" face="Verdana, Arial, Helvetica, sans-serif">El algoritmo fue probado en Java bajo el ambiente de desarrollo Eclipse,  compilados con el JDK 1.7. Para analizar el comportamiento del algoritmo  paralelo, fueron dise&ntilde;ados tres  escenarios, con diferentes objetivos. El objetivo del primer escenario es  comparar la versi&oacute;n secuencial con la versi&oacute;n paralela de FuzzyPred, para esto  ambas versiones fueron ejecutadas en la misma computadora con iguales  prestaciones de hardware y bajo la misma configuraci&oacute;n de entrada del FuzzyPred  (los mismos par&aacute;metros de entrada del algoritmo y en una misma base de datos).  Estos par&aacute;metros se encuentran reflejados en la <a href="/img/revistas/rcci/v11n2/t0309217.jpg" target="_blank">Tabla 3</a>.</font></p>     <p>T<font size="2" face="Verdana, Arial, Helvetica, sans-serif">al y como se muestra en la <a href="#t04">tabla 4</a> se tom&oacute; el tiempo de  ejecuci&oacute;n (en minutos) de FuzzyPred en ambas versiones (secuencial y paralelo).  Es importante aclarar que a pesar que las bases de datos no poseen una gran  cantidad de registros (lo que representa un factor negativo ya que pudiera ser  que la propuesta paralela no muestre mejora) el tiempo de ejecuci&oacute;n paralelo  mejora al tiempo de ejecuci&oacute;n secuencial en un 10%, demostrando para esta  &uacute;ltima versi&oacute;n una mejor&iacute;a. </font></p>     <p><font size="2" face="Verdana, Arial, Helvetica, sans-serif">Los resultados alcanzados en este experimento son los siguientes:</font></p>     <p align="center"><img src="/img/revistas/rcci/v11n2/t0409217.jpg" alt="t04" width="440" height="142"><a name="t04"></a></p>     <p><font size="2" face="Verdana, Arial, Helvetica, sans-serif">El objetivo del segundo escenario es comparar la  versi&oacute;n paralela de FuzzyPred frente a varias computadoras con diferentes  caracter&iacute;sticas y poder conocer el comportamiento del mismo en diferentes  entornos de hardware. A continuaci&oacute;n, se muestra en la <a href="/img/revistas/rcci/v11n2/t0509217.jpg">tabla 5</a> los par&aacute;metros de  configuraci&oacute;n de FuzzyPred y en la <a href="/img/revistas/rcci/v11n2/t0609217.jpg" target="_blank">tabla 6</a> las caracter&iacute;sticas de cada una de  las computadoras en las que se ejecutan los experimentos.</font></p>     <p><font size="2" face="Verdana, Arial, Helvetica, sans-serif">Posteriormente, en la <a href="/img/revistas/rcci/v11n2/t0709217.jpg" target="_blank">tabla 7</a> se muestran los resultados  alcanzados en cada una de las arquitecturas de hardware, respecto al tiempo de  ejecuci&oacute;n paralelo, el tiempo de ejecuci&oacute;n secuencial, y los valores para las  m&eacute;tricas de aceleraci&oacute;n y eficiencia. </font></p>     <p><font size="2" face="Verdana, Arial, Helvetica, sans-serif">Los resultados arrojados en el escenario 2, reflejados en la <a href="/img/revistas/rcci/v11n2/f0209217.jpg" target="_blank">figura 2</a>,  respecto al tiempo de ejecuci&oacute;n, demuestran que los mejores valores son  encontrados en la arquitectura Intel Core i7, debido a que es el que mejores  prestaciones de computo posee. Sin embargo, en la <a href="#f03">figura 3</a> se muestran los  resultados en cada una de las medidas tenidas en cuenta en este trabajo, donde  se puede observar que la aceleraci&oacute;n aumenta a medida que va mejorando las  caracter&iacute;sticas del hardware, por el contrario de la eficiencia, la cual  disminuye, pues nuestro dise&ntilde;o es capaz de explotar las caracter&iacute;sticas del  hardware.</font></p>     <p align="center"><img src="/img/revistas/rcci/v11n2/f0309217.jpg" alt="f03" width="572" height="308"><a name="f03"></a></p>     <p><font size="2" face="Verdana, Arial, Helvetica, sans-serif">Para el tercer escenario fueron comparados los tiempos  de ejecuci&oacute;n de FuzzyPred en su versi&oacute;n paralela, con la cantidad de registros  de la base de datos. Este escenario tiene como objetivo conocer cu&aacute;nto mejora  el tiempo de ejecuci&oacute;n en funci&oacute;n del tama&ntilde;o de las bases de datos. Los  par&aacute;metros de configuraci&oacute;n se encuentran en la <a href="/img/revistas/rcci/v11n2/t0809217.jpg" target="_blank">tabla 8</a> ylos resultados de este  escenario son mostrados en la <a href="#t09">tabla 9</a>.</font></p>     ]]></body>
<body><![CDATA[<p><font size="2" face="Verdana, Arial, Helvetica, sans-serif">Es posible  plantear que el tiempo de ejecuci&oacute;n de FuzzyPred es mayor para Quacke ya que la  base de datos es mucho m&aacute;s grande (contiene m&aacute;s registros), tal y como se muestra  en la <a href="#t09">tabla 9</a>, adem&aacute;s, el tama&ntilde;o de los datos es un factor relevante en el  tiempo de ejecuci&oacute;n del algoritmo. Es importante se&ntilde;alar que la correspondencia  entre tama&ntilde;o de los datos y tiempo de ejecuci&oacute;n es proporcional, ya que disminuye  el tiempo de acuerdo al tama&ntilde;o de la base de datos. Las m&eacute;tricas aceleraci&oacute;n y  eficiencia son medidas inversamente proporcionales, tal y como se muestra en la  <a href="#f04">figura 4</a>. </font></p>     <p align="center"><img src="/img/revistas/rcci/v11n2/t0909217.jpg" alt="t09" width="550" height="148"><a name="t09"></a></p>     <p align="center"><img src="/img/revistas/rcci/v11n2/f0409217.jpg" alt="f04" width="475" height="311"><a name="f04"></a></p>     <p>&nbsp;</p>     <p><font face="Verdana, Arial, Helvetica, sans-serif" size="3"><B>CONCLUSIONES</B></font></p>     <p><font size="2" face="Verdana, Arial, Helvetica, sans-serif">En este trabajo se presenta un dise&ntilde;o de paralelismo de datos implementado  en la biblioteca Java Parallel. El dise&ntilde;o paralelo propuesto logra reducir el  tiempo de ejecuci&oacute;n de la versi&oacute;n secuencial. El modelo se basa en dividir la  cantidad de datos en dependencia de la cantidad de procesadores de la  arquitectura de hardware. Los resultados experimentales confirmaron que la  versi&oacute;n paralela logra reducir en un 10 % a la versi&oacute;n secuencial. En los  experimentos se comprueba que los resultados mejoran de acuerdo a las  caracter&iacute;sticas de hardware, de forma proporcional y que el algoritmo es m&aacute;s  r&aacute;pido en bases de datos m&aacute;s peque&ntilde;as. Se recomienda realizar otras pruebas con  bases de datos m&aacute;s grandes y en otros tipos de arquitecturas de hardware. </font></p>     <p>&nbsp;</p>     <p align="left"><font face="Verdana, Arial, Helvetica, sans-serif" size="3"><B>REFERENCIAS    BIBLIOGR&Aacute;FICAS</B></font>     <!-- ref --><p><font size="2"><a><font face="Verdana, Arial, Helvetica, sans-serif">ANANTH, G., G. ANSHUL, K. GEORGE and K. VIPIN. Introduction to Parallel  Computing. Addison Wesley, 2003.    </font></a> </font></p>     ]]></body>
<body><![CDATA[<!-- ref --><p><font size="2" face="Verdana, Arial, Helvetica, sans-serif"><a>CHAPMAN  B, G. JOST and R Van der Pas. Using OpenMP: Portable Shared Memory Parallel Programming  Scientific and Engineering Computation. The MIT Press.Massachusetts Institutte  of Technology. ISBN 978-0- 262-53302-7. pp 349. 2008.    </a> </font></p>     <!-- ref --><p><font size="2" face="Verdana, Arial, Helvetica, sans-serif"><a>BEDDO,  V. Applications of Parallel Programming in Statistics. </a>Tesis Doctoral. Universidad de California, Los Angeles,  2002.     </font></p>     <!-- ref --><p><font size="2" face="Verdana, Arial, Helvetica, sans-serif"><a>CERUTO T. M&eacute;todo para el descubrimiento de predicados difusos en forma  normal en bases de datos utilizando metaheur&iacute;sticas. Tesis Doctoral. CUJAE, La  Habana. 2014.    </a> </font></p>     <p><font size="2" face="Verdana, Arial, Helvetica, sans-serif"><a>CERUTO T, O. LAPEIRA, A. ROSETE and R. ESP&Iacute;N.Discovery of fuzzy predicates  in database. </a> Advances in Intelligent Systems  Research (AISR Journal), vol. 51, No 1, pp. 45-54, ISSN 1951-6851, Atlantis  Press, 2013.</font></p>     <!-- ref --><p><font size="2" face="Verdana, Arial, Helvetica, sans-serif"><a>CERUTO  T, O. LAPEIRA, A. ROSETE and R. ESP&Iacute;N. Knowledge Discovery of fuzzy predicates  in database. </a>In Soft Computing for Bussines Intelligence vol 537, pp 187-196, ISSN  1860-949X. Springer Berlin Heidelberg, 2014.    </font></p>     <!-- ref --><p><font size="2" face="Verdana, Arial, Helvetica, sans-serif"><a>CERUTO T. M&eacute;todo para obtener predicados difusos a partir de datos  utilizando metaheur&iacute;sticas. Tesis de Maestr&iacute;a, CUJAE, La Habana, 2010.    </a> </font></p>     <!-- ref --><p><font size="2" face="Verdana, Arial, Helvetica, sans-serif">Dean J, S.  GHEMAWAT. MapReduce:  simplified data processing on large clusters. Commun ACM, vol 51, pp 107-113,  2008.    </font></p>     <!-- ref --><p><font size="2" face="Verdana, Arial, Helvetica, sans-serif"><a>EL-REWINI  H and ABD-EL-BARR. Advance Computer Architecture and Parallel Processing. John  Wiley &amp; Sons, Inc. Hoboken, New Jersey. ISBN 0-471-46740-5, pp 287, 2005.    </a> </font></p>     <!-- ref --><p><font size="2" face="Verdana, Arial, Helvetica, sans-serif"><a>FARBER,  R. CUDA Application Design and Development,</a> Elsevier. ISBN  978-0123884329, pp 336, 2011.    </font></p>     <!-- ref --><p>  <font size="2" face="Verdana, Arial, Helvetica, sans-serif"><a>FERNANDEZ A, S. DEL RIO, V. LOPEZ, M. J. DEL JESUS and F. HERRERA. </a>Big Data with Colud Computing:an insight&nbsp; on the computing enviroment, Map Reduce and  programming frameworks. WIREs Data Mining and Knowledge Discovery.John Wiley  and Sons, vol 4, pp 380-409, 2014.    </font></p>     <!-- ref --><p><font size="2" face="Verdana, Arial, Helvetica, sans-serif"><a>FOSTER,  I. Designing and building parallel programs. Addison Wesley Publishing Company.  ISBN 978-0201575941,pp 430, 2003.    </a> </font></p>     <!-- ref --><p><font size="2" face="Verdana, Arial, Helvetica, sans-serif"><a>GUEREQUETA , R. and A. VALLECILLO. T&eacute;cnicas de Dise&ntilde;o de Algoritmos. </a>Universidad de Malaga. ISBN 84-7496-666-3, 1998.     </font></p>     <!-- ref --><p><font size="2" face="Verdana, Arial, Helvetica, sans-serif"><a>HAN  J, and M. KAMBER. Data Mining: Concepts and Techniques. Morgan Kaufmann. ISBN  978-0123814791</a>, 2011.    </font></p>     <!-- ref --><p><font size="2" face="Verdana, Arial, Helvetica, sans-serif"><a>HARIRI  S, and M. PARASHAR.Tools and Enviroments for Parallel and Distributed  Computing. John Wiley &amp; Sons</a>. ISBN 0-471-33288-7, pag 229, 2014.    </font></p>     <!-- ref --><p><font size="2" face="Verdana, Arial, Helvetica, sans-serif"><a>HERN&Aacute;NDEZ  J, M.J. RAM&Iacute;REZ and C. FERRI. </a>Introducci&oacute;n a  la miner&iacute;a de datos. Pearson Educacion, S.A. Madrid, Universidad Polit&eacute;cnica de  Valencia, Departamento de Sistemas Inform&aacute;ticos y Computaci&oacute;n.ISBN  84-205-4091-9, pp 680, 2004.     </font></p>     <p><font size="2" face="Verdana, Arial, Helvetica, sans-serif"><a>HOEGER, H. Introducci&oacute;n a la Computaci&oacute;n Paralela. Centro Nacional de  C&aacute;lculo Cient&iacute;fico Universidad de Los Andes, M&eacute;rida  (Venezuela)&ndash;Ce-CalCULA,&nbsp; 2011.</a> </font></p>     ]]></body>
<body><![CDATA[<!-- ref --><p><font size="2" face="Verdana, Arial, Helvetica, sans-serif"><a>KAMINSKY,  A. Parallel Java: A unified API for Shared Memory and cluster Parallel  Programming in 100% Java. IEEE International Parallel and Distributed  Processing Symposium, Rochester Institute of Technology, Departament of  Computer Science, Rochester, New York, EUA.</a> 2007.    </font></p>     <!-- ref --><p><font size="2" face="Verdana, Arial, Helvetica, sans-serif"><a>KAMINSKY,  A. The Parallel Java 2 Library Parallel Programming in 100 % Java. Rochester  Institute of Technology, Departament of Computer Science, Rochester, New York,  EUA. 2015.    </a> </font></p>     <!-- ref --><p><font size="2" face="Verdana, Arial, Helvetica, sans-serif"><a>KANTARDZIC,  M. Data Mining: concepts, models, methods and algorithms. </a>John Wiley &amp; Sons, ISBN 978-0-470-89045-5, pp529, 2011.    </font></p>     <!-- ref --><p><font size="2" face="Verdana, Arial, Helvetica, sans-serif"><a>LAPEIRA, O. Redise&ntilde;o de FuzzyPred 1.0. Tesis de Diploma CUJAE, La Habana, 2012.    </a> </font></p>     <!-- ref --><p><font size="2" face="Verdana, Arial, Helvetica, sans-serif"><a>MOSTAFA, A.-E.-B. and H. EL-REWINI.  Fundamentals of Computer Organization and Architecture. Inc. Hoboken, New  Jersey. ISBN 0-471- 46741-3. pp 290. 2005.    </a> </font></p>     ]]></body>
<body><![CDATA[<p><font size="2" face="Verdana, Arial, Helvetica, sans-serif"><a>PAS, R. An Overview of OpenMP 3.0. </a>In<em>.</em>, 2009.IWOMP. Tu Dresden (Alemania). Disponible en  http://iwomp.zih.tu-dresden.de/downloads/2.Overwiew_OpenMP.pdf</font></p>     <!-- ref --><p><font size="2" face="Verdana, Arial, Helvetica, sans-serif"><a>REINDERS, J. Intel threading building  blocks-outfitting C++ for multi-core processor parallelism. </a>OReilly Media.  ISBN 978-1449390860, pp 336, 2007.     </font></p>     <p><font size="2" face="Verdana, Arial, Helvetica, sans-serif">TOSINI, M. Introducci&oacute;n a las arquitecturas paralelas.  2011. Disponible en http://bit.ly/rH9pylQ</font></p>     <p><font size="2" face="Verdana, Arial, Helvetica, sans-serif"><a>OpenMP.org  . The OpenMP API Specification for parallel programming.</a>Disponible en  www.openmp.org </font></p>     <!-- ref --><p><font size="2" face="Verdana, Arial, Helvetica, sans-serif"><a>VENUGOPAL  K, K.G. SRINIVASA and L. M. PATNAIK. Soft Computing for Data Mining  Applications. Springer &nbsp;Berlin  Heidelberg: Springer-Verlag. ISBN 978-3-642-00192-5, pp 354, 2009.    </a></font> </p>     <p>&nbsp;</p>     <p name="_ENREF_1">&nbsp;</p>     <p><font size="2" face="Verdana, Arial, Helvetica, sans-serif">Recibido: 02/09/2016    ]]></body>
<body><![CDATA[<br> Aceptado: 06/02/2017</font></p>      ]]></body><back>
<ref-list>
<ref id="B1">
<nlm-citation citation-type="book">
<person-group person-group-type="author">
<name>
<surname><![CDATA[ANANTH]]></surname>
<given-names><![CDATA[G]]></given-names>
</name>
<name>
<surname><![CDATA[ANSHUL]]></surname>
<given-names><![CDATA[G]]></given-names>
</name>
<name>
<surname><![CDATA[GEORGE]]></surname>
<given-names><![CDATA[K]]></given-names>
</name>
<name>
<surname><![CDATA[VIPIN]]></surname>
<given-names><![CDATA[K]]></given-names>
</name>
</person-group>
<source><![CDATA[Introduction to Parallel Computing.]]></source>
<year>2003</year>
<publisher-name><![CDATA[Addison Wesley]]></publisher-name>
</nlm-citation>
</ref>
<ref id="B2">
<nlm-citation citation-type="book">
<person-group person-group-type="author">
<name>
<surname><![CDATA[CHAPMAN]]></surname>
<given-names><![CDATA[B]]></given-names>
</name>
<name>
<surname><![CDATA[JOST]]></surname>
<given-names><![CDATA[G]]></given-names>
</name>
<name>
<surname><![CDATA[Van der Pas]]></surname>
<given-names><![CDATA[R]]></given-names>
</name>
</person-group>
<source><![CDATA[Using OpenMP: Portable Shared Memory Parallel Programming Scientific and Engineering Computation.]]></source>
<year>2008</year>
<page-range>pp 349</page-range><publisher-name><![CDATA[Massachusetts Institutte of Technology]]></publisher-name>
</nlm-citation>
</ref>
<ref id="B3">
<nlm-citation citation-type="book">
<person-group person-group-type="author">
<name>
<surname><![CDATA[BEDDO]]></surname>
<given-names><![CDATA[V]]></given-names>
</name>
</person-group>
<source><![CDATA[Applications of Parallel Programming in Statistics]]></source>
<year>2002</year>
<publisher-loc><![CDATA[^eLos Angeles Los Angeles]]></publisher-loc>
<publisher-name><![CDATA[Universidad de California]]></publisher-name>
</nlm-citation>
</ref>
<ref id="B4">
<nlm-citation citation-type="book">
<person-group person-group-type="author">
<name>
<surname><![CDATA[CERUTO]]></surname>
<given-names><![CDATA[T]]></given-names>
</name>
</person-group>
<source><![CDATA[Método para el descubrimiento de predicados difusos en forma normal en bases de datos utilizando metaheurísticas.]]></source>
<year>2014</year>
<publisher-loc><![CDATA[^eLa Habana La Habana]]></publisher-loc>
<publisher-name><![CDATA[CUJAE]]></publisher-name>
</nlm-citation>
</ref>
<ref id="B5">
<nlm-citation citation-type="book">
<person-group person-group-type="author">
<name>
<surname><![CDATA[CERUTO]]></surname>
<given-names><![CDATA[T]]></given-names>
</name>
<name>
<surname><![CDATA[LAPEIRA]]></surname>
<given-names><![CDATA[O]]></given-names>
</name>
<name>
<surname><![CDATA[ROSETE]]></surname>
<given-names><![CDATA[A]]></given-names>
</name>
<name>
<surname><![CDATA[ESPÍN]]></surname>
<given-names><![CDATA[R]]></given-names>
</name>
</person-group>
<article-title xml:lang="en"><![CDATA[Discovery of fuzzy predicates in database]]></article-title>
<source><![CDATA[]]></source>
<year>2013</year>
<volume>vol. 51</volume>
<numero>No 1</numero>
<issue>No 1</issue>
<page-range>45-54</page-range><publisher-name><![CDATA[Atlantis Press]]></publisher-name>
</nlm-citation>
</ref>
<ref id="B6">
<nlm-citation citation-type="book">
<person-group person-group-type="author">
<name>
<surname><![CDATA[CERUTO]]></surname>
<given-names><![CDATA[T]]></given-names>
</name>
<name>
<surname><![CDATA[LAPEIRA]]></surname>
<given-names><![CDATA[O]]></given-names>
</name>
<name>
<surname><![CDATA[ROSETE]]></surname>
<given-names><![CDATA[A]]></given-names>
</name>
<name>
<surname><![CDATA[ESPÍN]]></surname>
<given-names><![CDATA[R]]></given-names>
</name>
</person-group>
<source><![CDATA[Knowledge Discovery of fuzzy predicates in database]]></source>
<year>2014</year>
<volume>vol 537</volume>
<page-range>pp 187-196</page-range><publisher-name><![CDATA[Springer Berlin Heidelberg]]></publisher-name>
</nlm-citation>
</ref>
<ref id="B7">
<nlm-citation citation-type="book">
<person-group person-group-type="author">
<name>
<surname><![CDATA[CERUTO]]></surname>
<given-names><![CDATA[T]]></given-names>
</name>
</person-group>
<source><![CDATA[Método para obtener predicados difusos a partir de datos utilizando metaheurísticas]]></source>
<year>2010</year>
<publisher-loc><![CDATA[^eLa Habana La Habana]]></publisher-loc>
<publisher-name><![CDATA[CUJAE]]></publisher-name>
</nlm-citation>
</ref>
<ref id="B8">
<nlm-citation citation-type="book">
<person-group person-group-type="author">
<name>
<surname><![CDATA[Dean]]></surname>
<given-names><![CDATA[J]]></given-names>
</name>
<name>
<surname><![CDATA[GHEMAWAT]]></surname>
<given-names><![CDATA[S]]></given-names>
</name>
</person-group>
<source><![CDATA[MapReduce: simplified data processing on large clusters]]></source>
<year>2008</year>
<volume>vol 51</volume>
<page-range>pp 107-113</page-range><publisher-name><![CDATA[Commun ACM]]></publisher-name>
</nlm-citation>
</ref>
<ref id="B9">
<nlm-citation citation-type="book">
<person-group person-group-type="author">
<name>
<surname><![CDATA[EL-REWINI]]></surname>
<given-names><![CDATA[H]]></given-names>
</name>
<name>
<surname><![CDATA[EL-BARR]]></surname>
<given-names><![CDATA[ABD-]]></given-names>
</name>
</person-group>
<source><![CDATA[Advance Computer Architecture and Parallel Processing.]]></source>
<year>2005</year>
<page-range>pp 287</page-range><publisher-loc><![CDATA[^eNew Jersey New Jersey]]></publisher-loc>
<publisher-name><![CDATA[John Wiley & Sons,]]></publisher-name>
</nlm-citation>
</ref>
<ref id="B10">
<nlm-citation citation-type="book">
<person-group person-group-type="author">
<name>
<surname><![CDATA[FARBER]]></surname>
<given-names><![CDATA[R]]></given-names>
</name>
</person-group>
<source><![CDATA[CUDA Application Design and Development]]></source>
<year>2011</year>
<page-range>336</page-range><publisher-name><![CDATA[Elsevier]]></publisher-name>
</nlm-citation>
</ref>
<ref id="B11">
<nlm-citation citation-type="book">
<person-group person-group-type="author">
<name>
<surname><![CDATA[FERNANDEZ]]></surname>
<given-names><![CDATA[A]]></given-names>
</name>
<name>
<surname><![CDATA[DEL RIO]]></surname>
<given-names><![CDATA[S]]></given-names>
</name>
<name>
<surname><![CDATA[LOPEZ]]></surname>
<given-names><![CDATA[V]]></given-names>
</name>
<name>
<surname><![CDATA[DEL JESUS]]></surname>
<given-names><![CDATA[M. J]]></given-names>
</name>
<name>
<surname><![CDATA[HERRERA]]></surname>
<given-names><![CDATA[F]]></given-names>
</name>
</person-group>
<source><![CDATA[Big Data with Colud Computing: an insight on the computing enviroment]]></source>
<year>2014</year>
<volume>vol 4,</volume>
<page-range>380-409</page-range><publisher-name><![CDATA[John Wiley and Sons]]></publisher-name>
</nlm-citation>
</ref>
<ref id="B12">
<nlm-citation citation-type="book">
<person-group person-group-type="author">
<name>
<surname><![CDATA[FOSTER]]></surname>
<given-names><![CDATA[I]]></given-names>
</name>
</person-group>
<source><![CDATA[Designing and building parallel programs]]></source>
<year>2003</year>
<page-range>pp 430</page-range><publisher-name><![CDATA[Addison Wesley Publishing Company]]></publisher-name>
</nlm-citation>
</ref>
<ref id="B13">
<nlm-citation citation-type="book">
<person-group person-group-type="author">
<name>
<surname><![CDATA[GUEREQUETA]]></surname>
<given-names><![CDATA[R]]></given-names>
</name>
<name>
<surname><![CDATA[VALLECILLO]]></surname>
<given-names><![CDATA[A]]></given-names>
</name>
</person-group>
<source><![CDATA[Técnicas de Diseño de Algoritmos.]]></source>
<year>1998</year>
<publisher-name><![CDATA[Universidad de Malaga]]></publisher-name>
</nlm-citation>
</ref>
<ref id="B14">
<nlm-citation citation-type="book">
<person-group person-group-type="author">
<name>
<surname><![CDATA[HAN]]></surname>
<given-names><![CDATA[J]]></given-names>
</name>
<name>
<surname><![CDATA[KAMBER]]></surname>
<given-names><![CDATA[M]]></given-names>
</name>
</person-group>
<source><![CDATA[Data Mining: Concepts and Techniques]]></source>
<year>2011</year>
<publisher-name><![CDATA[Morgan Kaufmann]]></publisher-name>
</nlm-citation>
</ref>
<ref id="B15">
<nlm-citation citation-type="book">
<person-group person-group-type="author">
<name>
<surname><![CDATA[HARIRI]]></surname>
<given-names><![CDATA[S]]></given-names>
</name>
<name>
<surname><![CDATA[PARASHAR]]></surname>
<given-names><![CDATA[M]]></given-names>
</name>
</person-group>
<source><![CDATA[Tools and Enviroments for Parallel and Distributed Computing.]]></source>
<year>2014</year>
<page-range>pag 229</page-range><publisher-name><![CDATA[John Wiley & Sons]]></publisher-name>
</nlm-citation>
</ref>
<ref id="B16">
<nlm-citation citation-type="book">
<person-group person-group-type="author">
<name>
<surname><![CDATA[HERNÁNDEZ]]></surname>
<given-names><![CDATA[J]]></given-names>
</name>
<name>
<surname><![CDATA[RAMÍREZ]]></surname>
<given-names><![CDATA[M.J]]></given-names>
</name>
<name>
<surname><![CDATA[FERRI]]></surname>
<given-names><![CDATA[C]]></given-names>
</name>
</person-group>
<source><![CDATA[Introducción a la minería de datos.]]></source>
<year>2004</year>
<page-range>pp 680</page-range><publisher-loc><![CDATA[^eMadrid Madrid]]></publisher-loc>
<publisher-name><![CDATA[Universidad Politécnica de Valencia]]></publisher-name>
</nlm-citation>
</ref>
<ref id="B17">
<nlm-citation citation-type="book">
<person-group person-group-type="author">
<name>
<surname><![CDATA[HOEGER]]></surname>
<given-names><![CDATA[H]]></given-names>
</name>
</person-group>
<source><![CDATA[Introducción a la Computación Paralela.]]></source>
<year>2011</year>
<publisher-loc><![CDATA[^eMérida Mérida]]></publisher-loc>
<publisher-name><![CDATA[Centro Nacional de Cálculo Científico Universidad de Los Andes]]></publisher-name>
</nlm-citation>
</ref>
<ref id="B18">
<nlm-citation citation-type="book">
<person-group person-group-type="author">
<name>
<surname><![CDATA[KAMINSKY]]></surname>
<given-names><![CDATA[A]]></given-names>
</name>
</person-group>
<source><![CDATA[Parallel Java: A unified API for Shared Memory and cluster Parallel Programming in 100% Java.]]></source>
<year>2007</year>
<publisher-loc><![CDATA[^eNew York New York]]></publisher-loc>
<publisher-name><![CDATA[Rochester Institute of Technology, Departament of Computer Science]]></publisher-name>
</nlm-citation>
</ref>
<ref id="B19">
<nlm-citation citation-type="book">
<person-group person-group-type="author">
<name>
<surname><![CDATA[KAMINSKY]]></surname>
<given-names><![CDATA[A]]></given-names>
</name>
</person-group>
<source><![CDATA[The Parallel Java 2 Library Parallel Programming in 100 % Java.]]></source>
<year>2015</year>
<publisher-loc><![CDATA[^eNew York New York]]></publisher-loc>
<publisher-name><![CDATA[Rochester Institute of Technology, Departament of Computer Science,]]></publisher-name>
</nlm-citation>
</ref>
<ref id="B20">
<nlm-citation citation-type="book">
<person-group person-group-type="author">
<name>
<surname><![CDATA[KANTARDZIC]]></surname>
<given-names><![CDATA[M]]></given-names>
</name>
</person-group>
<source><![CDATA[Data Mining: concepts, models, methods and algorithms]]></source>
<year>2011</year>
<page-range>pp529</page-range><publisher-name><![CDATA[John Wiley & Sons]]></publisher-name>
</nlm-citation>
</ref>
<ref id="B21">
<nlm-citation citation-type="book">
<person-group person-group-type="author">
<name>
<surname><![CDATA[LAPEIRA]]></surname>
<given-names><![CDATA[O]]></given-names>
</name>
</person-group>
<source><![CDATA[Rediseño de FuzzyPred 1.0.]]></source>
<year>2012</year>
<publisher-loc><![CDATA[^eLa Habana La Habana]]></publisher-loc>
<publisher-name><![CDATA[CUJAE]]></publisher-name>
</nlm-citation>
</ref>
<ref id="B22">
<nlm-citation citation-type="book">
<person-group person-group-type="author">
<name>
<surname><![CDATA[MOSTAFA]]></surname>
<given-names><![CDATA[A.-E.-B]]></given-names>
</name>
<name>
<surname><![CDATA[EL-REWINI]]></surname>
<given-names><![CDATA[H]]></given-names>
</name>
</person-group>
<source><![CDATA[Fundamentals of Computer Organization and Architecture.]]></source>
<year>2005</year>
<page-range>pp 290</page-range><publisher-loc><![CDATA[^eNew Jersey New Jersey]]></publisher-loc>
<publisher-name><![CDATA[Inc. Hoboken]]></publisher-name>
</nlm-citation>
</ref>
<ref id="B23">
<nlm-citation citation-type="">
<person-group person-group-type="author">
<name>
<surname><![CDATA[PAS]]></surname>
<given-names><![CDATA[R]]></given-names>
</name>
</person-group>
<source><![CDATA[An Overview of OpenMP 3.0]]></source>
<year>2009</year>
</nlm-citation>
</ref>
<ref id="B24">
<nlm-citation citation-type="book">
<person-group person-group-type="author">
<name>
<surname><![CDATA[REINDERS]]></surname>
<given-names><![CDATA[J]]></given-names>
</name>
</person-group>
<source><![CDATA[Intel threading building blocks-outfitting C++ for multi-core processor parallelism]]></source>
<year>2007</year>
<page-range>pp 336</page-range><publisher-name><![CDATA[OReilly Media]]></publisher-name>
</nlm-citation>
</ref>
<ref id="B25">
<nlm-citation citation-type="">
<person-group person-group-type="author">
<name>
<surname><![CDATA[TOSINI]]></surname>
<given-names><![CDATA[M]]></given-names>
</name>
</person-group>
<source><![CDATA[Introducción a las arquitecturas paralelas]]></source>
<year>2011</year>
</nlm-citation>
</ref>
<ref id="B26">
<nlm-citation citation-type="">
<collab>OpenMP.org</collab>
<source><![CDATA[The OpenMP API Specification for parallel programming]]></source>
<year>2012</year>
</nlm-citation>
</ref>
<ref id="B27">
<nlm-citation citation-type="book">
<person-group person-group-type="author">
<name>
<surname><![CDATA[VENUGOPAL]]></surname>
<given-names><![CDATA[K]]></given-names>
</name>
<name>
<surname><![CDATA[SRINIVASA]]></surname>
<given-names><![CDATA[K.G]]></given-names>
</name>
<name>
<surname><![CDATA[PATNAIK]]></surname>
<given-names><![CDATA[L. M]]></given-names>
</name>
</person-group>
<source><![CDATA[Soft Computing for Data Mining Applications]]></source>
<year>2009</year>
<page-range>pp 354</page-range><publisher-name><![CDATA[Springer Berlin Heidelberg: Springer-Verlag]]></publisher-name>
</nlm-citation>
</ref>
</ref-list>
</back>
</article>
