← Nieuwste papers
💻 informatica

JACC v1.0: High-productivity Performance Portability in the LLVM-compiled Julia Language

Dit artikel introduceert JACC v1.0, een uniform framework voor de door LLVM gecompileerde programmeertaal Julia dat hoogproductieve, draagbare en hoogperformante parallelle programmering mogelijk maakt over diverse CPU- en GPU-architecturen via een enkele codebase.

Oorspronkelijke auteurs: Philip W Fackler, Pedro Valero-Lara, Narasinga Rao Miniskar, Steven Hahn, Het Mankad, Doris Chiang, Jose Gonzalez, Jhonny Gonzalez, Alexis Huante, Yuguo K Tang, Emily Yang, Claire A Winogrodzki, Rites
Gepubliceerd 2026-10-22
📖 7 min leestijd🧠 Diepgaand

Oorspronkelijke auteurs: Philip W Fackler, Pedro Valero-Lara, Narasinga Rao Miniskar, Steven Hahn, Het Mankad, Doris Chiang, Jose Gonzalez, Jhonny Gonzalez, Alexis Huante, Yuguo K Tang, Emily Yang, Claire A Winogrodzki, Ritesh Bhirud, Julian Samaroo, Rabab Alomairy, Alan Edelman, Johannes Blaschke, Michel Schanen, Patrick Diehl, Elijah Pelofske, Jean-François Boussuge, Ludovic Räss, Simone Marras, Yuki Nagai, Jeffrey S. Vetter, Keita Teranishi, William F. Godoy

Oorspronkelijk artikel gelicentieerd onder CC BY 4.0 (https://creativecommons.org/licenses/by/4.0/). ✨ Dit is een AI-gegenereerde uitleg van het onderstaande artikel. Het is niet geschreven of goedgekeurd door de auteurs. Raadpleeg het oorspronkelijke artikel voor technische nauwkeurigheid. Lees de volledige disclaimer

Moderne supercomputers worden steeds complexere machines, volgestouwd met verschillende soorten processors die problemen met ongelofelijke snelheden kunnen oplossen. Decennialang hebben wetenschappers vertrouwd op een paar standaardtalen om deze machines aan te sturen, maar naarmate de hardware evolueert, is het schrijven van code voor deze systemen een moeilijke, gespecialiseerde taak geworden. Onderzoekers merken vaak dat ze gedwongen zijn om dezelfde wetenschappelijke programma's meerdere keren te herschrijven, één keer voor het ene type computerchip en opnieuw voor een ander, alleen maar om hetzelfde resultaat te krijgen. Dit creëert een flessenhals waarbij de tijd die wordt besteed aan het vertalen van code voor verschillende machines, ten koste gaat van de tijd die beschikbaar is voor werkelijke ontdekkingen. Het doel voor velen in het vakgebied is om een manier te vinden om een enkele set instructies te schrijven die efficiënt werkt op elke machine, of het nu een persoonlijke laptop is of een enorme nationale supercomputer, zonder de ingewikkelde details van elk processorontwerp te hoeven kennen.

Een team van onderzoekers van het Oak Ridge National Laboratory en andere instellingen heeft een nieuwe tool geïntroduceerd genaamd JACC, die deze problemen wil oplossen voor wetenschappers die de programmeertaal Julia gebruiken. Julia is een taal die ontworpen is om even gemakkelijk leesbaar te zijn als een wiskundige formule, terwijl deze net zo snel draait als de meest efficiënte machincode. De nieuwe JACC-software fungeert als een universele vertaler voor deze taal, waardoor wetenschappers één versie van hun code kunnen schrijven die kan draaien op de centrale processors van een computer of op de gespecialiseerde grafische chips die worden gebruikt voor zware berekeningen. De onderzoekers ontdekten dat deze aanpak niet alleen het coderen gemakkelijker maakt; het zorgt er ook voor dat de software draait met bijna dezelfde snelheid als code die specifiek voor elk individueel type hardware is geschreven. Dit betekent dat een wetenschapper een simulatie op een laptop kan ontwikkelen en vervolgens exact hetzelfde programma kan draaien op een wereldklasse supercomputer zonder een enkele regel code te veranderen.

De kern van deze prestatie ligt in de manier waarop JACC de relatie tussen het werk van de wetenschapper en de hardware van de computer afhandelt. In het verleden vereiste het verplaatsen van een programma van het ene type processor naar het andere vaak een volledige herschrijving, vergelijkbaar met het vertalen van een boek van het Engels naar het Frans en vervolgens naar het Japans, waarbij elke vertaling het risico loopt op verlies van nuance of snelheid. JACC elimineert de noodzaak voor deze aparte vertalingen. Het biedt een set eenvoudige commando's die de computer vertellen een taak uit te voeren, zoals het berekenen van waarden over een groot rooster van getallen, zonder te specificeren welke specifieke processor het werk moet doen. De software detecteert automatisch of de computer een chip van NVIDIA, AMD, Intel of Apple heeft, en stuurt de taken vervolgens naar de meest geschikte beschikbare processor. Deze flexibiliteit stelt onderzoekers in staat om de krachtige grafische kaarten die in moderne laptops te vinden zijn te gebruiken voor interactieve tests, en vervolgens naadloos over te schakelen naar de enorme arrays van processors in supercomputers voor definitieve, grootschalige runs.

De onderzoekers demonstreerden de effectiviteit van dit systeem door het te testen op een verscheidenheid aan reële wetenschappelijke problemen. Ze pasten de tool toe op simulaties van vloeistofdynamica, die worden gebruikt om te modelleren hoe lucht over vleugels stroomt of hoe water door pijpen beweegt. Bij deze tests draaide de software op verschillende soorten hardware met een prestatie die overeenkwam met of zeer dicht bij de gespecialiseerde code kwam die door experts voor elk specifiek type machine is geschreven. Bijvoorbeeld, bij het simuleren van de beweging van vloeistoffen, bereikte het systeem snelheden op grafische chips die binnen enkele procenten van de best mogelijke prestaties lagen, wat bewijst dat het gemak van een enkele codebase niet ten koste gaat van de snelheid. Het team liet ook zien dat het systeem complexe taken kan afhanden waarbij meerdere processors samenwerken op één enkele machine, een capaciteit die essentieel wordt naarmate supercomputers meer kracht in minder fysieke eenheden verpakken.

Naast eenvoudige snelheid opent de tool de deur naar meer complexe wetenschappelijke exploraties die voorheen te moeilijk te beheren waren. De onderzoekers toonden aan dat JACC gebruikt kan worden om kwantummagnetische materialen te simuleren, een veld dat het bijhouden van het gedrag van talloze minuscule deeltjes vereist. Door dit nieuwe systeem te gebruiken, werd een berekening die voorheen een uur duurde op een enkele processor, gereduceerd tot slechts enkele seconden wanneer deze op een grafische chip werd uitgevoerd, terwijl dezelfde code werd gebruikt. Dit soort versnelling is cruciaal voor velden zoals kwantumchemie en kernfysica, waar wetenschappers duizenden variaties van een simulatie moeten uitvoeren om te begrijpen hoe materialen zich onder verschillende omstandigheden gedragen. Het vermogen om deze simulaties op verschillende hardware te draaien zonder de code te herschrijven, betekent dat wetenschappers zich meer kunnen richten op de fysica en minder op de mechanica van het programmeren.

De impact van dit werk strekt zich uit tot de toekomst van hoe wetenschappelijke software wordt gebouwd en onderhouden. De onderzoekers merkten op dat het systeem is ontworpen om samen te werken met bestaande tools die worden gebruikt door de wetenschappelijke gemeenschap, waardoor een geleidelijke overgang mogelijk is in plaats van een volledige herziening van huidige projecten. Dit betekent dat laboratoria het nieuwe systeem stuk voor stuk kunnen adopteren, door specifieke delen van hun code te testen voordat ze overgaan tot een volledige migratie. De software ondersteunt ook geavanceerde functies zoals gedeeld geheugen, waardoor verschillende delen van een berekening snel toegang kunnen krijgen tot gegevens, en asynchrone uitvoering, wat de computer in staat stelt een nieuwe taak te starten voordat de vorige volledig is afgerond. Deze functies zijn cruciaal voor het optimaal benutten van de nieuwste supercomputers, die zijn ontworpen om veel taken tegelijkertijd te verwerken.

Vooruitblikkend zien de onderzoekers deze technologie als een fundament voor nog geavanceerdere toepassingen. Ze onderzoeken hoe het systeem gebruikt kan worden in de ontwikkeling van kwantumcomputers, waarbij de regels van de natuurkunde heel anders zijn dan bij de klassieke computers die we vandaag de dag gebruiken. Het vermogen om code te schrijven die draagbaar en efficiënt is, zou wetenschappers kunnen helpen bij het ontwerpen en testen van algoritmen voor deze toekomstige machines, lang voordat de hardware volledig gereed is. Daarnaast wordt het systeem geïntegreerd met intelligente software die automatisch kan beslissen welke processor een specifieke taak moet afhandelen, wat de last voor de menselijke programmeur verder vermindert. Deze combinatie van gebruiksgemak en hoge prestaties suggereert een toekomst waarin de barrière tussen het idee van een wetenschapper en een draaiende simulatie veel lager is dan vandaag de dag het geval is.

Het werk gepresenteerd in dit artikel vormt een belangrijke stap voorwaarts in het toegankelijk maken van high-performance computing voor een breder scala aan wetenschappers. Door een tool te bieden die de kloof overbrugt tussen hoogwaardig programmeren en de details van low-level hardware, hebben de onderzoekers een pad gecreëerd voor efficiëntere en productievere wetenschappelijke ontdekkingen. De resultaten laten zien dat het mogelijk is om zowel een hoge productiviteit als een hoge prestatie te hebben, twee doelen die in het verleden vaak met elkaar in strijd waren. Naarmate de wereld beweegt naar nog complexere computersystemen, zullen tools zoals JACC waarschijnlijk essentieel worden om het volledige potentieel van deze machines te ontsluiten, waardoor wetenschappers problemen kunnen aanpakken die voorheen te moeilijk op te lossen waren.

Verdrinkt u in papers in uw vakgebied?

Ontvang dagelijkse digests van de nieuwste papers die bij uw onderzoekswoorden passen — met technische samenvattingen, in uw taal.

Probeer Digest →