"We are back" « oc.at

c++ libraries für matrixoperationen und matlab

NullSpace 13.06.2004 - 18:10 2284 41
Posts

NullSpace

katzenknuddler
Registered: Apr 2001
Location: multiversum / li..
Posts: 658
Hi Leute!

bin grad bei einem projekt dabei und muss ein paar sachen in c++ schreiben. in diesen programmen kommen eine menge an vektor- und matrixoperationen vor und meine frage ist, ob es bereits fertige bibliotheken gibt, mit denen man schnell und effizient mit matrizen/vektoren arbeiten kann. weil dann müsst ich mir nicht alle funktionen selber schreiben.

weiters bräucht ich auch eine bibliothek, mit der man daten gut ins matlab exportieren kann oder mit der man arrayes als .mat files ablegen kann.

bin für jede hilfe sehr dankbar.
tia und grüße, nullspace


/add: achja. die libraries sollten auch für sehr grosse matrizen halbwegs vernünftig funktionieren.
Bearbeitet von NullSpace am 13.06.2004, 18:13

that

Hoffnungsloser Optimist
Avatar
Registered: Mar 2000
Location: MeidLing
Posts: 11351
Das hier klingt von der Beschreibung passend:

http://www.boost.org/libs/numeric/ublas/doc/index.htm

Ringding

Pilot
Avatar
Registered: Jan 2002
Location: Perchtoldsdorf/W..
Posts: 4300
Generell LAPACK, Intel Math Library (nicht gratis glaub ich), GNU Scientific Library (bin mir nicht so sicher, was die genau kann).

Wenn du eh mit Matlab arbeitest, warum verwendest du dann nicht die Matlab Funktionen für die Rechnerei? Matlab bietet für C ja eine umfangreiche Bibliothek an.

SYSMATRIX

Legend
Legend
Registered: May 2000
Location: ~
Posts: 5019
es gibt nur einen einzigen compiler mit dem man sich das auf x86 CPUs antun sollte: intel cpp compiler(399 USD) und die intel nath kernel library(199 USD). von beiden gibt es aber 30 tage free evaluation versionen.

außerdem sollen die matlab libs ebenfalls ausgezeichnet sein(siehe ringi)

Ringding

Pilot
Avatar
Registered: Jan 2002
Location: Perchtoldsdorf/W..
Posts: 4300
Für Linux gibt's auch eine ganz kostenlose Version (vom Compiler, von der MKL glaub ich nicht).

SYSMATRIX

Legend
Legend
Registered: May 2000
Location: ~
Posts: 5019
jo, vom compiler schon.

Ringding

Pilot
Avatar
Registered: Jan 2002
Location: Perchtoldsdorf/W..
Posts: 4300
Kann für C++ auch sehr brauchbar sein:

http://www.oonumerics.org/blitz/

Aber an deiner Stelle wäre für mich die erste Wahl einmal die Matlab Library.

SYSMATRIX

Legend
Legend
Registered: May 2000
Location: ~
Posts: 5019
Wird auch für die ganzen SPEC benchmarks verwendet, ist sicher sein geld wert(wie fast alle intel produkte :D).

der intel cpp compiler ist sicher jeden dollar wert den er kostet.

NullSpace

katzenknuddler
Registered: Apr 2001
Location: multiversum / li..
Posts: 658
Zitat von Ringding
Wenn du eh mit Matlab arbeitest, warum verwendest du dann nicht die Matlab Funktionen für die Rechnerei? Matlab bietet für C ja eine umfangreiche Bibliothek an.

oh, und wo finde ich diese bibliotheken? sind die für c oder c++?

btw: ja, als arbeitsumgebung (compiler) steht uns das microsoft visual net packet zur verfügung. leider hab ich bis jetzt noch nie mit c/c++ gearbeitet und irgendwie ist alles noch ein bisschen wie eine kleine neue welt. aber java hätt ich glernt und in matlab hab ich schon viel programmiert. falls irgendwelche tipps oder tolle literaturvorschläge gibt für c++ wär ich auch dran interessiert.

thx für alle antworten bis jetzt.
Bearbeitet von NullSpace am 13.06.2004, 20:36

SYSMATRIX

Legend
Legend
Registered: May 2000
Location: ~
Posts: 5019
um brauchbare performance auf modernen CPUs zu erzielen ist der intel cpp unumgänglich. die C matlab libs kommen aber AFAIR zB in der student version nicht mit, dafür braucht man schon eine höhere lizenz. aber am besten einfach in der matlab dokumentation nachschauen.

manalishi

tl;dr
Avatar
Registered: Feb 2001
Location: Feldkirch
Posts: 5977
Zitat von SYSMATRIX
der intel cpp compiler ist sicher jeden dollar wert den er kostet.

wie wahr. gibts eigentlich einen, der besseren code erzeugt?

SYSMATRIX

Legend
Legend
Registered: May 2000
Location: ~
Posts: 5019
Zitat von manalishi
wie wahr. gibts eigentlich einen, der besseren code erzeugt?
nein. gilt sowohl für CPP als auch für FORTRAN.

SYSMATRIX

Legend
Legend
Registered: May 2000
Location: ~
Posts: 5019
btw is das .mat file format extrem ziemlich einfach und exportieren ins matlab sprich importieren in matlab ist _ziemlich_ einfach :)

wenns echt um killer performance geht, solltest du auch in erwähnung ziehen GPUs als rechenknechte zu misbrauchen, eine halbwegs moderne GPU sind wie geschaffen für matrix operationen(besonders wenn sie im fp format sind).

Ringding

Pilot
Avatar
Registered: Jan 2002
Location: Perchtoldsdorf/W..
Posts: 4300
Es gibt sehr ausführliche Matlab Doku zu der Library.

Also als Allround-Compiler ist Intel C++ sicher der beste, den's gibt (für Intel CPUs natürlich). Ein sehr guter C++ Compiler ist auch noch KAI C++, den hat mittlerweile aber auch schon Intel gekauft.

SYSMATRIX

Legend
Legend
Registered: May 2000
Location: ~
Posts: 5019
Itanium2+MKL+IntelCPP = _killer_
Kontakt | Unser Forum | Über overclockers.at | Impressum | Datenschutz