
Defesa de Dissertação de Mestrado de João Pedro López da Cruz – 31/03/2025, 14h30, na sala 310 do Instituto de Computação e por videoconferência
Link para defesa: https://meet.google.com/iqx-tpxs-nrj
An Evaluation of Memoization Strategies for Efficient Caching of Scientific Experiments
Resumo:
Experimentos científicos in-silico geralmente exigem longos tempos de execução. Esse desafio aumenta com a necessidade de repetir execuções de experimentos com parâmetros e dados de entrada variados até que uma hipótese possa ser confirmada ou refutada, um processo que pode ser demorado. Apesar dessas variações, certas partes do experimento permanecem inalteradas entre as execuções. Nesses casos, aproveitar resultados computados anteriormente por meio de memoização pode acelerar a execução. A memoização é uma técnica de cache que armazena os resultados de cálculos determinísticos e sem efeitos colaterais, eliminando o processamento redundante. Uma abordagem típica de memoização consiste em quatro componentes principais: uma função hash, estruturas de dados na memória principal, armazenamento persistente e uma estratégia de carregamento de dados, havendo várias abordagens possíveis para cada um. Este trabalho investiga várias propostas de memoização na literatura para identificar estratégias que otimizam o desempenho do cache para experimentos científicos implementados como scripts Python. Avaliamos essas estratégias por meio de simulações e scripts do mundo real. Nossas descobertas revelam que usar bancos de dados para armazenamento persistente e funções de hash específicas, como MeowHash.64, melhoram significativamente o desempenho. Além disso, recuperar todos os valores em cache de uma mesma função, sequencialmente, é a melhor estratégia de carregamento de dados encontrada. Nossa análise das estruturas de dados em memória principal mostrou que o uso de qualquer uma delas traz ganhos de desempenho em comparação a não utilizar nenhuma estrutura de dados. Nossa análise também mostrou que todas as estruturas de dados que avaliamos produziram melhorias de desempenho semelhantes.
Abstract:
In-silico scientific experiments often require long execution times. This challenge is exacerbated by the need to repeat experiment trials with varying parameters and input data until a hypothesis can be confirmed or refuted, a process that can be time-consuming. Despite these variations, certain parts of the experiment remain unchanged across trials. In such cases, leveraging previously computed results through memoization can accelerate execution. Memoization is a caching technique that stores the results of deterministic and side-effect-free computations, eliminating redundant processing. A typical memoization approach consists of four key components: a hash function, main memory data structures, persistent storage, and a data loading strategy, with multiple design choices for each. This work investigates various memoization approaches in the literature to identify strategies that optimize caching performance for scientific experiments implemented as Python scripts. We evaluate these strategies through simulations and real-world scripts. Our findings reveal that using databases for storage and specific hashing functions, such as MeowHash.64, significantly improves performance. Additionally, retrieving all cached function values sequentially proved to be the most efficient data-loading strategy. Our analysis of main memory data structures yielded that the use of any data structure brings performance gains compared to not using a data structure. Our analysis also showed that all data structures we evaluated produce similar performance improvements.
Banca examinadora:
Profa. Vanessa Braganholo Murta, UFF – Presidente
Prof. João Felipe Nicolaci Pimentel, UFF
Prof. Daniel Cardoso Moraes de Oliveira, UFF
Profa. Marta Lima de Queirós Mattoso, UFRJ