Database di risultati per codici numerici


17

Nella letteratura sui metodi numerici, molti articoli di ricerca consistono in una descrizione di una nuova variazione algoritmica, seguita da alcuni problemi di prova che confrontano il nuovo metodo con uno o due metodi esistenti. Questo rende difficile determinare

  • Come si comporterebbe il nuovo metodo su altri problemi di interesse
  • Come il nuovo metodo si confronterebbe con altri metodi esistenti

Naturalmente, entrambe queste domande sono generalmente fondamentali per qualcuno che decide se adottare il nuovo metodo. Al fine di migliorare questa situazione, sembra desiderabile, se possibile, indurre le persone a eseguire una vasta serie di problemi di test ( vedere questa domanda ) con il loro metodo e catalogare i risultati in un database per il confronto con altri metodi. Uno scienziato o un ingegnere potrebbe quindi interrogare il database, forse indicando quali caratteristiche di soluzione / problema sono più importanti per loro (accuratezza, efficienza, proprietà qualitative, ecc.) E ottenere un confronto quantitativo delle prestazioni di tutti i metodi nel database.

Mi rendo conto che ci sono molte difficoltà nell'attuare questa idea (principalmente: convincere le persone a gestire effettivamente tutti quei problemi e misurare i costi di calcolo). Ma la mia domanda è: esiste un tale database di risultati? (diciamo in un particolare sottocampo) o un approccio come questo è stato implementato ovunque?

Entrambe le risposte pubblicate finora riguardano database di problemi. Sto chiedendo informazioni sui database dei risultati.

Risposte:


9

Tra i criteri che hai specificato, penso che il progetto più vicino che conosco sarebbe la collezione di matrici sparse dell'Università della Florida . Le persone usano abitualmente questo set di dati per confrontare i solutori di algebra lineare sparsa e puoi filtrare per applicazione, numero di nonzeros, dimensioni della matrice e così via con un'interfaccia web davvero piacevole, un'interfaccia MATLAB o una GUI Java. Ho visto le tabelle di questi problemi elencate nei documenti insieme ai confronti del tempo di esecuzione del solutore con 4-8 solutori di algebra lineare.

Concordo sul fatto che sarebbe utile compilare tali database e, inoltre, ritengo che l'approccio alla raccolta di matrici sparse UF per la compilazione dei dati sia eccellente e farebbe un ottimo inizio per chiunque stia pensando di realizzare questa idea. Gestire tutti i problemi, in pratica, non sembra una grande difficoltà fintanto che è possibile accedere a tutti i solutori; se hai accesso ai solutori e una macchina di riferimento standard affidabile con tutto il software necessario installato, dovrebbe trattarsi di eseguire uno script e raccogliere i dati. La difficoltà, secondo me, sarebbe indurre le persone a darti il ​​loro software, se non è open source. Se è commerciale, è possibile acquistarlo o anche convincere la gente a donare il software,Progetto COIN-OR . Ma se si tratta di un software di ricerca che non è né commerciale né open source, allora è necessario convincere le persone ad acquistare l'impresa e potrebbero non fidarsi di una terza parte per valutare il proprio software in modo equo.

So anche che nell'ottimizzazione ci sono database scaricabili di problemi ( mi viene in mente CUTEr ) e libri di problemi di test per l'ottimizzazione. Ho visto persone (per esempio, sto pensando in particolare a un discorso di Ruth Misener ad AIChE 2011) confrontando il loro risolutore di ottimizzazione con altri risolutori su database di problemi nelle presentazioni; Non sono sicuro di ciò che viene rilasciato pubblicamente. So che esiste una tradizione nell'ottimizzazione per il confronto su larga scala (molti solutori, molti problemi); Solo non penso che ci sia un database online disponibile.

Un'altra cosa che ritengo importante è che qui distinguiamo tra metodi e implementazioni software. Nell'informatica scientifica, parliamo tutti di quali metodi sono più veloci o più lenti basati su cose come le metriche di complessità computazionale o le nostre esperienze con vari problemi. Quando si tratta di misurare quantitativamente il tempo computazionale, tuttavia, a meno che non si contenga il numero di FLOP in un particolare algoritmo, è necessario implementare l'algoritmo nel software e quindi misurare le prestazioni in qualche modo (utilizzo della memoria, tempo di esecuzione del clock, ecc. .). Ha senso valutare le prestazioni di un metodo quando si guarda alla complessità computazionale o ai conteggi FLOP, perché non abbiamo bisogno di un'implementazione per misurare tali cose, ma nel momento in cui siamo interessati ai tempi di esecuzione effettivi dell'orologio da parete, parlando di metodi è utile solo come un dispositivo colloquiale astratto. (Per esempio,

Sollevo questa distinzione tra metodi e software perché in un tale database, ho anche potuto vedere la possibilità di monitorare il miglioramento del software nel tempo. Quindi, ad esempio, con qualcosa come, per esempio, PETSc o PyCLAW, o qualunque software sia in fase di test, sarebbe interessante vedere quali problemi sono influenzati positivamente (o negativamente!) Dagli aggiornamenti del software. Ciò potrebbe essere utile per i ricercatori che cercano di decidere se valgono potenziali costi in termini di denaro e manodopera per aggiornare i loro codici. Un altro motivo per cui tale distinzione è importante è perché un buon metodo può essere implementato male; Penso che questa possibilità contribuisca alla reticenza che a volte le persone condividono i loro codici di ricerca.

Penso che qualunque cosa provenga da questa idea (e spero che ne derivi qualcosa, e sarei disposta a contribuire dopo il mio dottorato di ricerca), è importante sottolineare questa distinzione tra software e metodi, perché se stiamo eseguendo problemi di test, siamo pubblicando i risultati per il software.


2
Mi piacciono molto i tuoi commenti e tu sollevi un punto importante. Come sono sicuro che tu sappia, i collegamenti che dai sono a database di problemi, non di risultati.
David Ketcheson,

Quelle erano le cose più vicine che potessi trovare. Ho provato a cercare database di risultati, perché penso che tu abbia sollevato un'idea davvero importante, ma non sono riuscito a trovarne. Forse questo è un nuovo importante progetto?
Geoff Oxberry,

Grazie; Sono d'accordo, e questi sono utili come "approssimazioni esistenti più vicine" come dici tu. Sto davvero considerando questo (con alcuni che lo presterebbero più credibilità) come un nuovo progetto. Sono molto contento che tu sia interessato! Possiamo discuterne altrove, poiché SE è avversa alla discussione.
David Ketcheson,

4

C'è stato un tentativo di creare un elenco di integrali "difficili" da calcolare numericamente (vedi articoli di Walter Gautschi, Robert Piessens e altri) ma nessun database formale.

Nel campo degli ODE, esiste il set di test IVP , un set di test per problemi di valore iniziale.


in realtà sto chiedendo di database di risultati calcolati, non database di problemi.
David Ketcheson,

1
@DavidKetcheson Contiene il codice del driver per automatizzare il calcolo dei risultati da soli.
Jed Brown,

Grande! Anche se mi piacerebbe vedere un vero database in cui sono archiviati i risultati (oltre, ovviamente, alla possibilità di ricalcolarli), questa è la cosa più vicina a ciò a cui stavo pensando.
David Ketcheson,

3

Non ho familiarità con un tale database, ma penso che sarebbe molto difficile definire in modo utile. Un sistema migliore, a mio avviso, è quello di rilasciare il codice in una forma eseguibile in modo che l'utente possa estenderlo per testarlo nel modo più completo possibile. In termini di repository di comunità, la suite di test IVP menzionata da GertVdE contiene anche il codice del driver per eseguire diversi solutori ODE / DAE pubblicati sui problemi del test. Nelle mie pubblicazioni, provo a rilasciare il codice e tutti gli script utilizzati per creare l'analisi dei dati di output e creare i grafici e le tabelle presenti nel documento.


1
Piccolo cavillo: questo è più un commento che una risposta. Apprezzo il pensiero critico, però. Mi piacerebbe vedere le persone fare entrambe le cose. Perché farmi installare ed eseguire il tuo codice solo per poter tracciare i tuoi risultati contro il mio? E poi puoi affermare che non ho impostato le opzioni giuste? Ad ogni modo, io (intendo il tipico ricercatore) non lo farò perché è troppo lavoro. Ma se tutto ciò che dovevo fare fosse leggere in un file di dati, potrei essere disposto.
David Ketcheson,

1

Il seminario di aeroacustica computazionale sui problemi di benchmark ha un obiettivo simile in mente per i problemi di aeroacustica. Prima presentano una serie di problemi di riferimento in anticipo e fanno in modo che le persone li risolvano usando i propri metodi e confrontino i risultati. Ad esempio, ecco gli atti della quarta riunione: http://www.archive.org/details/nasa_techdoc_20040182258

Sebbene, da quello che posso dire, non confrontino l'efficacia dei loro codici l'uno con l'altro, guardano principalmente alla precisione.


Interessante! Esiste un database di soluzioni? O come si confrontano esattamente i risultati?
David Ketcheson,

Il "database" è nel rapporto che ho pubblicato. Alla fine del documento c'è una sezione intitolata "Confronti di soluzioni". Ci sono stati solo quattro incontri per questo, e l'ultimo è stato nel 2004. Vorrei che ci fosse più di una spinta per ottenere questo tipo di cose online come tu proponi.
James Custer,

1

Nella modellistica del terremoto ci sono stati molti di questi tipi di sforzi. Quelli che vengono in mente sono il progetto di simulazione della rottura dinamica e il progetto di inversione della fonte (http://eqsource.webfactional.com/wiki/). Entrambi forniscono problemi fisici da risolvere e sono agnostici (a un certo livello) riguardo ai metodi impiegati. In realtà, questi progetti riguardano il confronto tra i modellatori specifici del dominio, non un insieme generale di problemi di test per ogni metodo pdes numerico. Ma puoi confrontare con altri risultati, e questo ha rivelato molti problemi con molti codici.

Una possibilità da prendere in considerazione sarebbe il progetto Madagascar , che è stato sviluppato nel mondo dell'imaging sismico ma afferma di avere uno scopo piuttosto generale.


Il Madagascar è un ottimo esempio. Grazie!
Jack Poulson,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.