Esempio di progettazione del filtro dei documenti

Consiglio per:

  • Dispositivo: sconosciuto

  • Quarzo®: v17.1

author-image

di

Questo esempio fornisce un esempio di come un filtro Bloom può fare nelle prestazioni di un'applicazione.

Il filtro dei documenti comporta l'analisi di un flusso di documenti in entrata e la ricerca di quelli che meglio corrispondono all'interesse di un utente. Un esempio di tale sistema potrebbe essere l'uso di un meccanismo di filtro, che monitora i feed di notizie e invia articoli salient all'account e-mail di un utente. In generale, questa applicazione è un esempio di analisi dei dati non strutturati, come file di testo, pagine HTML, e-mail e file video. Si stima che fino all'80% di tutti i dati salienti per le aziende sia in forma non strutturata.

L'algoritmo tenta di trovare i documenti corrispondenti migliori per un profilo di ricerca specifico. Il profilo di ricerca è il filtro che corrisponde ai documenti in base all'argomento di interesse dell'utente. A tal fine, ogni documento viene ridotto a un insieme di parole e alla frequenza di visualizzazione di ciascuna parola nel documento. Ogni coppia di termini e frequenza (t_i; f_i) nel documento è rappresentare come un numero intero a 32 bit, con un ID di termine a 24 bit e una frequenza di valore di 8 bit. I termini sono generalmente parole nel documento. UN ID a 24 bit consente un vocabolario di oltre 16 milioni di termini. Il profilo di ricerca è formato da un insieme più piccolo di termini e da un peso per ciascun termine che specifica la sua importanza relativa nel profilo di ricerca. I pesi sono sono da un numero a 64 bit in rappresentazione a punto fisso. Per eseguire una ricerca non strutturata, viene calcolato un punteggio per ogni documento per determinarne la materia per il profilo specificato.

I dati di input nel kernel sono i seguenti:

  • docWordFrequencies rappresenta tutti i documenti che si desidera eseguire nel kernel. Ogni intero a 32 bit rappresenta un termine, o parola, nel documento. I primi 24 bit sono il termine ID e gli ultimi 8 bit sono la frequenza diognio di questo termine nel documento.
  • profileWeights è il profilo di ricerca. È formato da un insieme di termini più piccolo e da un peso per ciascun termine che specifica la sua importanza relativa nel profilo di ricerca. I pesi sono sono da un numero a 64 bit in rappresentazione a punto fisso.
  • isWordInProfileHash è il filtro Bloom. Ogni ID di termine presente nell'array profileWeights che ha un peso diverso da zero, calcoliamo due valori hash da esso sull'host. Inseriamo quindi i valori calcolati nel filtro Bloom. Quindi, durante l'esecuzione del kernel, i due valori hash vengono calcolati per ogni ID di termine presente nel documento. Essere questi valori hash nel filtro Bloom. Se uno dei due valori hash non è presente, significa che l'ID della parola non è nel profilo di ricerca. Se vengonotrovatiati entrambi i valori hash, e ha accesso alla memoria all'array profileWeights.

I dati di output nel kernel sono:

  1. profileScorePerGroup_highbits sono i 32 bit più alti del punteggio per ciascun documento che abbiamo calcolato.
  2. profileScorePerGroup_lowbits sono i 32 bit inferiori del punteggio per ciascun documento che abbiamo calcolato.

Combinato, questo rappresenta il punteggio del documento che indica la sua testata per il profilo specificato. Per migliorare il throughput di questa applicazione, abbiamo diviso gli input in due porzioni di dimensioni uguali, una che sta per ciascuna banca di memoria DDR. Ciò è indicato dal _dimm1 (per il primo DIMM) e _dimm2 (per il secondo DIMM) aggiunto ai parametri del kernel. Ciò migliora ancora le nostre prestazioni sfruttando le due banche di memoria disponibili.

Scaricare

L'esempio di progettazione fornisce il codice sorgente per il dispositivo OpenCL™ (.cl) e l'applicazione host. Per la compilazione dell'applicazione host, il pacchetto Linux* include un makefile e il pacchetto di Windows include un progetto Microsoft Visual Studio 2010.

Per questo esempio vengonofornitiii:

L'utilizzo di questa progettazione è regolato e soggetto ai termini e condizioni del contratto di licenza di progettazione di riferimento hardware.

Per scaricare gli strumenti di progettazione Intel, visitare la pagina di download OpenCL. I requisiti per il sistema operativo che sono gli stessi dell'SDK Intel® FPGA per OpenCL.

OpenCL e il logo OpenCL sono marchi di Apple Inc. utilizzati su autorizzazione da Khronos.

* Il prodotto si basa su una specifica Khronos pubblicata e ha superato il processo di test di conformità Khronos. Lo stato di conformità attuale può essere trovato in www.khronos.org/conformance.

Software e hardware di richiesta

Il contenuto di questa pagina è il risultato della combinazione tra la traduzione umana e quella automatica del contenuto originale in lingua inglese. Questo contenuto è fornito soltanto a titolo di informazione generale e non ha pretese di completezza o accuratezza. In presenza di contraddizioni tra la versione in lingua inglese di questa pagina e la sua traduzione, fa fede la versione inglese. Visualizza la versione in lingua inglese di questa pagina.