Inversão de matrizes em bloco de forma recursiva com uso limitado de memória
Matrizes em bloco. Baixo consumo de memória. Complemento de Schur. Inversão de matrizes grandes.
A inversão de matrizes de ordem extremamente alta tem sido uma tarefa desafiadora devido ao processamento e à capacidade de memória limitados dos computadores convencionais. Em um cenário em que os dados não cabem na memória, é oportuno considerar a troca de menos uso de memória por mais tempo de processamento para permitir a computação da inversa matricial, o que seria proibitivo, de outra forma.
Sendo assim, este trabalho apresenta um novo algoritmo para o cálculo da inversa de matrizes particionadas em blocos com um uso reduzido de memória. O algoritmo funciona de forma recursiva para inverter um bloco de uma matriz de Mk×k, com k≥2, com base na divisão sucessiva de M. Este algoritmo, denominado BRI (do inglês, Block Recursive Inversion), calcula um bloco da matriz inversa por vez para limitar o uso da memória durante todo o processamento.
Considerando que o baixo consumo de memória, proporcionado pelo BRI, é contrabalanceado por um maior tempo de processamento, este trabalho também discorre sobre uma implementação paralela, em OpenMP, do algoritmo a fim de reduzir o tempo de execução e ampliar sua aplicabilidade. Além disso, uma melhoria no algoritmo sequencial é analisada.
Como aplicação prática, o algoritmo proposto foi utilizado no processo de validação cruzada para Máquinas de Vetor de Suporte por Mínimos Quadrados (LS-SVM), introduzido por An et al. (2007). Este procedimento computacional utiliza o cálculo da matriz inversa para encontrar os rótulos esperados das amostras de testes na validação cruzada.
Os resultados experimentais com o BRI demonstraram que, apesar do aumento da complexidade computacional, as matrizes que de outra forma excederiam o limite de uso da memória podem ser invertidas usando esta técnica.