توسعه دهندگان پروژه LLVM انتشار کامپایلر HPVM 1.0 (ماشین مجازی موازی ناهمگن) را با هدف ساده سازی برنامه نویسی برای سیستم های ناهمگن و ارائه ابزارهایی برای تولید کد برای CPU ها، GPU ها، FPGA ها و شتاب دهنده های سخت افزاری مخصوص دامنه (پشتیبانی از) منتشر کرده اند. FGPA ها و شتاب دهنده ها در نسخه 1.0 گنجانده نشده است). کد پروژه تحت مجوز آپاچی 2.0 توزیع شده است.
ایده اصلی HPVM ارائه یک نمایش یکپارچه از برنامه های موازی قابل اجرا در هنگام کامپایل است که می تواند برای اجرا با استفاده از انواع مختلفی از سخت افزارهایی که از محاسبات موازی پشتیبانی می کنند، از جمله GPU ها، دستورالعمل های برداری، پردازنده های چند هسته ای، FPGA و انواع تراشه های شتاب دهنده تخصصی. برخلاف سایر سیستمها، HPVM سعی کرد سه قابلیت را برای سازماندهی محاسبات ناهمگن ترکیب کند: نمایش متوسط مستقل از زبان و سختافزار، معماری مجموعه دستورات مجازی (ISA) و زمانبندی زمان اجرا.
نمایش میانی مستقل از هدف (IR) HPVM بر اساس نمایش دستورالعمل میانی LLVM 9.0 ساخته شده و آن را با یک نمودار جریان داده سلسله مراتبی گسترش می دهد تا موازی بودن سطح وظیفه، داده و خط لوله را به تصویر بکشد. نمایش میانی HPVM همچنین شامل دستورالعمل های برداری و حافظه مشترک است. هدف اصلی استفاده از یک نمایش میانی، تولید کد کارآمد و بهینهسازی برای سیستمهای ناهمگن است.
معماری مجموعه دستورات مجازی (ISA) امکان جابجایی بین انواع مختلف سختافزار محاسباتی موازی را فراهم میکند و باعث میشود هنگام استفاده از عناصر مختلف سیستمهای ناهمگن، کارایی از دست نرود. همچنین میتوان از ISA مجازی برای ارائه کد برنامه اجرایی جهانی استفاده کرد که میتواند با استفاده از CPU، GPU، FPGA و شتابدهندههای مختلف اجرا شود.
در مرحله فعلی توسعه، HPVM مولدهای کدی را ارائه می دهد که قادر به ترجمه گره های برنامه تعریف شده با استفاده از ISA مجازی برای اجرا با استفاده از پردازنده های گرافیکی NVIDIA (cuDNN و OpenCL)، دستورالعمل های برداری Intel AVX و پردازنده های x86 چند هسته ای هستند. در زمان اجرا، HPVM سیاستهای زمانبندی فرآیند محاسباتی انعطافپذیر را اعمال میکند که هم بر اساس اطلاعات برنامه (ساختار نمودار) و هم از طریق کامپایل گرههای برنامه جداگانه برای اجرا در هر یک از دستگاههای محاسباتی هدف موجود در سیستم اجرا میشوند.
ذکر شده است که استفاده از HPVM می تواند افزایش قابل توجهی در بهره وری داشته باشد. عملکرد مترجمهای HPVM با کد OpenCL دستنویس برای پردازندههای گرافیکی و دستگاههای محاسباتی بردار قابل مقایسه است.
در مقایسه با اولین نسخه پیشنمایش، HPVM 1.0 شامل پشتیبانی از عملیات تانسور جبر خطی، پیشانتها برای Pytorch و Keras، تقریبهای عملگر پیچیدگی، و یک چارچوب تنظیم تقریبی است که به طور خودکار تقریبهای بهینه را برای عملیات تانسور خاص انتخاب میکند و پیکربندی را انتخاب میکند که عملکرد بهینه را ارائه میدهد.
منبع: opennet.ru