Ejemplo de diseño de filtrado de documentos

Recomendado para:

  • Dispositivo: Desconocido

  • Quartus®: v17.1

author-image

Por

Este ejemplo proporciona un ejemplo de cómo un filtro de flor puede ayudar en el desempeño de una aplicación.

El filtrado de documentos implica mirar una secuencia entrante de documentos y encontrar los que mejor coincidan con el interés de un usuario. Un ejemplo de este sistema sería el uso de un mecanismo de filtración, que supervisa las fuentes de noticias y envía artículos relevantes a la cuenta de correo electrónico del usuario. En general, esta aplicación es un ejemplo de la realización de análisis de datos no estructurados, como archivos de texto, páginas HTML, correos electrónicos y archivos de video. Se calculó que hasta el 80 % de todos los datos relevantes para las empresas se encuentra en forma no estructurado.

El algoritmo intenta encontrar los mejores documentos coincidentes para un perfil de búsqueda específico. El perfil de búsqueda es el filtro que coincide con los documentos con el tema de interés del usuario. Con este fin, cada documento se reduce un conjunto de palabras y a la frecuencia de apariencia de cada palabra en el documento. Cada par de frecuencia de término (t_i; f_i) en el documento se representa como un entero de 32 bits, con un id de término de 24 bits y una frecuencia de ocurrencia de 8 bits. Los términos son generalmente palabras del documento. Un ID de 24 bits permite una ampliación de más de 16 millones de términos. El perfil de búsqueda consiste en un conjunto de términos más pequeño y un peso para cada término que especifica su importancia relativa en el perfil de búsqueda. Los pesos constan de un número de 64 bits en una representación de punto fijo. Para realizar una búsqueda no estructurada, se calcula una puntuación en cada documento a fin de determinar su importancia para un perfil determinado.

Los datos de entrada al kernel son los siguientes:

  • los docIndexes representan todos los documentos que desea ejecutar a través del kernel. Cada entero de 32 bits representa un término, o palabra, en el documento. Los primeros 24 bits son el identificador del término, y los últimos 8 bits son la frecuencia de ocurrencia de este término en el documento.
  • profileWeights es el perfil de búsqueda. Consiste en un conjunto de términos más pequeño y un peso para cada término que especifica su importancia relativa en el perfil de búsqueda. Los pesos constan de un número de 64 bits en una representación de punto fijo.
  • isCoreInIndexHash es el filtro de flor. Para cada identificador de término presente en el perfil de matrizWeights que tiene un peso no cero, se calculan dos valores de hash de él en el host. Una continuación, insertamos los valores informáticos en el filtro de flor. Una continuación, durante la ejecución del kernel, se calculan los dos valores hash para cada identificador de término presente en el documento. Analizamos estos valores de hash en el filtro de flor. Si alguno de los valores hash no está presente, significa que la palabra ID no está en el perfil de búsqueda. Si se encuentran ambos valores hash, realizaremos un acceso de memoria a la matriz profileWeights.

Los datos de salida para el kernel son:

  1. profileScorePerGroup_highbits son los 32 bits más altos de la puntuación de cada documento que calculamos.
  2. profileScorePerGroup_lowbits son los 32 bits más bajos de la puntuación de cada documento que calculamos.

En conjunto, esto representa la puntuación del documento que indica su importancia para el perfil dado. Para mejorar aún más el rendimiento de esta aplicación, dividir las entradas en dos partes de tamaño igual, una que resida en cada banco de memoria DDR. Esto se indica mediante el _dimm1 (para el primer DIMM) y _dimm2 (para el segundo DIMM) anexados a los parámetros del kernel. Esto mejora aún más nuestro desempeño al aprovechar los dos bancos de memoria disponibles.

Descargas

El ejemplo de diseño proporciona código fuente para el dispositivo OpenCL™ (.cl) y para la aplicación host. Para la compilación de la aplicación host, el paquete Linux* incluye un archivo crear y el paquete de Windows incluye un proyecto de Microsoft Visual Studio 2010.

Se proporcionan las siguientes descargas para este ejemplo:

El uso de este diseño se rige por, y está sujeto a, los términos y condiciones del contrato de licencia de diseño de referencia de hardware.

Para descargar las herramientas de diseño de Intel, visite la página de descarga de OpenCL. Los requisitos para el sistema operativo subyacente son los mismos que los del SDK de Intel® FPGA para OpenCL.

OpenCL y el logotipo de OpenCL son marcas comerciales de Apple Inc. utilizadas con permiso de Khronos.

* El producto se basa en una especificación de Khronos publicada y ha superado el proceso de prueba de conformidad de Khronos. El estado de conformidad real se encuentra en www.khronos.org/conformance.

Requisitos de software y hardware

El contenido de esta página es una combinación de la traducción humana y automática del contenido original en inglés. Este contenido se ofrece únicamente para su comodidad como información general y no debe considerarse completa o precisa. Si hay alguna contradicción entre la versión en inglés de esta página y la traducción, prevalecerá la versión en inglés. Consulte la versión en inglés de esta página.