DeepMind open sourced S6, maktaba yenye utekelezaji wa mkusanyaji wa JIT kwa CPython

DeepMind, inayojulikana kwa maendeleo yake katika uwanja wa akili ya bandia, imefungua msimbo wa chanzo wa mradi wa S6, ambao ulitengeneza mkusanyaji wa JIT kwa lugha ya Python. Mradi huu ni wa kuvutia kwa sababu umeundwa kama maktaba ya kiendelezi ambayo inaunganishwa na CPython ya kawaida, kuhakikisha upatanifu kamili na CPython na hauhitaji marekebisho ya msimbo wa mkalimani. Mradi huo umekuwa ukiendelezwa tangu 2019, lakini kwa bahati mbaya ulisitishwa na hauendelezwi tena. Kwa kuwa maendeleo yaliyoundwa yanaweza kuwa muhimu kwa kuboresha Python, iliamuliwa kufungua msimbo wa chanzo. Nambari ya mkusanyaji wa JIT imeandikwa katika C++ na inategemea CPython 3.7. na iko wazi chini ya leseni ya Apache 2.0.

Kwa upande wa kazi inayoweza kutatua, S6 ya Python inalinganishwa na injini ya V8 ya JavaScript. Maktaba hubadilisha kishughulikiaji cha mkalimani wa bytecode kilichopo ceval.c na utekelezaji wake ambao hutumia mkusanyiko wa JIT ili kuharakisha utekelezaji. S6 hukagua ikiwa chaguo la kukokotoa la sasa tayari limeundwa na, ikiwa ni hivyo, tekeleza msimbo uliokusanywa, na ikiwa sivyo, huendesha chaguo hili katika modi ya tafsiri ya bytecode, sawa na mkalimani wa CPython. Wakati wa kutafsiri, idadi ya maagizo yaliyotekelezwa na simu zinazohusiana na chaguo la kukokotoa linalochakatwa huhesabiwa. Baada ya kufikia hatua fulani muhimu, mchakato wa ujumuishaji unaanzishwa ili kuharakisha msimbo unaotekelezwa mara kwa mara. Mkusanyiko unafanywa kuwa uwakilishi wa kati wa strongjit, ambao, baada ya uboreshaji, hubadilishwa kuwa maagizo ya mashine ya mfumo lengwa kwa kutumia maktaba ya asmjit.

Kulingana na hali ya mzigo wa kazi, S6 chini ya hali bora inaonyesha ongezeko la kasi ya utekelezaji wa mtihani hadi mara 9.5 ikilinganishwa na CPython ya kawaida. Wakati wa kukimbia marudio 100 ya Suite ya mtihani wa Richards, kasi ya 7x inazingatiwa, na wakati wa kukimbia mtihani wa Raytrace, unaohusisha kiasi kikubwa cha mahesabu ya hisabati, kasi ya 3-4.5x inazingatiwa.

Miongoni mwa kazi ambazo ni ngumu kuboresha kwa kutumia S6 ni miradi inayotumia API ya C, kama vile NumPy, pamoja na shughuli zinazohusiana na hitaji la kuangalia aina za idadi kubwa ya maadili. Utendaji wa chini pia huzingatiwa kwa simu moja za utendakazi zinazotumia rasilimali nyingi kwa sababu ya utumiaji usioboreshwa wa S6 mwenyewe wa mkalimani wa Python (maendeleo hayajafikia hatua ya kuboresha hali ya ukalimani). Kwa mfano, katika jaribio la Mfuatano wa Unpack, ambao hufungua seti kubwa za safu/nakala, kwa simu moja kuna kupungua kwa hadi mara 5, na kwa simu ya mzunguko utendakazi ni 0.97 kutoka kwa CPython.

Chanzo: opennet.ru

Kuongeza maoni