Exemplo de projeto de filtragem de documentos

Recomendado para:

  • Dispositivo: desconhecido

  • Quartus®: v17.1

author-image

Por

Este exemplo fornece um exemplo de como um filtro bloom pode ajudar no desempenho de uma aplicação.

A filtragem de documentos envolve olhar para um fluxo de documentos recebidos e encontrar os que melhor atendam aos interesses de um usuário. Um exemplo desse sistema seria o uso de um mecanismo de filtragem, que monitora feeds de notícias e envia artigos relevantes para a conta de e-mail de um usuário. Em geral, este aplicativo é um exemplo de análise em dados não estruturados, como arquivos de texto, páginas HTML, e-mails e arquivos de vídeo. Estima-se que até 80% de todos os dados relevantes para empresas estão em forma não estruturada.

O algoritmo tenta encontrar os melhores documentos correspondentes para um perfil de pesquisa específico. O perfil de pesquisa é o filtro que combina documentos com o tópico de interesse do usuário. Para isso, cada documento é reduzido a um conjunto de palavras e à frequência de aparência de cada palavra no documento. Cada par de frequências (t_i; f_i) no documento é representado como um inteiro de 32 bits, com uma ID de 24 bits e uma frequência de ocorrência de 8 bits. Termos são geralmente palavras no documento. Uma ID de 24 bits permite um vocabulário de mais de 16 milhões de termos. O perfil de pesquisa consiste em um conjunto menor de termos e um peso para cada termo especificando sua importância relativa no perfil de pesquisa. Os pesos consistem em um número de 64 bits em representação de ponto fixo. Para realizar uma pesquisa não estruturada, uma pontuação é computada para cada documento para determinar sua relevância para o perfil determinado.

Os dados de entrada no kernel são os seguintes:

  • docWordFrequencies representa todos os documentos que você deseja executar no kernel. Cada inteiro de 32 bits representa um termo, ou palavra, no documento. Os primeiros 24 bits são o termo ID, e os últimos 8 bits são uma frequência de ocorrência deste termo no documento.
  • profileWeights é o perfil de pesquisa. Ela consiste em um conjunto menor de termos e um peso para cada termo especificando sua importância relativa no perfil de pesquisa. Os pesos consistem em um número de 64 bits em representação de ponto fixo.
  • isWordInProfileHash é o filtro bloom. Para cada ID de termo presente na matriz profile Pesos que tem um peso não zero, calculamos dois valores de hash a partir dele no host. Em seguida, inserimos os valores computados no filtro Bloom. Em seguida, durante a execução do kernel, os dois valores de hash são computados para cada ID de termo presente no documento. Nós pesquisamos esses valores de hash no Filtro Bloom. Se o valor de hash não está presente, significa que a palavra ID não está no perfil de pesquisa. Se os dois valores de hash são encontrados, realizaremos um acesso de memória à matriz profileWeights.

Os dados de saída para o kernel são:

  1. profileScorePerGroup_highbits os 32 bits mais altos da pontuação de cada documento que computaçãomos.
  2. profileScorePerGroup_lowbits os 32 bits mais baixos da pontuação para cada documento que computação.

Combinado, isso representa a pontuação do documento que indica sua relevância para o perfil determinado. Para melhorar ainda mais a taxa de transferência desta aplicação, incorpora as entradas em duas porções de tamanho igual, uma residindo em cada banco de memória DDR. Isso é indicado por _dimm1 (para o primeiro DIMM) e _dimm2 (para o segundo DIMM) anexados aos parâmetros do kernel. Isso melhora ainda mais nosso desempenho aproveitando os dois bancos de memória disponíveis.

Downloads

O exemplo de projeto fornece código-fonte para o dispositivo ™ OpenCL (.cl), bem como o host do aplicativo. Para compilar o aplicativo host, o pacote Linux* inclui um makefile e o pacote do Windows inclui um projeto do Microsoft Visual Studio 2010.

Os seguintes downloads são fornecidos para este exemplo:

O uso deste design é regido pelos termos e condições do contrato de licença de design de referência de hardware.

Para baixar as ferramentas de design da Intel, acesse a página de downloads do OpenCL. Os requisitos para o sistema operacional subjacente são os mesmos dos Intel® FPGA SDK para OpenCL.

OpenCL e o logotipo OpenCL são marcas comerciais da Apple Inc. usadas com a permitido pela Khronos.

* O produto é baseado em uma especificação Khronos publicada e passou no Processo de teste de conformidade Khronos. O status de conformidade atual pode ser encontrado em www.khronos.org/conformance.

Requisitos de software e hardware

O conteúdo desta página é uma combinação de tradução humana e por computador do conteúdo original em inglês. Este conteúdo é fornecido para sua conveniência e apenas para informação geral, e não deve ser considerado completo ou exato. Se houver alguma contradição entre a versão em inglês desta página e a tradução, a versão em inglês prevalecerá e será a determinante. Exibir a versão em inglês desta página.