À propos du projet
Bend est un langage de programmation haut niveau conçu pour le parallélisme massif, développé par HigherOrderCO et propulsé par l’environnement d’exécution HVM2. Il vise à combiner l’expressivité de langages comme Python et Haskell avec le comportement de passage à l’échelle du calcul GPU de type CUDA.
Les fonctionnalités du langage mises en avant dans le README incluent une allocation rapide d’objets, un support complet des fonctions d’ordre supérieur avec fermetures, une récursion sans restriction et des continuations. Le parallélisme est implicite : le README indique qu’il n’est pas nécessaire de créer des threads, d’utiliser des verrous, des mutex ou des atomiques. Le code qui peut s’exécuter en parallèle le fera, avec une accélération quasi linéaire en fonction du nombre de cœurs, et le projet affirme prendre en charge plus de 10 000 threads concurrents.
L’installation se fait via cargo de Rust. Les utilisateurs installent l’environnement d’exécution HVM2 avec `cargo install hvm`, puis installent le langage avec `cargo install bend-lang`. Les instructions couvrent Linux et macOS, avec WSL2 suggéré pour Windows. L’environnement d’exécution CUDA nécessite le toolkit NVIDIA CUDA 12.x, et le README précise que seuls les GPU NVIDIA sont actuellement pris en charge.
Les programmes peuvent être exécutés via plusieurs backends : `bend run-rs` utilise un interpréteur Rust séquentiel, `bend run-c` utilise un interpréteur C parallèle, et `bend run-cu` utilise un interpréteur CUDA massivement parallèle. Le code Bend peut également être compilé en fichiers C ou CUDA autonomes via `gen-c` et `gen-cu`, bien que le README décrive le générateur de code comme étant à un stade précoce. Un drapeau `-s` rapporte les réductions, le temps d’exécution et les interactions par seconde.
Le README présente un exemple de sommation séquentielle versus parallèle pour illustrer comment une formulation par division et conquête permet une exécution parallèle automatique. Il présente également un benchmark de tri bitonique avec des temps rapportés : 12,15 secondes sur un CPU Apple M3 Max via l’interpréteur Rust, 0,96 seconde sur le même CPU via l’interpréteur C, et 0,21 seconde sur un GPU NVIDIA RTX 4090 via l’interpréteur CUDA. Ces chiffres sont les mesures rapportées par le projet lui-même.
Le README avertit que la version actuelle peut avoir des performances monocœur inférieures et que les performances devraient s’améliorer à mesure que les techniques de génération de code et d’optimisation progressent. Les ressources supplémentaires incluent l’article HVM2, un GUIDE.md, un FEATURES.md, un dossier d’exemples et une communauté Discord.
Comments
0 Rating appears after 10 ratings
Sign in to join the discussion.