biblio. informatique
Proland permet le :
- rendu et édition temps-réel de terrains multi-résolution (jusqu'à une planète entière)
- rendu et édition temps-réel de données vectorielles (représentant par exemple des routes ou des rivières)
- rendu temps-réel d'atmosphères planétaires et des nuages (depuis tout point de vue du sol à l'espace)
- rendu temps-réel des océans (depuis tout point de vue du sol à l'espace)
- rendu de forêts à base de "billboards" 2D ou 3D
Proland peut rendre des scènes naturelles très vastes, à toutes les échelles et depuis tout point de vue du sol à l'espace. Les données du paysage sont chargées à la volée en fonction du point de vue courant (seules les données nécessaires pour le point de vue courant sont stockées en mémoire, à la résolution appropriée). Les données du paysage peuvent être modifiées procéduralement à la volée. Par exemple la forme et la texture d'un terrain peuvent être modifiées en utilisant des données vectorielles représentant des routes ou des rivières.
Proland est basé sur un graphe de tâches et un gestionnaire de cache tirant parti des multi-processeurs, gérant le chargement anticipé des données pour réduire les latences disque, et gérant automatiquement les dépendances entre tâches (les données procédurales sont automatiquement recalculées quand leur données d'entrée sont modifiées).
OpenKrakeN est une collection de bibliothèques C++ destinée à la recherche et l'enseignement initialement développée par la sous-équipe MISS (Modélisation, Image de Synthèse et Simulation) de l'équipe A3SI du laboratoire d'informatique Gaspard-Monge (LIGM).
Cette bibliothèque offre des fonctionnalités de base en synthèse d'images, mathématiques, vision par ordinateur, réalité virtuelle et augmentée.
Netlib : logiciels et bibliothèques pour le calcul scientifique
Netlib est un dépôt contenant des logiciels et des bibliothèques de fonctions écrites en Fortran, C ou C++ utiles pour le calcul scientifique. On y trouve par exemple des bibliothèques célèbres telles que blas, lapack, linpack, atlas...
La liste complète des bibliothèques disponibles est à l'URL suivante : http://www.netlib.org/liblist.html
Ce dépôt est maintenu par les laboratoires AT&T Bell, l'Université du Tennessee et le laboratoire Oak Ridge National.
Il existe dans le monde entier des clones de ce dépôt synchronisés automatiquement.
Bibliothèque (sous la forme de codes sources en C) permettant de compiler des pilotes pour des cartes d'acquisition de données sous Linux. On trouve des pilotes pour les principales cartes du commerce (NI, Avantech, Data Translation,…).
Une fois les pilotes compilés et intégrés au noyau, on peut développer ses propres applications avec l'interface de son choix.
Utilisation quotidienne sur cinq PC instrumentés d'une carte NI PCI 6143 (8voies simultanées 16bits 250kech/s)
Programmes développés sous GNU Octave ou en langage C.
Catalogue de cartes supportées limité. Notamment les derniers modèles des constructeurs ne sont pas supportés.
Liste complète ici : http://www.comedi.org/hardware.html
Pour l'instant je n'ai testé qu'un seul modèle de carte (NI PCI6143). J'utilise le programme KTimeTrace comme programme de test (ancien mais fonctionnel).
Bibliothèque (sous la forme de codes sources) permettant de compiler des pilotes pour des cartes GPIB sous Linux. On trouve des pilotes pour les principales cartes GPIB du commerce (NI, Agilent,...).
Une fois les pilotes compilés et intégrés au noyau, de nombreux langages de programmation peuvent être utilisés (C avec API compatible avec celle proposé par IBM par exemple il y a de nombreuses années, Python, ...).
- Stéphane Lebon : utilisation quotidienne sur une dizaine de PC instrumentés. A travers des programmes développés sous GNU Octave ou en langage C nous interfaçons différents types d'appareils (analyseurs de spectres, oscilloscopes, voltmètres vectoriels, générateurs de signaux...) de différentes marques (Agilent, Lecroy, Stanford).
- Jean-Marc Routoure : pilotage d'un analyseur de spectre HP89410A à l'aide d'un Mac mini sous Debian et d'une carte National Instrument type USB B. Programmation en C avec une interface graphique en GTK.
- Arnaud Tizon : utilisation de ce code avec succès pour piloter un oscilloscope TDS794D et récupérer les mesures.
Plusieurs personnes signalent avoir recompilé le noyau Linux pour permettre un fonctionnement correct de cette bibliothèque.
Je n'ai personnellement jamais rencontré de problèmes depuis ubuntu 8.04 et mandriva 2006.
Une bonne connaissance du système d'exploitation est un plus, notamment pour configurer correctement le chargement du module au démarrage du PC.
Les bonnes pratiques de développement actuelles déconseillent l'utilisation des méthodes System.out.print* et System.err.print* pour afficher des messages et recommandent plutôt l'utilisation d'un logger tel Log4J apportant plus de souplesse.
Log4J simplifie les gestions des logs et le débogage des applications Java en fournissant des classes et des méthodes pour l'enregistrement de ces informations. Les fichiers journaux d'une application représentent la mémoire d'une application, un historique permanent de la vie de celle-ci, il est donc important de correctement enregistrer ces messages.
Le développeur préférera envoyer le message qu'il souhaite afficher ou enregistrer au logger en lui assignant un certain niveau de criticité (DEBUG, INFO, WARNING, ERROR, CRITICAL) et indiquant la classe/la méthode à l'origine de ce message, la ligne dans le code source, ou toute autre information utile. Grâce à cette couche, on peut facilement demander par exemple à une application d'afficher tous les messages de niveau DEBUG et supérieur à l'écran lors de la phase de développement puis lui demander de n'afficher que les messages de niveau WARNING et supérieur dans un fichier de log en phase de production.
Ces différents types d'affichage des messages peuvent être configurés facilement au runtime de log4j par fichier XML ou par fichier de propriétés, donc de façon totalement externe au code.
Log4J est constitué de 3 composants principaux qui permettent de configurer le dispositif de journalisation : les Loggers pour les écrire les messages, les Appenders pour sélectionner la destination des messages et les Layouts pour la mise en forme des messages.
Log4J permet donc non seulement de gagner en flexibilité sur la gestion des messages d'une application mais également de faciliter la recherche et la détection d'erreur.
- Les messages peuvent être enregistrés de différentes façons : dans une base de données, dans un fichier plat ou XML, vers une socket, vers une file JMS, vers un serveur SMTP,... La sortie vers un fichier XML associée à un outil de lecture adéquat permet une recherche simplifiée des messages.
- Log4J permet également de remonter les messages d'erreurs de certains logiciels avec lesquels il s'interface. C'est notamment le cas de Tomcat. On peut alors récupérer les messages de Tomcat dès le niveau DEBUG.
- Log4J permet de gérer finement la rotation des fichiers de logs en production. Plutôt qu'un fichier de log unique dont la taille va rapidement grossir et le rendre inexploitable, on peut faire en sorte que Log4J archive plusieurs fichiers de logs selon différents critères (1 par jour, par semaine, nouveau fichier lorsque le fichier courant atteint une taille donnée,...).
Une version de log4j 1.3 alpha releases a été sortie mais elle pose des problèmes de compatibilité avec la version 1.2 et sa maintenance a été abandonnée. Il est fortement conseillé d'utiliser la version 1.2
Log4J est utilisé pour gérer les fichiers journaux de la plupart de nos applications Java.
Log4J a nécessairement des impacts sur les performances de l'application. Cependant, si le logger est configuré judicieusement (éviter l'affichage de messages dans des boucles par exemple), ceux-ci sont généralement négligeables.
La profusion de messages dans le fichier de log et/ou une mauvaise configuration peuvent impliquer un accroissement important de la taille des fichiers de logs aboutissant même à stopper la production d'un applicatif (par exemple si le log et les données sont sur le même file system).
GINA est un projet OpenSource initié et développé par l'Université de Montpellier II dans le cadre de la restructuration de son Système d'Information. GINA est une application Web principalement destinée à aider les chercheurs, enseignants-chercheurs, ita, iatos, doctorants etc... des laboratoires de recherche de type UMR (Unité Mixte de Recherche) dans les tâches de gestion administrative et à fiabiliser les bases de données référentielles (HAL, Harpège, Labintel...), mais GINA sert également à bien d'autres choses encore.
Gestion de l'Information Numérique Administrative ou encore Gina Is Not AIGLe ... Bien que GINA reprenne les principes, les fonctionnalités et la philosophie du logiciel AIGLe , c'est une refonte totale de celui-ci, AIGLe est un "brouillon" de GINA. Cf .
L'équipe de GINA reste ouverte à toute proposition de participation au projet.
Description générale
FEEL++ est une bibliothèque C++ pour la résolution des EDP par des méthodes de Galerkin généralisées telles que les méthodes des éléments finis simples et étendues (FEM et hp-FEM) et les méthodes spéctrales.
Fonctionnalités principales :
- permet de résoudre des problèmes en 1D, 2D, 3D.
- supporte différents types d'objets géométriques pour la discrétisation (simplexes et hypercubes).
- supporte différents types de polynômes pour l'interpolation (Lagrange, Dubiner, Legendre)
- permet l'utilisation de concepts mathématiques fonctionnels forts (opérateurs, espaces de fonctions, éléments d'espaces de fonctions..).
- utilise aussi bien les méthodes continues que discontinues de Galerkin./li>
- utilise son propre langage intégré au C++ ( DSEL : domain specific embedded language) à l'aide de FEEL++
Exemples
1. Calcul de $\int_\Omega x^2+y^2+z^2$ :
/*
* Compute \int f where f= x^2 + y^2 + z^2 with a quadrature that integrates exactely second order polynomials
*/
double local_intf = integrate( elements(mesh), _Q<2>(), Px()*Px() + Py()*Py() + Pz()*Pz() ).evaluate()(0,0);
2. Assemblage du laplacien, conditions aux limites de Dirichlet (formulation faible ou forte)
space_ptrtype Xh = space_type::New( mesh );
element_type u( Xh, "u" );
element_type v( Xh, "v" );
sparse_matrix_ptrtype D( M_backend->newMatrix( Xh, Xh ) );
form2( Xh, Xh, D, _init=true ) = integrate( elements(mesh), _Q<2*(Order-1)>(),
nu*gradt(u)*trans(grad(v)) );
// weak Dirichlet (Nitsche formulation)
form2( Xh, Xh, D ) +=
integrate( markedfaces(mesh,1), _Q<2*Order>(),
-(gradt(u)*N())*id(v) -(grad(v)*N())*idt(u) +penaldir*id(v)*idt(u)/hFace()) +
integrate( markedfaces(mesh,3), _Q<2*Order>(),
-(gradt(u)*N())*id(v) -(grad(v)*N())*idt(u) +penaldir*id(v)*idt(u)/hFace());
D->close();
Prérequis
Logiciels
Bibliothèques
- Boost >= 1.37
- Mpi (optional)
- Petsc >= 2.3.3 (optional)
- Trilinos (optional)
Pre/Post-Traitement
Formats de Pre-Processing
- GAMBIT neutral
- Gmsh
Formats supportés pour le Post-processing
- EnSight (use then ensight and/or paraview for visualisation)
- Gmsh
BLAS est une bibliothèque d'algèbre linéaire qui permet de réaliser des opérations élémentaires entre : les scalaires, les vecteurs, les matrices. Diffusée en 1979, cette librairie a, depuis, fait l'objet de nombreuses optimisations par la plupart des constructeurs. De ce fait, BLAS est devenu un standard en calcul haute performance et est utilisée dans de nombreuses librairies de plus haut niveau (LAPACK, ScaLAPACK, ...) . On peut également citer ATLAS qui permet d'obtenir une version optimiser de BLAS sans se soucier de l'architecture de la machine.
Pour faciliter son intégration et son utilisation, les concepteurs ont partitionné la librairie en niveaux :
niveau 1 : opérations sur des vecteurs
- addition de 2 vecteurs,
- produit scalaire,
- calcul de norme,
- ...
niveau 2 : opérations matrice-vecteur
- addition d'un produit matrice-vecteur et d'un vecteur,
- résolution de systèmes matrice-vecteur où la matrice est triangulaire supérieure ou inférieure,
- ...
niveau 3 : opérations matrice-matrice
- addition d'un produit matrice-matrice et d'une matrice,
- résolution de systèmes matrice-matrice où la première matrice est triangulaire supérieure ou inférieure,
- ...
Référence des fonctions disponibles : http://www.netlib.org/blas/blasqr.pdf
Différents types de matrice y sont implémentés: format générale, symétrique, hermitienne, triangulaire, ...
Le stockage des matrices est un stockage de type matrice pleine. On peut néanmoins obtenir une version de BLAS pour des matrices creuses (appelée Sparse BLAS) en utilisant par exemple ACML ou Intel MKL.
Exemple d'opération simple avec CBLAS, l'interface langage C de BLAS
#include stdio.h
#include gsl/gsl_cblas.h
int
main (void)
{
int lda = 3;
float A[] = { 0.11, 0.12, 0.13,
0.21, 0.22, 0.23 };
int ldb = 2;
float B[] = { 1011, 1012,
1021, 1022,
1031, 1032 };
int ldc = 2;
float C[] = { 0.00, 0.00,
0.00, 0.00 };
/* Compute C = A B */
/* Prefix : s=real, d=double, c=complex, z=complex*16 */
cblas_sgemm (CblasRowMajor,
CblasNoTrans, CblasNoTrans, 2, 2, 3,
1.0, A, lda, B, ldb, 0.0, C, ldc);
printf ("[ %g, %g\n", C[0], C[1]);
printf (" %g, %g ]\n", C[2], C[3]);
return 0;
}
La compilation s'effectue de la façon suivante :
$ gcc -Wall demo.c -lgslcblas
et les sorties de l'exécution donnent :
$ ./a.out
[ 367.76, 368.12
674.06, 674.72 ]
Exemple d'opération simple avec CBLAS, l'interface langage C de BLAS :
#include stdio.h
#include gsl/gsl_cblas.h
int
main (void)
{
int lda = 3;
float A[] = { 0.11, 0.12, 0.13,
0.21, 0.22, 0.23 };
int ldb = 2;
float B[] = { 1011, 1012,
1021, 1022,
1031, 1032 };
int ldc = 2;
float C[] = { 0.00, 0.00,
0.00, 0.00 };
/* Compute C = A B /
/ Prefix : s=real, d=double, c=complex, z=complex*16 */
cblas_sgemm (CblasRowMajor,
CblasNoTrans, CblasNoTrans, 2, 2, 3,
1.0, A, lda, B, ldb, 0.0, C, ldc);
printf ("[ %g, %g\n", C[0], C[1]);
printf (" %g, %g ]\n", C[2], C[3]);
return 0;
}
La compilation s'effectue de la façon suivante :
$ gcc -Wall demo.c -lgslcblas
et les sorties de l'exécution donnent :
$ ./a.out
[ 367.76, 368.12
674.06, 674.72 ]
BLAS est disponible en langage C (CBLAS) et en Fortran 77.
BLAS a été utilisée au LAAS/CNRS dans le projet BINAUR pour "certifier" les résultats de calcul matriciel en dehors de matlab.
GNU MPC est une bibliothèque de fonctions mathématiques sur les nombres complexes à virgule flottante en précision arbitraire avec un arrondi correct.
L'arrondi correct assure que tous les bits du résultat d'un calcul sont exacts, ce qui garantit une borne supérieure déterminée pour l'erreur d'arrondi et permet, par exemple, de faire de l'arithmétique d'intervalles (ici, il s'agit de rectangles).
La représentation des nombres complexes utilisée est une représentation cartésienne x + i * y, où x et y sont des nombres flottants binaires.
GNU MPC fournit toutes les fonctions complexes spécifiées dans la norme ISO C99.
La bibliothèque GNU MPC est utilisée par plusieurs systèmes de calcul formel : TRIP, MAGMA et SAGE.
Voir aussi Applications using mpc.