solver sistema de armadillo linear (com openblas)

Eu tenho testado vários códigos de código aberto para resolver um sistema linear de equações em C ++. Até agora, o mais rápido que encontrei é tatu, usando o pacote OPENblas também. Para resolver um sistema NxN linear denso, onde N = 5000 demora cerca de 8,3 segundos no meu sistema, o que é realmente muito rápido (sem o openblas instalado, demora cerca de 30 segundos).

Uma razão para este aumento é que o tatu + openblas parece permitir o uso de múltiplos encadeamentos. Ele é executado em dois dos meus núcleos, enquanto tatu sem openblas usa apenas 1. Eu tenho um processador i7, então eu quero aumentar o número de núcleos e testá-lo ainda mais. Estou usando o Ubuntu, então a partir da documentação do Openblas eu posso fazer no terminal:

exportar OPENBLAS_NUM_THREADS = 4

no entanto, a execução do código novamente não parece aumentar o número de núcleos em uso ou a velocidade. Estou fazendo algo errado, ou é o 2 a quantia máxima para usar o comando "solve (A, b)" do tatu? Não consegui encontrar o código-fonte do tatu em lugar algum para dar uma olhada.

Aliás, alguém conhece os métodos que o tatu / openblas usa para resolver Ax = b (decomposição padrão da LU com paralelismo ou outra coisa)? Obrigado!

edit: Na verdade, o número de núcleos presos em 2 parece ser um bug ao instalar o openblas com o gerenciador de pacotes synapticVeja aqui. Reinstalar a partir da fonte permite detectar quantos núcleos eu tenho ativamente (8). Agora eu posso usar export OPENBLAS_NUM_THREADS = 4 etc para governá-lo.