ILNumerics

aus Wikipedia, der freien Enzyklopädie
Wechseln zu: Navigation, Suche
ILNumerics
Aktuelle Version 3.3.3
(März 2014)
Betriebssystem Unix, Linux, BSD-Derivate, Microsoft Windows, Mac OS X und Solaris 8
Kategorie Mathematik
Lizenz GPLv3
ilnumerics.net

ILNumerics ist eine Klassenbibliothek mit dem Ziel, numerische Berechnungen für die .NET-Plattform verfügbar zu machen. Dem Entwickler soll ermöglicht werden, komplexe mathematische Algorithmen direkt in einer GPL Programmiersprache zu formulieren.

Überblick[Bearbeiten]

ILNumerics ist selbst eine .NET-Assembly. Im Unterschied zu etablierten Produkten können Algorithmen als normale .NET-Klassen erstellt und zu Intermediate Language (IL) übersetzt werden.

ILNumerics erweitert das .NET-Framework um komplexe Zahlen, ermöglicht das Rechnen mit Skalaren, Vektoren, Matrizenrechnung oder beliebig dimensionalen Daten. Diese Arrays bieten alle Möglichkeiten der Manipulationen und Operationen, wie sie im mathematischen Umfeld etabliert sind. Häufig benötigte Algorithmen der linearen Algebra (zum Beispiel Lineare Gleichungssysteme, Eigenwerte und -vektoren) sowie FFT-Funktionen sind ebenso implementiert wie Klassen zur graphischen Ausgabe in 2D und 3D.

Für lineare Algebra-Routinen sind prozessoroptimierte LAPACK-Bibliotheken des MIT sowie prozessoroptimierte Implementierungen (MKL) eingebunden.

Programme des .NET-Frameworks können unter Windows und mit Hilfe des Mono-Projektes auch auf Unix, Linux, BSD-Derivaten, Mac OS X und Solaris 8 ausgeführt werden.

Schnelle Programmentwicklung[Bearbeiten]

Mit dem Einzug numerischer Berechnungen in Programmierumgebungen wie .NET wird dem Wissenschaftler die Möglichkeit eröffnet, das klassische Vorgehen zu verkürzen. Bislang teilt sich der Entwicklungsprozess im Wesentlichen in die Schritte Algorithmenentwicklung und -implementierung. Algorithmen werden in klassischen Mathematik-Umgebungen als Skripte entwickelt. Für industrielle Projekte müssen diese nachträglich in den endgültigen Programmcode übersetzt werden. Diesen aufwendigen Prozess kann man oftmals zwar teilweise automatisieren, dennoch sind dem Verfahren viele Nachteile inhärent. So erbt man die fehlende Typsicherheit und geringere Stabilität der Skripte und muss oftmals Effizienz-Einbußen in Kauf nehmen. ILNumerics ist die erste Bibliothek, die die Erstellung derartiger Algorithmen direkt in der endgültigen Programmiersprache des .NET-Frameworks ermöglicht. Eine Konvertierung ist somit nicht mehr notwendig. Das Programm wird schneller und stabiler.

Performance[Bearbeiten]

ILNumerics ist als erste Bibliothek dieser Art auf das Verarbeiten besonders großer Daten im .NET-Framework hin optimiert. Das Design der Bibliothek realisiert ein deterministisches Aufräumen von genutzten Speicher in Verbindung mit einem schnellen Memory-Pool. Dadurch sollen die Nachteile der Speicherverwaltung mittels Garbage-Collector ausgeräumt werden. Diese Maßnahmen führen dazu, dass die numerischen Algorithmen mit derselben Leistung ausgeführt werden wie Algorithmen, welche unter Verwendung von Fortran oder C/C++ erstellt wurden. Der Trend zur Verwendung höherer Programmiersprachen für numerische Berechnungen geht einher mit der Entwicklung der Hardware: Für die optimale Nutzung der Computer-Ressourcen müssen Techniken der Parallelisierung angewendet werden. Höhere Programmiersprachen bieten eine einfachere Möglichkeit der Abstraktion der verschiedenen Hardware-Platformen (CPU/GPU) und sind somit zunehmend auch interessant für den Bereich des Number-Crunching. Gleichzeitig bieten sie durch den höheren Bedienkomfort einen drastisch verringerten Aufwand bei der Erstellung.

Besonderheiten[Bearbeiten]

Surface Graph, generiert mit ILNumerics.Drawing

Die Sprache zum Erstellen und Manipulieren der n-dimensionalen Objekte lehnt sich sehr stark an die etablierten Skriptsprachen im wissenschaftlichen Umfeld an. So sind fast alle Funktionen parameterkompatibel zu MATLAB. Dennoch gibt es einige Unterschiede. Der größte besteht in der starken Typsicherheit des Codes, was das Debuggen und die Stabilität der Programme günstig beeinflussen dürfte. Zwar unterscheidet sich der Code bei Verwendung von zum Beispiel C# als Programmiersprache nur leicht von der Skriptversion, dennoch müssen Umsteiger generell mehr acht auf einige plattformspezifische Besonderheiten legen (zum Beispiel die Verwendung von getypten Arrays). Als weitere Besonderheit sind die integrierten Steuerelemente zur Visualisierung numerischer Daten zu nennen. Die hiermit erstellten 2D- und 3D-Diagramme lassen sich direkt in eigenen interaktiven GUI-Programmen verwenden.

Geschichte[Bearbeiten]

ILNumerics begann als Sammlung hilfreicher mathematischer Routinen und wurde in wissenschaftlich-industriellen Projekten eingesetzt. Im Jahre 2005 wurde begonnen, die Software als eigenständige Bibliothek mit eigenem Objektdesign auszurichten. 2007 wurde sie dann auf eine Veröffentlichung vorbereitet und zunächst als proprietäre Bibliothek angeboten. Von August 2007 bis November 2011 wurde sie als eigenständiges Projekt gepflegt und kostenlos unter der LGPL Version 3 zur Verfügung gestellt. Innerhalb dieser Zeit wurden mehr als 1000 Projekte mit ihrer Hilfe realisiert. Seit November 2011 wird an einer stark verbesserten Version gearbeitet, welche unter einer OpenSource Lizenz bereitgestellt werden wird.

ILNumerics ist der Gewinner des mit insgesamt 20.000 Euro dotierten BASTA! Innovation Awards 2007[1], der im Rahmen der vom Software & Support Verlag (S&S) veranstalteten Softwareentwickler-Konferenz BASTA! vergeben wurde.

Alternativen[Bearbeiten]

Einige Mathematik-Programme bieten ebenfalls die Möglichkeit, die mit ihnen erstellten Algorithmen in eigenen Programmen zu verwenden. Das prominenteste proprietäre Beispiel ist wohl MATLAB der Firma The MathWorks, Inc. mit Compiler für C und Builder für .NET oder die IMSL von Visual Numerics. Andere Projekte verfolgen konsequent den Ansatz, nur für die .NET-Plattform zu entwickeln. Hier seien „Extreme Optimization“, „dnAnalytics“ oder Center Space „NMath“ genannt. Während Erstere wesentlich etablierter sind, verwenden sie meist native Bibliotheken, was häufiges Verlassen des verwalteten Codes bei der Ausführung nötig macht. Letztere dagegen können durch die Beschränkung auf verwalteten Code ohne eigenes Memory Management oft nicht die Performance bieten, welche für professionelle Algorithmen nötig ist.

Weblinks[Bearbeiten]

Fußnoten[Bearbeiten]

  1. BASTA! Innovation Award 2007