LLVM جوړونکی د موجو پروګرام کولو نوې ژبه رامینځته کوي

کریس لاټینر، د LLVM بنسټ ایښودونکی او لوی معمار او د سویفټ پروګرامینګ ژبې جوړونکی، او ټیم ډیوس، د ګوګل AI پروژو پخوانی مشر لکه ټینسر فلو او JAX، د موجو پروګرام کولو نوې ژبه معرفي کړه چې د R&D لپاره د کارولو اسانتیا او د چټک پروټوټایپ سره یوځای کوي. د لوړ فعالیت پای محصولاتو لپاره مناسب. لومړی د Python ژبې د پیژندل شوي ترکیب کارولو له لارې ترلاسه کیږي، او دویم د ماشین کوډ ته د تالیف کولو وړتیا، د خوندي حافظې مدیریت لپاره میکانیزمونه، او د محاسبې د هارډویر سرعت لپاره د وسیلو کارولو له امله دی.

پروژه د ماشین زده کړې پراختیا لپاره کارولو باندې تمرکز کوي، مګر د عمومي هدف ژبې په توګه وړاندې کیږي چې د سیسټم پروګرام کولو سره د Python ژبې وړتیاوې پراخوي او د پراخو کارونو لپاره مناسبه ده. د مثال په توګه، ژبه په ساحو کې د تطبیق وړ ده لکه د لوړ فعالیت کمپیوټري، د معلوماتو پروسس کول او بدلون. د موجو یوه په زړه پورې ځانګړتیا د کوډ فایلونو لپاره د تمدید په توګه د ایموجي سمبول "🔥" مشخص کولو وړتیا ده (د مثال په توګه ، "helloworld.🔥") ، د متن توسیع سربیره ".mojo".

اوس مهال، ژبه د ژورې پراختیا لاندې ده او یوازې آنلاین انٹرفیس د ازموینې لپاره وړاندې کیږي. په محلي سیسټمونو کې د چلولو لپاره جلا غونډې ژمنه شوې چې وروسته به د متقابل ویب چاپیریال د کار په اړه د فیډبیک ترلاسه کولو وروسته خپره شي. د تالیف کونکي ، JIT او پروژې پورې اړوند نورو پرمختګونو لپاره د سرچینې کوډ پلان شوی چې د داخلي جوړښت ډیزاین بشپړیدو وروسته پرانستل شي (د تړلو دروازو شاته د کاري پروټوټایپ پراختیا ماډل د LLVM پراختیا لومړني مرحلې ته ورته دی ، کلینګ. او سویفټ). څرنګه چې د موجو ترکیب د Python پر بنسټ والړ دی او د ډول سیسټم C/C++ ته نږدې دی، نو په راتلونکي کې پلانونه شتون لري چې د C/C++ او Python په Mojo کې لیکل شوي د موجوده پروژو ژباړلو اسانتیا لپاره یو اوزار کټ رامینځته کړي، او همدارنګه د پراختیا لپاره. هایبرډ پروژې چې د Python کوډ او موجو سره یوځای کوي.

پروژه د دې لپاره ډیزاین شوې چې په محاسبه کې په سیسټم کې د متفاوت سیسټمونو هارډویر سرچینې شاملې کړي. د مثال په توګه، GPUs، د ماشین زده کړې ځانګړي سرعت کونکي، او د ویکتور پروسس لارښوونې (SIMDs) د موجو غوښتنلیکونو چلولو او موازي حسابونو لپاره کارول کیدی شي. د Python ژبې د جلا فرعي سیټ رامینځته کولو دلیل ، د دې پرځای چې د موجوده CPython اصلاح کولو کار کې برخه واخلي ، د تالیف تمرکز ، د سیسټم برنامې وړتیاو ادغام ، او د بنسټیز ډول مختلف داخلي جوړښت کارول چې کوډ ته اجازه ورکوي په GPUs او مختلف هارډویر سرعت کونکو کې اجرا شوي. په ورته وخت کې، د موجو پراختیا کونکي اراده لري چې د امکان تر حده د CPython سره مطابقت تعقیب کړي.

موجو دواړه د JIT تشریح حالت کې کارول کیدی شي او د اجرا وړ فایلونو کې د تالیف لپاره (AOT، مخکې له وخته). کمپیلر د اتوماتیک اصلاح کولو ، کیچ کولو او توزیع شوي تالیف لپاره عصري ټیکنالوژي جوړه کړې. په موجو ژبه کې د سرچینې متنونه د ټیټ کچې منځګړیتوب کوډ MLIR (ملټي لیول منځګړیتوب نمایندګۍ) ته بدل شوي ، چې د LLVM پروژې لخوا رامینځته شوي او د ډیټا جریان ګراف پروسس کولو لپاره اضافي ب featuresې چمتو کوي. کمپیلر تاسو ته اجازه درکوي مختلف بیکینډونه وکاروئ چې د ماشین کوډ رامینځته کولو لپاره د MLIR ملاتړ کوي.

د محاسبې ګړندۍ کولو لپاره د اضافي هارډویر میکانیزمونو کارول دا ممکنه کوي چې فعالیت ترلاسه کړي چې د جدي محاسبې سره ، د C / C ++ غوښتنلیکونو څخه ډیر وي. د مثال په توګه، کله چې د منډیلبروټ سیټ رامینځته کولو لپاره د غوښتنلیک ازموینه کول، د موجو کمپل شوی غوښتنلیک، کله چې په AWS کلاوډ (r7iz.metal-16xl) کې اجرا شو، د C++ تطبیق (6 ثانیه vs. 0.03 ثانیه) په پرتله 0.20 ځله ګړندی و. .)، همدارنګه د سټاک CPython 35 (3.10.9 sec vs 0.03 sec) په کارولو سره د Python غوښتنلیک څخه 1027 زره ځله ګړندی او د PYPY (1500 ثانیه vs 0.03 ثانیه) په کارولو سره 46.1 ځله ګړندی.

کله چې د ماشین زده کړې ستونزو حل کولو په ساحه کې د فعالیت ارزونه کول، د موجو په ژبه کې لیکل شوي ماډلر انفرنس انجن AI سټیک، د TensorFlow کتابتون پر بنسټ د حل په پرتله، د Intel سره په سیسټم کې 3 ځله ګړندی وګرځید. پروسیسر کله چې د ژبې ماډل پروسس کوي، 6.4 ځله ګړندی کله چې د سپارښتنې تولید ماډل پلي کیږي او 2.1 ځله ګړندی کله چې د لید معلوماتو پروسس کولو لپاره ماډلونو سره کار کوي. کله چې د AMD پروسیسرونو کاروئ، د موجو کارولو په وخت کې لاسته راوړنه 3.2، 5 او 2.2 ځله وه، او کله چې د ARM پروسیسر کاروي - په ترتیب سره 5.3، 7.5 او 1.7 ځله. د PyTorch پر بنسټ حل په Intel CPU کې 1.4، 1.1 او 1.5 ځله د Mojo څخه وروسته پاتې دی، په AMD CPU کې 2.1، 1.2 او 1.5 ځله او په ARM CPU کې 4، 4.3 او 1.3 ځله.

LLVM جوړونکی د موجو پروګرام کولو نوې ژبه رامینځته کوي

ژبه د جامد ټایپ کولو او د ټیټې کچې حافظې خوندي ځانګړتیاو ملاتړ کوي چې د زنګ ځانګړتیاو یادونه کوي لکه د حوالې ژوند وخت تعقیب او متغیر پور اخیستونکی چیکر (د پور اخیستونکي چیکر). د پوائنټرونو سره د خوندي عملیاتو لپاره وسیلو سربیره ، ژبه د ټیټې کچې کار لپاره ځانګړتیاوې هم چمتو کوي ، د مثال په توګه ، دا ممکنه ده چې د پوینټر ډول په کارولو سره په غیر محفوظ حالت کې حافظې ته مستقیم لاسرسی ومومئ ، د انفرادي SIMD لارښوونو ته زنګ ووهئ ، یا د هارډویر توسیعونو ته لاسرسی ومومئ لکه لکه TensorCores او AMX.

LLVM جوړونکی د موجو پروګرام کولو نوې ژبه رامینځته کوي

د ټولو متغیرونو لپاره د واضح ډول تعریفونو سره د دندو لپاره د کلاسیک او غوره شوي Python کوډ جلا کول ساده کولو لپاره ، دا وړاندیز کیږي چې د "def" پرځای جلا کلیدي "fn" وکاروئ. په ورته ډول د ټولګیو لپاره، که تاسو اړتیا لرئ چې د تالیف په وخت کې په حافظه کې ډاټا ډک کړئ (لکه څنګه چې په C کې)، د "ټولګي" پرځای تاسو کولی شئ د "struct" ډول وکاروئ. دا هم ممکنه ده چې په ساده ډول په C / C ++ ژبو کې ماډلونه وارد کړئ، د بیلګې په توګه، د ریاضی کتابتون څخه د cos فعالیت واردولو لپاره، تاسو کولی شئ د "math.h" import cos څخه مشخص کړئ.

سرچینه: opennet.ru

Add a comment