Seguindo este guia de melhores práticas, tenho um módulo no meu código Fortran que define um tipo de precisão dupla,
module kind_parameters
implicit none
public
! Double precision real numbers, 15 digits, range 10^-307 to 10^307-1; 64 bits
integer, parameter :: dp = selected_real_kind(15, 307)
end module kind_parameters
Meu código, que usa esse tipo de precisão dupla para todas as operações de ponto flutuante, faz uso regular de MKL. Aqui, sempre uso a versão de precisão dupla das sub-rotinas MKL, ou seja, DGEMM e DSYEVD.
Não está claro para mim se meu tipo definido pelo usuário é consistente com o tipo de precisão dupla esperado pelo MKL. Em todos os meus testes até agora (com ifort/ifx), isso parece ter funcionado bem, mas existem armadilhas potenciais com minha maneira de fazer as coisas? Existe uma maneira melhor?