O que mais detesto no MPI é lidar com tipos de dados (isto é, mapas de dados / máscaras) porque eles não se encaixam muito bem com o C ++ orientado a objetos. boost::mpi
no entanto, apenas suporta o MPI 1.1 no site:
O boost :: mpi é uma interface amigável em C ++ para a Interface de transmissão de mensagens padrão… O Boost.MPI pode criar tipos de dados MPI para tipos definidos pelo usuário usando a biblioteca Boost.Serialization
Alguém já teve alguma experiência com boost::mpi
computação científica séria? Você recomendaria isto? Você teve algum problema (problemas de escala, problemas de compilação, erros, recursos não implementados, necessidade de alguns recursos do mpi 2.2)?
Você pode comentar sobre o uso em boost::mpi
vez de usar a implementação MPI C do C ++? Você pode combinar os dois (use boost :: mpi quando puder, C-MPI em outro lugar)?
Você conhece algum código científico grande usando boost::mpi
?
Respostas:
Sempre achei que deveríamos usá-lo em nosso próprio projeto, deal.II, porque é de nível superior ao MPI puro e pode salvar algumas linhas de código aqui e ali. Dito isso, o que aprendi ao longo dos anos é que a maioria dos códigos de alto nível não tem muito código MPI para começar - as 600.000 linhas de código em negociação. Isso certamente é muito menos do que um pacote como o PETSc, mas acho que é verdade que a maioria dos códigos tem menos chamadas MPI do que se esperaria a princípio e que, consequentemente, o benefício de usar algo de nível mais alto não é tão bom quanto esse. pode pensar à primeira vista.
O que isso se resume então é que você considere quais são as compensações. Quanto MPI você precisará usar e como isso se compara ao esforço adicional necessário para criar e vincular a uma biblioteca externa.
fonte
Tanto quanto eu sei,
boost::mpi
é apenas umc++
invólucro em torno daC
API. Dessa forma, você poderá usarboost::mpi
e alternar para aC
API sempre que alguma funcionalidade não for implementada. De fato, em sua página da web:Eu mesmo não o usei e não conheço uma grande biblioteca, mas espero que seja apenas um invólucro leve e, como tal, não se preocupe com o desempenho comparado à
C
API.fonte