C++ + Rechnen



  • Hallo.
    Macht es Sinn Fortran und C++ zu kombinieren? Gibt es dabei Geschwindigkeitseinbußen? Oder gibt es sogar C++ libs die äquivalent oder besser sind? 😕
    Dankeschön!! 🙂



  • Ja, man kann kombinieren, und es gibt Libraries für wissenschaftliches Rechnen die für C++ gemacht wurden. Wie effektiv sie sind muß man im Einzelfall prüfen, im Prinzip ist eine gleichschnelle Ausführung möglich.



  • Danke für die schnelle Antwort! Also wenn mir Fortran keinen Vorteil bringt würde ich zu C++ libs greiffen. Kannst du mir ein(ige) nennen?



  • Der Vorteil von Fortran besteht darin, daß es meist viel existierende Software und Libraries für wissenschaftliches Rechnen gibt. Bezüglich C++ Libaries: Was suchst Du?
    Für LA braucht man meist eine BLAS und ein LaPack: uBLAS, Lapack



  • ~john schrieb:

    Der Vorteil von Fortran besteht darin, daß es meist viel existierende Software und Libraries für wissenschaftliches Rechnen gibt. Bezüglich C++ Libaries: Was suchst Du?
    Für LA braucht man meist eine BLAS und ein LaPack: uBLAS, Lapack

    Super Danke! Vorerst brauche ich fast ausschließlich LinAlg.
    Aber noch eine Frage: Beim googeln bin ich immer über Beispiele gestolpert in denen jeder seine eigene Vektor/Matrizen etc. Klassen angelegt hat. (Waren zum Großteil für irgendwelche Grafikdarstellungen)
    Warum wird das nicht öfter verwendet? 😕



  • Mathestudent schrieb:

    Aber noch eine Frage: Beim googeln bin ich immer über Beispiele gestolpert in denen jeder seine eigene Vektor/Matrizen etc. Klassen angelegt hat. (Waren zum Großteil für irgendwelche Grafikdarstellungen)
    Warum wird das nicht öfter verwendet? 😕

    So ziemlich jede Matrixklasse hat ihre Vor- und Nachteile. Dazu kommt, daß viele Systemfunktionen C-Arrays bzw. Zeiger darauf erwarten. Wenn man dünn besetzte Matrizen hat, dann wäre es unsinnig sie wie normale C-Arrays zu speichern, man würde enorm viel Arbeitsspeicher verschwenden, weil dort eh nur 0 steht. Wenn man aber vollständig besetzte Matrizen hat, sind Klassen für dünn besetzte Matrizen ineffektiv etc. pp.



  • Verstehe. Also ist es gar nicht so sinnlos wenn ich jetzt einige Grundfunktionen versuche selbst zu implementieren? Ein praxistaugliches Grundgerüst verwende ich bereits...



  • Schau mal nach "Numerical recipes in C++" - wenn du mit wissenschftlichem Rechnen in FORTRAN schon zu tun hattest wirst du die FORTRAN-Version davon evtl. schon kennen.



  • Mathestudent schrieb:

    Verstehe. Also ist es gar nicht so sinnlos wenn ich jetzt einige Grundfunktionen versuche selbst zu implementieren? Ein praxistaugliches Grundgerüst verwende ich bereits...

    Niemals eigene Klassen verwenden. Gute vorgefertigte Lösungen sind auf jeden Fall deutlich schneller!



  • Mathestudent schrieb:

    Hallo.
    Gibt es dabei Geschwindigkeitseinbußen?

    Des Pudels Kern ist, daß Fortran statischer ist und besser optimieren kann als das in C praktikabel wäre.
    In C++ kann man das aber ausgleichen. http://www.oonumerics.org/blitz/benchmarks/



  • Wenn du fortran in C++ einbindest musst du min. 1 Funktion mehr aufrufen, was auch Zeit kostet! Es ist auf jeden Fall das Beste professionelle C++ libs zu nehmen!

    @Volkard
    Deine Signatur:
    a) Die Amis sind furtchbar gläubig
    b) .Net ist bis dato zB für Linux schlecht!


Anmelden zum Antworten