S6 ffynhonnell agored DeepMind, llyfrgell gyda chasglwr JIT ar waith ar gyfer CPython

Mae DeepMind, sy'n adnabyddus am ei ddatblygiadau ym maes deallusrwydd artiffisial, wedi agor cod ffynhonnell y prosiect S6, a ddatblygodd casglwr JIT ar gyfer yr iaith Python. Mae'r prosiect yn ddiddorol oherwydd ei fod wedi'i ddylunio fel llyfrgell estyniad sy'n integreiddio Γ’ CPython safonol, gan sicrhau cydnawsedd llawn Γ’ CPython a heb fod angen addasu cod y cyfieithydd. Mae’r prosiect wedi bod yn datblygu ers 2019, ond yn anffodus daeth i ben ac nid yw’n datblygu mwyach. Gan y gallai'r datblygiadau a grΓ«wyd fod yn ddefnyddiol ar gyfer gwella Python, penderfynwyd ffynhonnell agored y cod. Mae cod casglwr JIT wedi'i ysgrifennu yn C++ ac mae'n seiliedig ar CPython 3.7. ac mae'n ffynhonnell agored o dan drwydded Apache 2.0.

O ran y tasgau y gall eu datrys, mae S6 ar gyfer Python yn cymharu Γ’'r injan V8 ar gyfer JavaScript. Mae'r llyfrgell yn disodli'r triniwr dehonglydd bytecode presennol ceval.c gyda'i weithrediad ei hun sy'n defnyddio casglu JIT i gyflymu'r broses weithredu. Mae S6 yn gwirio a yw'r swyddogaeth gyfredol eisoes wedi'i llunio ac, os felly, yn gweithredu'r cod a luniwyd, ac os na, mae'n rhedeg y swyddogaeth yn y modd dehongli bytecode, yn debyg i'r dehonglydd CPython. Wrth ddehongli, cyfrifir nifer y cyfarwyddiadau a'r galwadau a weithredir sy'n gysylltiedig Γ’'r swyddogaeth sy'n cael ei phrosesu. Ar Γ΄l cyrraedd carreg filltir benodol, cychwynnir proses gasglu i gyflymu'r cod a weithredir yn aml. Mae'r casgliad yn cael ei wneud yn gynrychiolaeth cryfjit canolraddol, sydd, ar Γ΄l optimeiddio, yn cael ei drawsnewid yn gyfarwyddiadau peiriant y system darged gan ddefnyddio'r llyfrgell asmjit.

Yn dibynnu ar natur y llwyth gwaith, mae S6 o dan yr amodau gorau posibl yn dangos cynnydd mewn cyflymder gweithredu prawf o hyd at 9.5 gwaith o'i gymharu Γ’ CPython arferol. Wrth redeg 100 iteriad o gyfres brawf Richards, gwelir cyflymiad 7x, ac wrth redeg y prawf Raytrace, sy'n cynnwys llawer iawn o gyfrifiadau mathemategol, gwelir cyflymiad 3-4.5x.

Ymhlith y tasgau sy'n anodd eu optimeiddio gan ddefnyddio S6 mae prosiectau sy'n defnyddio'r API C, megis NumPy, yn ogystal Γ’ gweithrediadau sy'n ymwneud Γ’'r angen i wirio mathau nifer fawr o werthoedd. Gwelir perfformiad isel hefyd ar gyfer galwadau unigol o swyddogaethau sy'n defnyddio llawer o adnoddau oherwydd y defnydd o weithrediad anoptimeiddiedig S6 ei hun o'r dehonglydd Python (nid yw'r datblygiad wedi cyrraedd y cam o optimeiddio'r modd dehongli). Er enghraifft, yn y prawf Unpack Sequence, sy'n dadbacio setiau mawr o araeau/tuples, gydag un alwad mae arafu hyd at 5 gwaith, a chyda galwad gylchol mae'r perfformiad yn 0.97 gan CPython.

Ffynhonnell: opennet.ru

Ychwanegu sylw