2009-03-29 10 views
26

Google sta sponsorizzando un progetto Open Source per aumentare la velocità di Python di 5 volte.Cos'è LLVM e How sta sostituendo Python VM con LLVM aumentando la velocità 5 volte?

Unladen-Swallow sembra avere un good project plan

Perché la concorrenza un problema così difficile?
LLVM sta per risolvere il problema di concorrenza?
Esistono soluzioni diverse da Multi-core per l'avanzamento dell'hardware?

+2

Questa non è una domanda. Ne vedo almeno tre, forse quattro. –

+0

Vuoi farmi fare tutte le domande a parte? Sono tutti collegati, in un certo senso. Non sono loro? :) –

+0

"Py3k sembra aver risolto il problema dell'impronta di memoria (restituendo iteratori rispetto agli elenchi); ora se LLVM risolve il problema di velocità?" qual'è la domanda? C'è una sorta di domanda implicita ... ma non è chiaro di cosa si tratta. E sì, ci sono troppe domande in una qui! – TofuBeer

risposta

32

LLVM sono diverse cose insieme, una sorta di macchina virtuale/compilatore di ottimizzazione, combinato con diversi frontend che prendono l'input in una lingua specifica e producono il risultato in una lingua intermedia. Questo output intermedio può essere eseguito con la macchina virtuale o può essere utilizzato per generare un eseguibile standalone.

Il problema con la concorrenza è che, sebbene sia stato utilizzato per un lungo periodo nel calcolo scientifico, è diventato di recente comune nelle app di consumo. Quindi, mentre è ampiamente noto come programmare un programma di calcolo scientifico per ottenere grandi prestazioni, è completamente diverso scrivere un agente di posta elettronica/un word processor che possa essere efficace in concorrenza. Inoltre, la maggior parte degli attuali sistemi operativi erano progettati con un solo processore in mente e potrebbero non essere completamente preparati per i processori multicore.

Il vantaggio di LLVM rispetto alla concorrenza è che si dispone di un output intermedio, e se in futuro ci sono progressi nella concorrenza, quindi aggiornando il proprio interprete si ottengono istantaneamente quei benefici in tutti i programmi compilati da LLVM. Non è così facile se ti sei compilato per un eseguibile standalone. Quindi LLVM non risolve il problema della concorrenza di per sé, ma lascia una porta aperta per miglioramenti futuri.

Sicuramente ci sono più possibilità per l'hardware come computer quantistici, computer di genetica, ecc. Ma dobbiamo aspettare che diventino realtà.

+3

@ Ismael: Non penso che si tratti di applicazioni scientifiche o non scientifiche. Il vero problema è il linguaggio e il supporto del sistema operativo per la programmazione concorrente è brutto, e alcuni sono disposti a lavorare di più per superare il cattivo supporto per la concorrenza. –

+0

@Lott: Sì, hai ragione. Sebbene ci siano strumenti da programmare con la concorrenza in mente, sono difficili da usare e richiederanno uno sforzo significativo. – Ismael

17

Il passaggio a LLVM non risolve il problema di concorrenza. Questo viene risolto separatamente, eliminando lo Global Interpreter Lock.

Non sono sicuro di quello che provo per questo; Uso i thread principalmente per gestire l'I/O di blocco, non per sfruttare i processori multicore (per questo, utilizzerei il modulo multiprocessing per generare processi separati).

Quindi mi piace il GIL; mi rende la vita molto più semplice senza dover pensare a problemi di sincronizzazione complicati.

+9

Se riescono a sbarazzarsi di GIL ma assicurarti che tutto ciò che ti aspetti di essere atomico sia ancora atomico, allora penso che nel peggiore dei casi non abbia alcun effetto su di te, e in alcuni casi potrebbe migliorare le prestazioni delle tue app. –

15

LLVM si prende cura del nocciolo della generazione del codice, quindi consente di riscrivere Psyco in un modo più generale, portatile e gestibile. Ciò a sua volta consente loro di riscrivere il core CPython, che consente loro di sperimentare GC alternativi e altre cose necessarie per migliorare il supporto di Python per la concorrenza.

In altre parole, LLVM non risolve il problema della concorrenza, ma ti libera le mani in modo che tu possa risolverlo.