ڈیپ مائنڈ اوپن سورسڈ S6، CPython کے لیے JIT کمپائلر کے نفاذ کے ساتھ ایک لائبریری

ڈیپ مائنڈ، جو مصنوعی ذہانت کے شعبے میں اپنی پیش رفت کے لیے جانا جاتا ہے، نے S6 پروجیکٹ کا سورس کوڈ کھولا ہے، جس نے Python کی زبان کے لیے JIT کمپائلر تیار کیا ہے۔ پروجیکٹ دلچسپ ہے کیونکہ اسے ایک توسیعی لائبریری کے طور پر ڈیزائن کیا گیا ہے جو معیاری CPython کے ساتھ مربوط ہے، CPython کے ساتھ مکمل مطابقت کو یقینی بناتا ہے اور مترجم کوڈ میں ترمیم کی ضرورت نہیں ہے۔ یہ منصوبہ 2019 سے ترقی کر رہا ہے، لیکن بدقسمتی سے اسے بند کر دیا گیا اور اب ترقی نہیں ہو رہی ہے۔ چونکہ تخلیق کردہ پیش رفت ازگر کو بہتر بنانے کے لیے کارآمد ثابت ہو سکتی ہے، اس لیے کوڈ کو اوپن سورس کرنے کا فیصلہ کیا گیا۔ جے آئی ٹی کمپائلر کوڈ C++ میں لکھا گیا ہے اور CPython 3.7 پر مبنی ہے۔ اور اپاچی 2.0 لائسنس کے تحت اوپن سورس ہے۔

ان کاموں کے لحاظ سے جو یہ حل کر سکتا ہے، Python کے لیے S6 کا JavaScript کے V8 انجن سے موازنہ ہے۔ لائبریری موجودہ بائیک کوڈ انٹرپریٹر ہینڈلر ceval.c کو اس کے اپنے نفاذ سے بدل دیتی ہے جو عملدرآمد کو تیز کرنے کے لیے JIT کمپائلیشن کا استعمال کرتی ہے۔ S6 چیک کرتا ہے کہ آیا موجودہ فنکشن پہلے سے ہی مرتب کیا گیا ہے اور، اگر ایسا ہے تو، مرتب شدہ کوڈ پر عمل درآمد کرتا ہے، اور اگر نہیں، تو فنکشن کو بائیک کوڈ تشریح موڈ میں چلاتا ہے، جیسا کہ CPython انٹرپریٹر کی طرح ہے۔ تشریح کے دوران، عمل میں آنے والے فنکشن سے منسلک ہدایات اور کالوں کی تعداد شمار کی جاتی ہے۔ ایک خاص سنگ میل تک پہنچنے کے بعد، کثرت سے عمل میں آنے والے کوڈ کو تیز کرنے کے لیے ایک تالیف کا عمل شروع کیا جاتا ہے۔ تالیف ایک انٹرمیڈیٹ مضبوط جیت کی نمائندگی میں کی جاتی ہے، جو اصلاح کے بعد، اسمجٹ لائبریری کا استعمال کرتے ہوئے ٹارگٹ سسٹم کی مشین ہدایات میں تبدیل ہوجاتی ہے۔

کام کے بوجھ کی نوعیت پر منحصر ہے، بہترین حالات میں S6 ٹیسٹ پر عمل درآمد کی رفتار میں باقاعدہ CPython کے مقابلے میں 9.5 گنا تک اضافہ ظاہر کرتا ہے۔ رچرڈز ٹیسٹ سویٹ کے 100 تکرار چلاتے وقت، 7x اسپیڈ اپ کا مشاہدہ کیا جاتا ہے، اور Raytrace ٹیسٹ چلاتے وقت، جس میں ریاضیاتی حسابات کی ایک بڑی مقدار شامل ہوتی ہے، 3-4.5x اسپیڈ اپ کا مشاہدہ کیا جاتا ہے۔

S6 کے استعمال سے جن کاموں کو بہتر بنانا مشکل ہے ان میں ایسے پروجیکٹس شامل ہیں جو C API استعمال کرتے ہیں، جیسے NumPy، نیز بڑی تعداد میں قدروں کی اقسام کو چیک کرنے کی ضرورت سے متعلق آپریشنز۔ Python انٹرپریٹر کے S6 کے اپنے غیر آپٹمائزڈ نفاذ کے استعمال کی وجہ سے وسائل سے متعلق فنکشنز کی واحد کالوں کے لیے بھی کم کارکردگی دیکھی جاتی ہے (ترقی تشریح کے موڈ کو بہتر بنانے کے مرحلے تک نہیں پہنچی ہے)۔ مثال کے طور پر، Unpack Sequence ٹیسٹ میں، جو arrays/tuples کے بڑے سیٹوں کو کھولتا ہے، ایک کال کے ساتھ 5 گنا تک کی سست روی ہوتی ہے، اور ایک سائیکل کال کے ساتھ کارکردگی CPython سے 0.97 ہوتی ہے۔

ماخذ: opennet.ru

نیا تبصرہ شامل کریں