Suffix Array Performance Analysis for Multi-Core Platforms

Abstract. Performance analysis helps to understand how a particular invocation of an algorithm executes. Using the information provided by specific tools like the profiler tool Perf or the Performance Application Programming Interface (PAPI), the performance analysis process provides a bridging rela...

Descripción completa

Detalles Bibliográficos
Autores: Gil-Costa, Verónica, Ochoa, Cesar, Printista, A. Marcela
Tipo de recurso: artículo
Estado:Versión publicada
Fecha de publicación:2013
País:México
Institución:Instituto Politécnico Nacional
Repositorio:Repositorio Digital del IPN
OAI Identifier:oai:www.repositoriodigital.ipn.mx:123456789/17237
Acceso en línea:http://www.repositoriodigital.ipn.mx/handle/123456789/17237
Access Level:acceso abierto
Palabra clave:Keywords. Multi-core, suffix array
Descripción
Sumario:Abstract. Performance analysis helps to understand how a particular invocation of an algorithm executes. Using the information provided by specific tools like the profiler tool Perf or the Performance Application Programming Interface (PAPI), the performance analysis process provides a bridging relationship between the algorithm execution and processor events according to the metrics defined by the developer. It is also useful to find performance limitations which depend exclusively on the code. Furthermore, to change an algorithm in order to optimize the code requires more than understanding of the obtained performance. It requires understanding the problem being solved. In this work we evaluate the performance achieved by a suffix array over a 32-core platform. Suffix arrays are efficient data structures for solving complex queries in a number of applications related to text databases, for instance, biological databases. We perform experiments to evaluate hardware features directly aimed to parallelize computation. Moreover, according to the results obtained by the performance evaluation tools, we propose an optimization technique to improve the use of the cache memory. In particular, we aim to reduce the number of cache memory replacement performed each time a new query is processed.