2009-09-20 14 views
39

Mi chiedo quale sia il modo migliore per implementare R. Matlab ha il "matlab compiler" (MCR). C'è stata una discussione su qualcosa di simile in passato per R che avrebbe compilato R in C o C++. Qualcuno ha qualche esperienza con lo R to C Compiler (RCC) that was developed by John Garvin at Rice?Esiste un compilatore R?

L'ho esaminato e sembra essere l'unico progetto che ha lavorato alla compilazione del codice R in codice eseguibile. E per quanto posso dire, non è ancora in uso.

[Edit 1:]: Per essere chiari, io so che ci sono C e C++ (e Java, Python, ecc) interfacce verso R (Rjava, rcpp, RPY, etc.). Mi sto interrogando su modi specifici per compilare e distribuire il codice R senza installare R in anticipo.

[Edit 2:]: John Mellor-Crummey mi dice che stanno ancora lavorando su RCC e speriamo di renderlo disponibile in 4 mesi o giù di lì (al più presto). Lo aggiorno ulteriormente se trovo qualcos'altro.

risposta

35

Un compilatore di codice byte farà parte della versione R 2.13.Di default non è usato in questa versione ma è disponibile; Mi aspetto che la versione 2.14 per impostazione predefinita byte compili tutti i pacchetti base e consigliati. La pagina di aiuto del compilatore: compilare e il Manuale di installazione e amministrazione R forniscono ulteriori dettagli.

+0

Ci sono suggerimenti/linee guida su quando la compilazione sarà efficace? Il mio tentativo più riuscito finora è stato una ricerca binaria, con 2x speedup; Speravo segretamente che S4 diventasse davvero veloce, ma non è così fortunato? –

+1

A questo punto trarranno vantaggio grandi funzioni e loop. Chiamare le funzioni compilate usa lo stesso meccanismo per ora come chiamare quelle interpretate, quindi le cose dominate dalla funzione chiamata overhead vedranno pochi cambiamenti. Questo probabilmente si evolverà nel prossimo anno o giù di lì. –

+5

Oggi ho eseguito il blogging di un esempio incentrato su loop (semplici, stupidi, non realistici): http://dirk.eddelbuettel.com/blog/2011/04/12#the_new_r_compiler_package Sono sicuro che ci saranno più post su questo una volta R 2.13 .0 è ufficialmente rilasciato domani. –

3

Non ho usato il pacchetto di Garvin e non so cosa sia possibile lungo quelle linee. Tuttavia:

In genere le persone scrivono semplicemente le funzioni di calcolo intensivo direttamente in C/C++/Fortran, dopo profiling per individuare i colli di bottiglia. Vedere gli esempi RCpp interface o Calling C functions from R using .C and .Call. Lo Scythe Statistical Library è anche molto carino per gli utenti R poiché i nomi di sintassi/funzione sono simili.

+0

Grazie, quelli sono buoni collegamenti. In particolare, mi sto concentrando sul processo di distribuzione, meno del problema di prestazioni. – Shane

17

Mi ero dimenticato del progetto Rice, è passato un po 'di tempo. Penso che il termine operativo qui sia indicato nella parte superiore della pagina del progetto: Ultimo aggiornamento il 3/8/06.

E tutti sappiamo che R cambia molto. Così ho solo i pochi indicatori standard, per voi:

  • Luke Tierney, che non solo sa molto di interni R ma ugualmente su compilatori di byte, ha lavorato su un progetto del genere. Nulla di pronto, e funzionerebbe ancora in combinazione con il motore R standard.
  • Stephen Milborrow ha la Ra estensione a R che funziona con il suo just-in-time pacchetto compilatore jit
  • mia introduzione al Calcolo ad alte prestazioni con tutorial R (most recent tutorial slides from UseR! 2009) copre la profilazione, la compilazione di estensioni, il calcolo parallelo con R,. .. parte, incluso Rcpp e un po 'su RInside.

In breve: non c'è modo di avere quello che si desidera modi specifici per compilare e distribuire il codice R senza installare R in anticipo. Scusate.

Edit/Update (aprile 2011): nuovo pacchetto di Luca compiler sarà parte di R 2.13.0 (in uscita aprile 2011), ma non e 'attivato' di default che si prevede per la R 2.14.0 atteso per ottobre 2011.

Edit/Update (dicembre 2011): Prof. Tierney solo rilasciare un massive 100+ page paper sul byte-code compilatore.

+0

Grazie Dirk! Non ho controllato di recente la homepage di Luke. La tua carta/tutorial di calcolo ad alte prestazioni è fantastica. Ho preso l'ultima data aggiornata come significato esattamente quello che dici, ma volevo solo controllare. :) – Shane

6

Perché le persone hanno paura quando distribuiscono R? Sono abbastanza sicuro di aver già visto questa domanda prima.

L'installazione di R è un pezzo di torta (in realtà non si dice quale sistema operativo si cura di). Per Windows il suo unico .exe. file, eseguilo, dì "sì" un paio di volte ed è fatto. Sospetto che l'installer exe abbia probabilmente anche delle bandiere per l'installazione automatica.

+4

R è facile. Alcuni pacchetti e le loro dipendenze non lo sono, specialmente se questi riguardano certe altre lingue. Mi vengono in mente Java e Tcl/Tk. – Iterator

3

Check-out il compilatore P, che implementa un sottoinsieme di R. Soprattutto, liste, matrici, vettori, ecc sono implementate come pure lsfit, chol, SVD, ...

È possibile scaricare un libero versione a

www.ptechnologies.org

Si accelera calcoli sostanzialmente.

migliore,

AS

+9

Sarebbe ancora più avvincente se non fosse chiuso ... –

Problemi correlati