DeepMind ngeculake kode sumber kanggo S6, compiler JIT kanggo Python

s6-deepmind

S6, minangka perpustakaan kompiler JIT mandiri kanggo CPython

jero pikiran, dikenal kanggo pembangunan ing bidang intelijen buatan, bubar announced sing wis nggawe keputusan kanggo ngeculake kode sumber proyek S6, kang dikembangaké saka compiler JIT kanggo basa Python.

Proyek kasebut menarik amarga dirancang minangka perpustakaan extension kang bisa Integrasi karo CPython standar, kang nyedhiyakake kompatibilitas CPython lengkap lan ora mbutuhake modifikasi saka kode interpreter. Proyek kasebut wis dikembangake wiwit taun 2019, nanging sayangé wis dikurangi lan ora dikembangake.

S6 minangka proyek sing diwiwiti ing DeepMind ing taun 2019 kanggo nyepetake CPython kanthi kompilasi just-in-time ("JIT". Fungsi kasebut bakal diwenehake minangka perpustakaan Python normal lan ora ana owah-owahan ing interpreter CPython sing dibutuhake. S6 dimaksudaké kanggo Python apa V8 nindakake kanggo Javascript (jeneng minangka pakurmatan kanggo V8). Karya kasebut adhedhasar CPython versi 3.7. Gumantung ing beban kerja, kita ndeleng kacepetan nganti 9.5x ing pathokan umum.

Alesan utama kenapa diputusake kanggo ngeculake kode sumber, salah sijine lan kaya sing wis kasebut yaiku proyek kasebut mandheg duwe dhukungan, alasan utama liyane yaiku adhedhasar pangembangan sing digawe, iki isih bisa migunani kanggo nambah python. .

Kita wis mandheg nggarap S6 sacara internal. Dadi, gudang iki wis diarsipake lan kita ora nampa panjalukan utawa masalah. Kita mbukak sumber lan menehi ringkesan desain ing ngisor iki kanggo ngrangsang obrolan ing komunitas Python lan menehi inspirasi kanggo kerja ing mangsa ngarep kanggo nambah Python.

Babagan operasi S6, kita kudu kasebut S6 kanggo Python mbandhingaké mesin V8 kanggo JavaScript ing babagan tugas sing ditanggulangi. Perpustakaan ngganti driver interpreter bytecode ceval.c sing ana karo implementasine dhewe sing nggunakake kompilasi JIT kanggo nyepetake eksekusi.

S6 mriksa yen fungsi saiki wis dikompilasi lan, yen mangkono, nglakokaké kode kompilasi, lan yen ora, nglakokaké fungsi ing mode interpretasi bytecode padha karo interpreter CPython. Interpretasi ngitung jumlah statement sing dieksekusi lan panggilan sing ana gandhengane karo fungsi sing diproses.

Sawise tekan tonggak tartamtu, proses mbangun diwiwiti kanggo nyepetake kode kasebut sing kerep mlaku. Kompilasi dileksanakake ing perwakilan perantara strongjit, sing, sawise optimasi, diowahi kanggo instruksi mesin sistem target nggunakake perpustakaan asmjit.

Gumantung ing sifat beban, ing kahanan sing optimal, S6 nuduhake paningkatan kacepetan eksekusi tes nganti 9,5 kaping dibandhingake CPython biasa.

Nalika 100 iterasi dieksekusi saka Richards test suite, ana percepatan 7 kaping, lan nalika mbukak test Raytrace, kang ngandhut akèh math, iku 3 kanggo 4,5 kaping luwih cepet.

Tugas sing angel dioptimalake karo S6 yaiku proyek sing nggunakake C API, kayata NumPy, uga operasi sing gegandhengan karo perlu kanggo mriksa jinis nomer akeh nilai.

Kinerja sing ora apik uga katon kanggo telpon fungsi siji kang nganggo akèh sumber amarga nggunakake implementasine unoptimized saka S6 Python interpreter (pangembangan durung tekan tataran interpretasi mode Optimization).

Contone, ing test Unpack Sequence, sing mbongkar set gedhe saka susunan / tuples, siji telpon nuduhake kalem nganti 5 kaping, lan telpon cyclic ngasilake 0,97 saka CPython.

Pungkasan kanggo sampeyan sing pengin ngerti luwih akeh babagan iki, sampeyan kudu ngerti manawa kode kompiler JIT ditulis ing C ++ lan saiki adhedhasar CPython 3.7, saliyane kode sumber kasebut wis mbukak ing lisensi Apache 2.0 lan bisa dikonsultasi. saka link ing ngisor iki.


Konten artikel kasebut sesuai karo prinsip kita yaiku etika editorial. Kanggo nglaporake klik kesalahan Kene.

Dadi pisanan komentar

Ninggalake komentar sampeyan

Panjenengan alamat email ora bisa diterbitake. Perangkat kothak ditandhani karo *

*

*

  1. Tanggung jawab data: Miguel Ángel Gatón
  2. Tujuan data: Kontrol SPAM, manajemen komentar.
  3. Legitimasi: idin sampeyan
  4. Komunikasi data: Data kasebut ora bakal dikomunikasikake karo pihak katelu kajaba kanthi kewajiban ukum.
  5. Panyimpenan data: Database sing dianakake dening Occentus Networks (EU)
  6. Hak: Kapan wae sampeyan bisa matesi, mulihake lan mbusak informasi sampeyan.