Table of Contents

Calcul numérique en Java

F. de Coligny - 31.10.2003

Objectif : associer la souplesse du langage Java et les performances des outils d'analyse et de calcul numérique de la communauté scientifique pour rendre possible :

Contexte : développement de la plate-forme Capsis en langage Java, prototype de connexion Capsis-Scilab (stage de Laurent Biget - été 2002), discussions avec Christophe Pradal (cirad), Nicolas Donès et Christian Pichot (INRA).

Références (parmis d'autres) :

Les logiciels et bibliothèques de calcul numérique peuvent être catégorisés selon :

Dans ce document, on se limite aux logiciels libres, les logiciels propriétaires (Matlab, S, JMSL…) ayant souvent une implémentation libre. Java étant portable, il n'est pas fait mention des systèmes d'exploitation pour chacun des outils / bibliothèques.

1. Les plus utilisés :

2. Les principales implémentations en C/C++, fortran, Python... :

3. Les principales implémentations en Java :

4. Discussion

L'utilisation d'une bibliothèque de calcul numérique en Java pose la question de l'implémentation. la solution la plus directe serait l'utilisation d'une implémentation en Java faisant référence. Cependant une telle implémentation ne semble pas se dégager actuellement.

La connexion à une implémentaion en C/C++ et/ou Fortran est plus complexe. La première tentative de connexion Java-Scilab qu'a constitué le stage de Laurent Biget en été 2002 a montré que l'opération était très technique, qu'elle requerait des compétences en calcul numérique, en Java ainsi qu'en les langages d'implémentation de la bibliothèque, autant de difficultés aggravées par l'apparition de questions particulières aux systèmes d'exploitation cibles.

Le résultat est un prototype difficile à installer et d'un usage complexe, dont la performance est difficile à évaluer, impossible à mettre entre les mains d'un modélisateur Capsis “non informaticien”.

Une difficulté supplémentaire est le choix d'une implémentation de référence. Celle ci dépend des questions à résoudre, des possiblités offertes par la bibliothèque (de qualités et performances très hétérogènes et difficiles à évaluer : par exemple, CLapack est beaucoup moins performant que le Lapack original en Fortran dont l'optimisation est très poussée) ainsi que des préférences ou habitudes de l'utilisateur.

5. Conclusions

Au terme de cette réflexion, plusieurs possibilités :

1. Solution non Java : interviewer les utilisateurs préssentis pour le choix d'un outil non Java et faire étudier et prendre en charge plus sérieusement la question par une personne ayant les compétences suivantes :

L'étude devra aborder les questions relatives :

Dans ce cas, le système devra être suivi et maintenu dans le temps par la personne en question pour assurer sa perennité.

2. Attendre l'émergence d'une bibliothèque standard de calcul numérique en Java développée et maintenue par une communauté de scientifiques et l'adjoindre à Capsis (répertoire d'extensions). Cette option ne requiert aucun investissement particulier d'un développeur.