HPVM 2.0، CPU، GPU، FPGA اور ہارڈویئر ایکسلریٹر کے لیے ایک کمپائلر، شائع کیا گیا ہے۔

LLVM پروجیکٹ نے HPVM 2.0 (Heterogeneous Parallel Virtual Machine) کے اجراء کا اعلان کیا، ایک کمپائلر جس کا مقصد متضاد نظاموں کے لیے پروگرامنگ کو آسان بنانا اور CPUs، GPUs، FPGAs، اور ڈومین کے لیے مخصوص ہارڈویئر ایکسلریٹر کے لیے کوڈ جنریشن ٹولز فراہم کرنا ہے۔ پروجیکٹ کوڈ اپاچی 2.0 لائسنس کے تحت تقسیم کیا گیا ہے۔

متضاد متوازی نظاموں کے لیے پروگرامنگ ایک ہی نظام میں اجزاء کی موجودگی کی وجہ سے پیچیدہ ہے جو متوازی کے حصول کے لیے مختلف ماڈلز استعمال کرتے ہیں (CPU کور، ویکٹر ہدایات، GPU، وغیرہ)، مختلف ہدایات کے سیٹ اور مختلف میموری کے درجہ بندی۔ ہر نظام ان اجزاء کا اپنا مجموعہ استعمال کرتا ہے۔ HPVM پروجیکٹ کا بنیادی خیال یہ ہے کہ مرتب کرتے وقت متوازی طور پر عمل میں آنے والے پروگراموں کی ایک متفقہ نمائندگی کا استعمال کیا جائے، جو مختلف قسم کے ہارڈ ویئر کے لیے استعمال کیا جا سکتا ہے جو متوازی کمپیوٹنگ کو سپورٹ کرتا ہے، بشمول GPUs، ویکٹر ہدایات، ملٹی کور پروسیسرز، FPGAs اور مختلف خصوصی ایکسلریٹر چپس۔

دوسرے سسٹمز کے برعکس، HPVM نے متضاد کمپیوٹنگ کو منظم کرنے کے لیے تین صلاحیتوں کو یکجا کرنے کی کوشش کی - ایک پروگرامنگ زبان اور ہارڈویئر سے آزاد انٹرمیڈیٹ نمائندگی (IR)، ورچوئل انسٹرکشن سیٹ آرکیٹیکچر (V-ISA) اور رن ٹائم شیڈولنگ:

  • HPVM انٹرمیڈیٹ نمائندگی کام، ڈیٹا، اور پائپ لائن کی سطحوں پر متوازی کو حاصل کرنے کے لیے درجہ بندی کے ڈیٹا فلو گراف کا استعمال کرتے ہوئے ہدایات کی LLVM انٹرمیڈیٹ نمائندگی کو بڑھاتی ہے۔ HPVM انٹرمیڈیٹ نمائندگی میں ویکٹر ہدایات اور مشترکہ میموری بھی شامل ہے۔ انٹرمیڈیٹ نمائندگی کے استعمال کا بنیادی مقصد موثر کوڈ جنریشن اور متضاد نظاموں کے لیے اصلاح ہے۔
  • ورچوئل انسٹرکشن سیٹ آرکیٹیکچر (V-ISA) نچلی سطح کے ہارڈ ویئر کی خصوصیات کو خلاصہ کرتا ہے اور صرف ایک بنیادی متوازی ماڈل یعنی ڈیٹا فلو گراف کا استعمال کرتے ہوئے متوازی اور میموری فن تعمیر کی مختلف شکلوں کو یکجا کرتا ہے۔ V-ISA آپ کو متوازی کمپیوٹنگ کے لیے مختلف قسم کے آلات کے درمیان پورٹیبلٹی حاصل کرنے کی اجازت دیتا ہے اور یہ ممکن بناتا ہے کہ متضاد نظاموں کے مختلف عناصر کا استعمال کرتے وقت کارکردگی ضائع نہ ہو۔ ورچوئل ISA کو یونیورسل ایگزیکیوٹیبل پروگرام کوڈ فراہم کرنے کے لیے بھی استعمال کیا جا سکتا ہے جو CPUs، GPUs، FPGAs، اور مختلف ایکسلریٹر استعمال کر کے چل سکتا ہے۔
  • کمپیوٹیشنل عمل کے لیے لچکدار شیڈولنگ پالیسیاں رن ٹائم کے وقت لاگو ہوتی ہیں اور پروگرام کے بارے میں معلومات (گراف ڈھانچہ) کی بنیاد پر اور سسٹم میں دستیاب ٹارگٹ کمپیوٹنگ ڈیوائسز میں سے کسی پر عمل درآمد کے لیے انفرادی پروگرام نوڈس کی تالیف کے ذریعے لاگو ہوتی ہیں۔

پروجیکٹ کے ذریعہ تیار کردہ کوڈ جنریٹرز NVIDIA GPUs (cuDNN اور OpenCL)، Intel AVX ویکٹر ہدایات، FPGAs اور ملٹی کور x86 CPUs کا استعمال کرتے ہوئے عمل درآمد کے لیے ورچوئل ISA کا استعمال کرتے ہوئے بیان کردہ ایپلیکیشن نوڈس کا ترجمہ کرنے کے قابل ہیں۔ یہ نوٹ کیا جاتا ہے کہ HPVM مترجمین کی کارکردگی GPUs اور ویکٹر کمپیوٹنگ آلات کے لیے ہاتھ سے لکھے OpenCL کوڈ سے موازنہ ہے۔

HPVM 2.0 کی اہم اختراعات:

  • ایک Hetero-C++ زبان کا فرنٹ اینڈ تجویز کیا گیا ہے، جو HPVM میں تالیف کے لیے C/C++ میں ایپلیکیشن کوڈ کے متوازی عمل کو آسان بناتا ہے۔ Hetero-C++ ڈیٹا کی سطح کے متوازی اور درجہ بندی کے کاموں کے لیے ایکسٹینشن کی وضاحت کرتا ہے جو HPVM تھریڈ گرافس پر نقشہ بناتے ہیں۔
  • Intel FPGAs پر کوڈ کے نفاذ کے لیے سپورٹ فراہم کرنے کے لیے ایک FPGA بیک اینڈ شامل کیا گیا ہے۔ عملدرآمد کو منظم کرنے کے لیے، OpenCL کے لیے Intel FPGA SDK استعمال کیا جاتا ہے۔
  • DSE (ڈیزائن اسپیس ایکسپلوریشن) فریم ورک کو شامل کیا گیا ہے، جس میں کمپائلر آپٹیمائزیشنز اور میکانزم شامل ہیں تاکہ کسی ہارڈویئر پلیٹ فارم کے لیے ایپلی کیشنز کو خود بخود ٹیوننگ کرنے میں رکاوٹوں کی نشاندہی کریں۔ فریم ورک میں Intel سے FPGAs کے لیے ایک ریڈی میڈ پرفارمنس ماڈل شامل ہے اور HPVM کے تعاون سے کسی بھی ڈیوائس کے لیے آپٹمائزیشن کے لیے آپ کے اپنے پروسیسرز کو جوڑنا ممکن بناتا ہے۔ HPVM اور LLVM ڈیٹا فلو گراف کی سطح دونوں پر اصلاح کا اطلاق کیا جا سکتا ہے۔
  • LLVM اجزاء کو ورژن 13.0 میں اپ ڈیٹ کر دیا گیا ہے۔
  • کوڈ کو دوبارہ ترتیب دیا گیا ہے تاکہ کوڈ بیس، لائبریریوں اور یوٹیلیٹیز کو آسانی سے نیویگیٹ کیا جا سکے۔
  • جانچ کے بنیادی ڈھانچے کو بہتر بنایا گیا ہے، HPVM کے مختلف اجزاء کے لیے نئے ٹیسٹ شامل کیے گئے ہیں۔

ماخذ: opennet.ru

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