Bases de dados de resultados para códigos numéricos

17

Na literatura de métodos numéricos, muitos trabalhos de pesquisa consistem em uma descrição de uma nova variação algorítmica, seguida de alguns problemas de teste comparando o novo método com um ou dois métodos existentes. Isso dificulta a determinação

  • Como o novo método funcionaria em outros problemas de interesse
  • Como o novo método se compara a outros métodos existentes

Obviamente, essas duas questões geralmente são críticas para quem decide se adota o novo método. Para melhorar essa situação, parece desejável, se possível, levar as pessoas a executar um grande conjunto de problemas de teste ( consulte esta pergunta ) com seu método e catalogar os resultados em um banco de dados para comparação com outros métodos. Um cientista ou engenheiro poderia então consultar o banco de dados, talvez indicando quais características da solução / problema são mais importantes para eles (precisão, eficiência, propriedades qualitativas etc.) e obter uma comparação quantitativa do desempenho de todos os métodos no banco de dados.

Percebo que há muitas dificuldades em implementar essa idéia (principalmente: levar as pessoas a realmente executarem todos esses problemas e medir o custo computacional). Mas minha pergunta é: existe um banco de dados com resultados? (digamos, em algum subcampo específico) ou uma abordagem como essa foi implementada em algum lugar?

Ambas as respostas postadas até agora são sobre bancos de dados de problemas. Estou perguntando sobre bancos de dados de resultados.

David Ketcheson
fonte

Respostas:

9

Dos critérios que você especificou, acho que o projeto mais próximo que conheço seria a coleção de matrizes esparsas da Universidade da Flórida . As pessoas usam rotineiramente esse conjunto de dados para comparar os solucionadores de álgebra linear esparsos e é possível filtrar por aplicativo, número de não-zeros, dimensões da matriz e assim por diante com uma interface da web muito boa, interface do MATLAB ou GUI do Java. Eu já vi tabelas desses problemas listados em documentos, juntamente com comparações de tempo de execução do solucionador com 4 a 8 solucionadores de álgebra linear.

Concordo que seria útil compilar esses bancos de dados e, além disso, acho que a abordagem de coleta de matriz esparsa do UF para compilar os dados é excelente, e seria um ótimo começo para quem pensar em realizar essa idéia. A execução de todos os problemas, na prática, não parece ser uma grande dificuldade, desde que você possa ter acesso a todos os solucionadores; se você tiver acesso aos solucionadores e uma máquina de referência padrão confiável com todo o software necessário instalado, será uma questão de executar um script e coletar os dados. A dificuldade, em minha opinião, seria levar as pessoas a fornecerem seu software, se não for de código aberto. Se for comercial, você pode comprá-lo ou até levar as pessoas a doar o software,Projeto COIN-OR . Mas se o software de pesquisa não é comercial nem de código aberto, você precisa convencer as pessoas a aceitarem o empreendimento, e elas podem não confiar em terceiros para avaliar seu software de maneira justa.

Sei também que na otimização existem bancos de dados para download de problemas ( CUTEr vem à mente) e livros de problemas de teste para otimização. Vi pessoas (por exemplo, estou pensando especificamente em uma palestra de Ruth Misener na AIChE 2011) comparando seu solucionador de otimização com outros solucionadores em bancos de dados de problemas em apresentações; Não tenho certeza do que é lançado publicamente. Eu sei que há uma tradição em otimização para comparação em larga escala (muitos solucionadores, muitos problemas); Só acho que não há um banco de dados online disponível.

Outra coisa que eu acho importante é que distingamos aqui entre métodos e implementações de software. Na computação científica, todos falamos sobre quais métodos são mais rápidos ou mais lentos, com base em métricas de complexidade computacional ou em nossas experiências com vários problemas. No entanto, quando se trata de medir quantitativamente o tempo computacional, a menos que se conte o número de FLOPs em um algoritmo específico, é preciso implementar o algoritmo no software e depois medir o desempenho de alguma forma (uso da memória, tempo de execução do relógio de parede, etc. .). Faz sentido avaliar o desempenho de um método ao analisar a complexidade computacional ou a contagem de FLOP, porque não precisamos de uma implementação para medir essas coisas, mas no momento em que estamos interessados ​​nos tempos de execução reais do relógio de parede, falar sobre métodos é útil apenas como um dispositivo abstrato e coloquial. (Por exemplo,

Faço essa distinção entre métodos e software, porque nesse banco de dados também pude ver a possibilidade de rastrear a melhoria no software ao longo do tempo. Assim, por exemplo, com algo como, digamos, PETSc ou PyCLAW, ou qualquer outro software que esteja sendo testado, seria interessante ver quais problemas são afetados positivamente (ou negativamente!) Pelas atualizações do software. Isso pode ser útil para os pesquisadores que tentam decidir se vale algum custo potencial em dinheiro e mão-de-obra para atualizar seus códigos. Outra razão pela qual essa distinção é importante é porque um bom método pode ser mal implementado; Eu acho que essa possibilidade contribui para a reticência que as pessoas às vezes têm em compartilhar seus códigos de pesquisa.

Eu acho que o que quer que venha dessa idéia (e espero que algo aconteça e que esteja disposto a contribuir após o meu doutorado), é importante enfatizar essa distinção entre software e métodos, porque se estamos executando problemas de teste, estamos publicará resultados para o software.

Geoff Oxberry
fonte
2
Gosto muito dos seus comentários e você levanta um ponto importante. Como tenho certeza de que você sabe, os links que você fornece são para bancos de dados de problemas, não de resultados.
David Ketcheson
Essas foram as coisas mais próximas que pude encontrar. Tentei procurar por bancos de dados de resultados, porque acho que você levanta uma ideia realmente importante, mas não consegui encontrar nenhuma. Talvez este seja um novo projeto importante?
precisa saber é o seguinte
Obrigado; Eu concordo, e estes são úteis como "aproximações existentes mais próximas", como você diz. Na verdade, estou considerando isso (com alguns outros que dariam mais credibilidade) como um novo projeto. Estou muito feliz que você esteja interessado! Podemos discuti-lo em outro lugar, pois SE é avesso a discussões.
David Ketcheson
4

Houve uma tentativa de criar uma lista de integrais "difíceis" para computar numericamente (ver artigos de Walter Gautschi, Robert Piessens e outros), mas nenhum banco de dados formal.

No campo de EDOs, existe o conjunto de testes IVP , um conjunto de testes para problemas de valor inicial.

GertVdE
fonte
na verdade, estou perguntando sobre bancos de dados de resultados computados, não bancos de dados de problemas.
David Ketcheson
11
@ DavidKetcheson Ele contém o código do driver para automatizar a computação dos resultados você mesmo.
Jed Brown
Ótimo! Embora eu adorasse ver um banco de dados real onde os resultados são armazenados (além, é claro, da capacidade de recalculá-los), essa é a coisa mais próxima que eu já vi do que estava pensando.
David Ketcheson
3

Não estou familiarizado com esse banco de dados, mas acho que seria muito difícil definir de uma maneira útil. Um sistema melhor, na minha opinião, é liberar o código de forma executável, para que o usuário possa estender os testes da maneira mais abrangente possível. Em termos de repositórios da comunidade, o conjunto de testes do IVP mencionado pelo GertVdE também contém código de driver para executar vários solucionadores de ODE / DAE publicados sobre os problemas de teste. Nas minhas publicações, tento liberar o código e todos os scripts usados ​​para criar a análise dos dados de saída e criar os gráficos e tabelas que aparecem no artigo.

Jed Brown
fonte
11
Pequenas reclamações: isso é mais um comentário do que uma resposta. Eu aprecio o pensamento crítico, no entanto. Eu gostaria de ver as pessoas fazendo as duas coisas. Por que me fazer instalar e executar seu código apenas para que eu possa plotar seus resultados nos meus? E então você pode alegar que eu não defini as opções corretas? Enfim, eu (ou seja, o pesquisador típico) simplesmente não o faço porque é muito trabalho. Mas se tudo o que eu precisava fazer era ler em um arquivo de dados, eu poderia estar disposto.
David Ketcheson
1

O Workshop de Aeroacústica Computacional sobre Problemas de Referência tem um objetivo semelhante em mente para problemas aeroacústicos. Eles primeiro apresentam um conjunto de problemas de benchmark com antecedência, e as pessoas os resolvem usando seus próprios métodos e comparam os resultados. Por exemplo, eis os procedimentos da quarta reunião: http://www.archive.org/details/nasa_techdoc_20040182258

Embora, pelo que posso dizer, eles não comparem a eficiência dos códigos entre si, eles procuram principalmente a precisão.

James Custer
fonte
Interessante! Existe um banco de dados de soluções? Ou como exatamente eles comparam os resultados?
David Ketcheson
O "banco de dados" está no relatório que publiquei. No final do artigo, há uma seção intitulada "Comparações de soluções". Houve apenas quatro reuniões para isso, e a última foi em 2004. Eu gostaria que houvesse mais esforço para colocar esses tipos de coisas on-line, como você propõe.
James Custer
1

Na modelagem de terremotos, houve vários desses tipos de esforços. Os que vêm à mente são o projeto de simulação de ruptura dinâmica e o projeto de inversão de fonte (http://eqsource.webfactional.com/wiki/). Ambos fornecem problemas físicos para resolver e são agnósticos (em algum nível) em relação aos métodos empregados. Realmente, esses projetos têm como objetivo comparar os modeladores específicos do domínio, não um conjunto geral de problemas de teste para todos os métodos numéricos do pdes. Mas você pode comparar com outros resultados, e isso revelou muitos problemas com muitos códigos.

Uma possibilidade de olhar seria o projeto de madagascar , desenvolvido no mundo das imagens sísmicas, mas que afirma ser de uso geral.

Jeremy Kozdon
fonte
Madagascar é um excelente exemplo. Obrigado!
Jack Poulson