Conseil
TriScale innov concentre une expertise de pointe sur 3 axes :
- Mathématiques Appliquées (EDP, Optimisation maths…) ;
- Développement Logiciel (Julia, Rust, Go, C, C++, Java…) ;
- Architectures Matérielles (Cluster de SMP, GPU, DSPs, IoT…).
Notre crédo : le succès d’un logiciel scientifique et technique dépend de la combinaison optimale de ces 3 domaines en forte interaction.
Nous vous proposons notre expertise globale pour étudier avec vous les algorithmes, les langages et les matériels les mieux adaptés à vos objectifs industriels. Ce conseil peut intervenir à différentes étapes de vos projets :
- audit de codes existants ;
- fourniture de prototypes logiciels ;
- aide à la composition d’équipes projets.
TriScale innov : des réponses adaptées
Notre expérience dans le milieu de la recherche industrielle nous a conduits à rencontrer des situations de conseil variées dont le résultat a souvent surpris nos interlocuteurs.
Des maths ou de l’informatique ? Face à un besoin d’amélioration de performance sur un logiciel donné, un chef de projet peut être conduit à demander conseil à des spécialistes du calcul parallèle et de l’optimisation logicielle. Ce peut être un choix gagnant mais il arrive aussi que le potentiel d’amélioration soit beaucoup plus important du côté des algorithmes mathématiques. Notre expertise en mathématiques nous permet de réorienter l’étude sur ce terrain.
Du parallélisme ou une meilleure efficacité séquentielle ? Cette question n’est pas toujours posée mais elle survient souvent après une analyse précise des performances d’un logiciel. Notre approche consiste à d’abord définir l’efficacité d’un logiciel en localisant les parties coûteuses (profiling), puis à évaluer le taux d’utilisation des architectures cibles. Le besoin de parallélisme disparaît généralement quand un très faible taux d’utilisation (par ex. < 1%) est mis au jour.
C++, Fortran, Python, Java, Julia, Rust… ? Le choix du ou des langages d’implémentation est à la fois crucial et difficile. Les paramètres à prendre en compte sont nombreux. Trouver un optimum global nécessite, en plus de la connaissance de chaque langage, une grande expérience du rapport entre leur difficulté d’apprentissage, leur productivité, la fiabilité et les performances des codes produits et surtout des coûts de maintenance induits.
Un cluster dédié, du cloud computing, un GPU, un DSP ? Pour un opérationnel, le choix des machines cibles doit être fait parmi une offre de plus en plus diversifiée. Ce choix dépend notamment de la taille des problèmes considérés, de l’adéquation algorithmes/machines, des besoins de redondances (disponibilité) ou de confidentialité des données. Faire le bon choix est la condition d’un déploiement réussi.
Maintenir, réécrire, acheter ? Encore un choix difficile qui dépend de nombreux paramètres dont une part importante concerne l’organisation de l’entreprise. Au-delà de ces contraintes internes, l’évaluation des coûts de réécriture en fonction des langages ciblés, la connaissance des alternatives (en Open ou Closed Source) et l’évaluation de l’optimalité des algorithmes existants sont des éléments dimensionnants pour être en capacité d’adopter la meilleure stratégie.