Episodio

Toolkit del compilatore basato su LLVM per R

con Nick Ulle

useR!2017: Toolkit del compilatore basato su LLVM per R

Parole chiave: compilatore, analisi del codice, prestazioni
Pagine Web: https://github.com/nick-ulle/rstatic,https://github.com/duncantl/Rllvm
R consente agli utenti di concentrarsi sui problemi che vogliono risolvere astraendo i dettagli dell'hardware. Questo è un importante contributo al successo di R come linguaggio di analisi dei dati, ma rende anche R troppo lento e affamato di risorse per determinate attività. In genere, gli useR hanno risolto questa limitazione riscrivendo i colli di bottiglia in Fortran, C o C++. Questi linguaggi offrono un notevole miglioramento delle prestazioni a costo dell'astrazione, un compromesso che gli useR non devono affrontare.
Questo discorso introduce una raccolta di pacchetti per l'analisi, l'ottimizzazione e la creazione di compilatori per il codice R , estendendo il lavoro precedente di Temple Lang (2014). Basandosi sull'infrastruttura del compilatore LLVM (Lattner e Adve 2004), una libreria open source matura per la generazione di codice nativo, questi strumenti consentono la conversione del codice R in codice computer specializzato per un'ampia gamma di hardware. Inoltre, gli strumenti sono estendibili e semplificano la creazione di linguaggi efficienti specifici del dominio basati su R, ad esempio nimble e dplyr. Le potenziali applicazioni verranno discusse e un semplice compilatore (ispirato da Nmbalo) per il codice R matematico verrà presentato come dimostrazione.
Fa riferimento a Lattner, Chris e Vikram Adve. 2004. "LLVM: un framework di compilazione per l'analisi e la trasformazione del programma permanente." In Corso del Simposio Internazionale sulla generazione e l'ottimizzazione del codice: Ottimizzazione e ottimizzazione del feedback diretto e del runtime, 75. CGO '04. Washington, DC, USA: IEEE Computer Society.

Temple Lang, Duncan. 2014. "Miglioramento di R con strumenti e metodi di compilazione avanzati". Scienza statistica 29 (2). Istituto di statistiche matematiche: 181-200.