2010-09-22 2 views

risposta

3

Ecco qualcosa di una lista di lettura. Non sono sicuro se è troppo semplice per te:

Writing Scientific Software: un buon seguito di un 'Learn to Program in C++' o altro.

Parallel Scientific Computing in C++ and MPI: se non hai intenzione di parallelizzare la tua applicazione, dovresti esserlo.

Engineering and Scientific C++: una buona introduzione specifica del dominio alla programmazione in C++. Un po 'datato nei dettagli della lingua, ma l'approccio generale non è invecchiato.

Ti suggerisco di leggere le risposte SO a domande come "Come dovrei progettare un grande programma C++?" per consigli su altri libri che potrebbero essere di interesse.

Come per le migliori pratiche, ecco alcuni suggerimenti. Ancora una volta, non sono sicuro del tuo punto di partenza, quindi potrebbe essere troppo semplice:

  • Come ho scritto sopra, dovresti pianificare fin dall'inizio di sviluppare un programma parallelo. Se la trasmissione di messaggi su un cluster non è la tua tazza di tè, considera almeno la programmazione della memoria condivisa per un desktop multi-core. OpenMP vale la pena investigare.
  • Familiarizza con il lavoro esistente. Le librerie BOOST sono probabilmente essenziali. Mentre apprezzo la tua intenzione di eseguire il roll-your-own, non ignorare le esistenti librerie numeriche consolidate come BLAS e LAPACK che troverai a Netlib. A seconda della piattaforma di sviluppo e del set di strumenti, è possibile che siano già installati.
  • Se si proviene da un contesto scientifico, è possibile migliorare le proprie conoscenze e competenze nell'ingegneria del software. Argomenti come: controllo del codice sorgente; test; profilazione e ottimizzazione del codice; profonda conoscenza di ciò che possono fare i tuoi compilatori. Nella mia esperienza molti scienziati computazionali hanno uno sfondo debole in tutte queste cose.
  • Si dovrebbe pianificare di dedicare (approssimativamente) tanto tempo a progettare e testare il proprio programma quanto a codificarlo effettivamente. Anche lavorando da solo è essenziale avere un buon piano d'azione prima di iniziare a programmare. Non c'è motivo per cui debba essere completo in ogni dettaglio all'inizio, ma non entrare mai nel territorio senza una mappa.
  • Sei silenzioso sull'aspetto (s) del mondo fisico che si desidera simulare. C'è molta arte nota in tutti i tipi di simulazioni fisiche, se fossi un po 'più specifico, SO potrebbe essere in grado di fornire alcuni suggerimenti più specifici.
+0

ciao. grazie mille per la tua risposta utile e completa. riguardo al tuo ultimo punto, l'idea è di sviluppare un nuovo codice di dinamica molecolare. qualche consiglio qui? grazie – flow

+0

La dinamica molecolare va oltre la mia comprensione, ma vedo che l'articolo di Wikipedia ha alcune indicazioni sul software. Sarò molto sorpreso se non riesci a trovare il codice open source da ispezionare, e la letteratura è ampia. –

1

Inizia con Numerical recipes: the art of scientific computing. Un volume abbastanza completo. Tuttavia, tieni presente due cose:

  • Contiene sia i campioni di codice C++ sia quelli di Fortran 90.
  • Dimentica effettivamente lo utilizzando uno qualsiasi degli esempi di codice nel progetto, tuttavia - AFAIK è protetto da copyright e deve essere concesso in licenza per il riutilizzo separatamente.

Ancora, se ne avete bisogno a scopo didattico, questo libro è una lettura altamente raccomandata.

+0

Bene, ovviamente è possibile utilizzare il codice da Ricette numeriche se si paga per una licenza per farlo. Una tale licenza non è costosa. –