Performance portability
کارکردگی کی پورٹیبلٹی سے مراد کمپیوٹر پروگراموں اور ایپلی کیشنز کی مختلف پلیٹ فارمز پر مؤثر طریقے سے کام کرنے کی صلاحیت ہے۔ پرفارمنس پورٹیبل ایپلی کیشنز کے ڈویلپرز کارکردگی میں رکاوٹ ڈالے بغیر متعدد پلیٹ فارمز کی حمایت کرنے کی کوشش کرتے ہیں، اور مثالی طور پر پلیٹ فارم کے مخصوص کوڈ کو کم سے کم کرتے ہوئے۔ یہ ایچ پی سی (ہائی پرفارمنس کمپیوٹنگ) کمیونٹی کے اندر ایک مطلوب شے ہے، تاہم اس کی پیمائش کرنے کا کوئی عالمگیر یا متفقہ طریقہ نہیں ہے۔ اس بارے میں کچھ تنازعہ ہے کہ آیا پورٹیبلٹی سے مراد کسی ایپلی کیشن کی پورٹیبلٹی یا سورس کوڈ کی پورٹیبلٹی ہے۔ کارکردگی کو دو طریقوں سے ماپا جا سکتا ہے: یا تو کسی ایپلی کیشن کے بہتر ورژن کا اس کے پورٹیبل ورژن سے موازنہ کرکے ؛ یا کسی ایپلی کیشن کی نظریاتی چوٹی کی کارکردگی کا موازنہ اس بنیاد پر کرنا کہ کتنے ایف ایل او پیز انجام دیے جاتے ہیں، ڈیٹا کو مین میموری سے پروسیسر میں منتقل کیا جاتا ہے۔ ہارڈ ویئر کا تنوع ایسے سافٹ ویئر کو تیار کرتا ہے جو مختلف قسم کی مشینوں میں کام کرتا ہے جو ایپلی کیشن کی لمبی عمر کے لیے تیزی سے اہم ہوتا ہے۔ مشمولات کارکردگی کی پورٹیبلٹی کی اصطلاح صنعت میں اکثر استعمال ہوتی ہے اور عام طور پر اس سے مراد ہے: "(1) متعدد ہارڈ ویئر پلیٹ فارمز پر ایک ایپلی کیشن چلانے کی صلاحیت ؛ اور (2) ان پلیٹ فارمز پر کچھ نظریاتی سطح کی کارکردگی حاصل کرنا"۔ مثال کے طور پر، 2016 ڈی او ای (یونائیٹڈ اسٹیٹس ڈیپارٹمنٹ آف انرجی) سینٹرز آف ایکسی لینس پرفارمنس پورٹیبلٹی میٹنگ میں، جان پینیکوک (انٹیل) نے کہا کہ "ایک ایپلی کیشن کارکردگی پورٹیبل ہوتی ہے اگر وہ کارکردگی کی مستقل سطح کو حاصل کرتی ہے [مثال کے طور پر۔ کارکردگی کے وقت یا میرٹ کے دوسرے اعداد و شمار سے تعبیر کیا جاتا ہے، نہ کہ ہر پلیٹ فارم پر سب سے مشہور نفاذ کے مقابلے میں پلیٹ فارمز میں چوٹی FLOPS (فلوٹنگ پوائنٹ آپریشنز فی سیکنڈ) کا فیصد۔ مزید براہ راست، جیف لارکن (NVIDIA) نے نوٹ کیا کہ کارکردگی کی پورٹیبلٹی تب ہوتی ہے جب "ایک ہی سورس کوڈ مختلف آرکیٹیکچرز پر پیداواری طور پر چلے گا"۔ پرفارمنس پورٹیبلٹی ایچ پی سی (ہائی پرفارمنس کمپیوٹنگ) کمیونٹی کے اندر بحث کا ایک اہم موضوع ہے۔ صنعت، تعلیمی شعبے، اور ڈی او ای قومی لیبارٹریوں کے ساتھی ہر سال ایچ پی سی فورم میں پرفارمنس، پورٹیبلٹی، اور پروڈکٹیویٹی میں ملتے ہیں، جو 2016 میں شروع کیا گیا تھا، تاکہ موجودہ اور مستقبل کے ایچ پی سی پلیٹ فارمز پر پرفارمنس پورٹیبلٹی کے اہداف کی طرف خیالات اور پیشرفت پر تبادلہ خیال کیا جا سکے۔ مطابقت کارکردگی پورٹیبلٹی مسلسل تیار ہونے والے کمپیوٹنگ آرکیٹیکچرز کی وجہ سے ڈویلپرز کے درمیان مطابقت برقرار رکھتی ہے جو موجودہ ہارڈ ویئر کے لیے ڈیزائن کردہ ایپلی کیشنز کو متروک کرنے کا خطرہ بناتی ہیں۔ کارکردگی کی پورٹیبلٹی اس مفروضے کی نمائندگی کرتی ہے کہ ڈویلپر کا واحد کوڈ بیس نئے آرکیٹیکچرز اور مختلف موجودہ آرکیٹیکچرز پر قابل قبول حدود میں کارکردگی کا مظاہرہ کرتا رہے گا جن پر کوڈ کا ابھی تجربہ نہیں کیا گیا ہے۔ ہارڈ ویئر کا بڑھتا ہوا تنوع ایسے سافٹ ویئر کو تیار کرتا ہے جو طویل عمر اور مسلسل مطابقت کے لیے ضروری مختلف قسم کی مشینوں میں کام کرتا ہے۔ کارکردگی کی پورٹیبلٹی کا ایک نمایاں حامی یونائیٹڈ سٹیٹس ڈیپارٹمنٹ آف انرجی (ڈی او ای) ایکساسکل کمپیوٹنگ پروجیکٹ (ای سی پی) ہے۔ ایک ایکساسکل کمپیوٹنگ ماحولیاتی نظام بنانے کے ای سی پی کے مشن کے لیے ہارڈ ویئر آرکیٹیکچرز کی متنوع صف کی ضرورت ہوتی ہے، جس نے کارکردگی کی پورٹیبلٹی کو ایک جاری تشویش اور ایسی چیز بنا دیا ہے جس کے لیے ایکساسکل سپر کمپیوٹرز کو مؤثر طریقے سے استعمال کرنے کے لیے تیار رہنا ضروری ہے۔ 2016 ڈی او ای سینٹرز آف ایکسی لینس پرفارمنس پورٹیبلٹی میٹنگ میں، برٹ اسٹیل (لارنس لیورمور نیشنل لیبارٹری) نے کہا کہ کارکردگی کی پورٹیبلٹی ای سی پی کے لیے متنوع پلیٹ فارمز کے مسلسل استعمال کی وجہ سے "ایک اہم جاری مسئلہ" تھا۔ 2016 سے ڈی او ای نے کارکردگی کی پورٹیبلٹی کی مسلسل اہمیت کو تلاش کرنے والی ورکشاپس کی میزبانی کی ہے۔ 2017 کے اجلاس میں شرکت کرنے والی کمپنیوں اور گروپوں میں نیشنل انرجی ریسرچ سائنٹیفک کمپیوٹنگ سینٹر (این ای آر ایس سی)، لارنس لیورمور نیشنل لیبارٹری (ایل ایل این ایل)، سینڈیا نیشنل لیبارٹریز (ایس این ایل)، اوک رج نیشنل لیبارٹری (او آر این ایل)، انٹرنیشنل بزنس مشینیں (آئی بی ایم)، ارگون نیشنل لیبارٹری (اے این ایل)، لاس الاموس نیشنل لیبارٹری (ایل اے این ایل)، انٹیل اور این وی آئی ڈی اے شامل ہیں۔ کارکردگی کی پورٹیبلٹی کی پیمائش جب کوئی پروگرام کارکردگی کی پورٹیبلٹی تک پہنچتا ہے تو اس کی مقدار کا انحصار دو عوامل پر ہوتا ہے۔ پہلا عنصر، پورٹیبلٹی، کو کوڈ کی کل لائنوں سے ماپا جا سکتا ہے جو متعدد آرکیٹیکچرز بمقابلہ کوڈ کی کل لائنوں میں استعمال ہوتی ہیں جو ایک ہی فن تعمیر کے لیے ہوتی ہیں۔ اس بارے میں کچھ تنازعہ ہے کہ آیا پورٹیبلٹی سے مراد کسی ایپلی کیشن کی پورٹیبلٹی ہے (یعنی۔ کیا یہ ہر جگہ چلتا ہے یا نہیں)، یا سورس کوڈ کی پورٹیبلٹی (یعنی۔ کتنا کوڈ خاص ہے)۔ دوسرا عنصر، کارکردگی، چند طریقوں سے ماپا جا سکتا ہے۔ ایک طریقہ یہ ہے کہ کسی ایپلیکیشن کے پلیٹ فارم آپٹیمائزڈ ورژن کی کارکردگی کا موازنہ اسی ایپلیکیشن کے پورٹیبل ورژن کی کارکردگی سے کیا جائے۔ ایک اور طریقہ یہ ہے کہ روف لائن پرفارمنس ماڈل بنایا جائے، جو کسی ایپلی کیشن کی نظریاتی چوٹی کی کارکردگی فراہم کرتا ہے جس کی بنیاد اس بات پر ہوتی ہے کہ پروگرام کے نفاذ کے دوران کتنے ایف ایل او پیز انجام دیے جاتے ہیں بمقابلہ ڈیٹا کو مین میموری سے پروسیسر میں منتقل کیا جاتا ہے۔ فی الحال کوئی عالمگیر معیارات موجود نہیں ہیں جو واقعی کوڈ یا ایپلی کیشن کی کارکردگی کو پورٹیبل بناتا ہے، اور اس بارے میں کوئی معاہدہ نہیں ہے کہ آیا مجوزہ پیمائش کے طریقے کوڈ ٹیموں سے متعلق خدشات کو درست طریقے سے پکڑتے ہیں۔ 2016 ڈی او ای (یونائیٹڈ اسٹیٹس ڈیپارٹمنٹ آف انرجی) سینٹرز آف ایکسی لینس پرفارمنس پورٹیبلٹی میٹنگ کے دوران، لارنس لیورمور نیشنل لیبارٹری کے اسپیکر ڈیوڈ رچرڈز نے کہا کہ، "ایک کوڈ پرفارمنس پورٹیبل ہوتا ہے جب ایپلیکیشن ٹیم کہتی ہے کہ اس کی کارکردگی پورٹیبل ہے!" 2019 کے ایک مطالعے کے عنوان سے پرفارمنس پورٹیبلٹی ایکراس ڈائیورس کمپیوٹر آرکیٹیکچرز نے پرفارمنس پورٹیبلٹی کی موجودہ حالت کا تعین کرنے کے لیے آرکیٹیکچرز کے متنوع سیٹ میں متعدد متوازی پروگرامنگ ماڈلز کا تجزیہ کیا۔ مطالعہ نے یہ نتیجہ اخذ کیا کہ پرفارمنس پورٹیبل کوڈ لکھتے وقت متعدد ہارڈ ویئر پلیٹ فارمز میں متعدد وینڈرز کے تعاون سے کھلے (معیاری) پروگرامنگ ماڈل کا استعمال کرنا، الگورتھم اور ایپلی کیشن کی تمام سطحوں پر زیادہ سے زیادہ متوازی کو بے نقاب کرنا، بیک وقت متعدد پلیٹ فارمز پر کوڈ تیار کرنا اور بہتر بنانا، اور ملٹی آبجیکٹیو آٹو ٹیوننگ تمام پلیٹ فارمز پر اچھی کارکردگی حاصل کرنے کے لیے لچکدار کوڈ بیس میں مناسب پیرامیٹرز تلاش کرنے میں مدد کر سکتی ہے۔ 2022 کے مطالعات میں یہ دعوی کیا گیا ہے کہ متوازی ایپلی کیشن کی کارکردگی کی پورٹیبلٹی کی مناسب اور جامع تعریف مطلوب ہے، لیکن پیچیدہ ہے، اور یہ شک کی بات ہے کہ آیا اس طرح کی تعریف کو سائنسی برادری کے زیادہ تر محققین اور ڈویلپرز قبول کریں گے یا نہیں۔ مزید برآں، متوازی پروگرامنگ ماڈلز کی ترقی میں گزشتہ دو دہائیوں میں جو تبدیلیاں واقع ہوئی ہیں، خاص طور پر موجودہ ورژن میں نئی پورٹیبل پرفارمنس تجریدوں کے اضافے کے ساتھ اور جو آنے والے سالوں میں شامل کی جائیں گی، اس میدان میں ایک نئے رجحان کا خاکہ پیش کرتی ہیں۔ یہ رجحان اس بات کی نشاندہی کرتا ہے کہ متوازی پروگرامنگ ماڈل ایپلی کیشنز کو جو کارکردگی کی پورٹیبلٹی فراہم کریں گے وہ کارکردگی کی پورٹیبلٹی سے زیادہ اہم ہوگی جو ایپلی کیشنز خود ہی فراہم کر سکتی ہیں۔ دوسرے لفظوں میں، یہ تجویز کیا جاتا ہے کہ متوازی پروگرامنگ ماڈل تجویز کردہ ماڈلز کے مقابلے میں زیادہ وضاحتی بن جائیں گے، اس طرح پروگرامر سے پروگرامنگ ماڈل کے نفاذ اور اس کے بنیادی مرتب کی طرف بہت زیادہ ذمہ داری منتقل ہو جائے گی، جو بالآخر ایپلی کیشن کی کارکردگی کی پورٹیبلٹی کی ڈگری کا تعین کرتی ہے۔ یہ ایک بنیادی تصوراتی تبدیلی ہے کہ مستقبل قریب میں ایپلی کیشنز کو کس طرح تیار کیا جائے گا۔ ان تبدیلیوں کے نتیجے میں، کارکردگی کی پورٹیبلٹی کی تعریف کی تجریدی سطح کو بڑھانا ضروری ہے۔ دوسرے لفظوں میں، یہ مطالعات کارکردگی کی پورٹیبلٹی کے لیے ایک تعریف پیش کرتے ہیں جو ایپلی کیشن پر مرکوز ہونے کے بجائے متوازی پروگرامنگ ماڈل پر مرکوز ہے۔ فریم ورک اور غیر فریم ورک حل متعدد پروگرامنگ ایپلی کیشنز اور سسٹم ہیں جو پروگرامرز کو اپنی ایپلی کیشنز کی کارکردگی کو پورٹیبل بنانے میں مدد کرتے ہیں۔ کچھ فریم ورک جو فنکشنل پورٹیبلٹی کی حمایت کرنے کا دعوی کرتے ہیں ان میں اوپن سی ایل، ایس وائی سی ایل، کوکوس، راجہ، جاوا، اوپن ایم پی، اوپن اے سی سی شامل ہیں۔ یہ پروگرامنگ انٹرفیس مخصوص پروگرامنگ زبانوں میں ملٹی پلیٹ فارم ملٹی پروسیسنگ پروگرامنگ کی حمایت کرتے ہیں۔ کچھ غیر فریم ورک حل میں سیلف ٹیوننگ اور ڈومین مخصوص زبان شامل ہیں۔ حوالہ جات بیرونی روابط متنوع کمپیوٹر آرکیٹیکچرز میں ایفیکٹو پرفارمنس پورٹیبلٹی۔ آئی ای ای ای کانفرنس پبلکیشن پرفارمنس پورٹیبلٹی جولیا: نحو کے لیے آئیں، اعلی سطحی متوازی نمونوں کے ذریعے ایکسلریٹرز کے لیے اسپیڈ ایکسپلورنگ پرفارمنس پورٹیبلٹی کے لیے رہیں کارکردگی پورٹیبلٹی کے حصول کی سمت ایکسلریٹرز کے لیے ہدایات کا استعمال کرتے ہوئے انٹیل نئے ڈیٹا متوازی سی + + پر کام کر رہا ہے کوکوس لائبریری سی ایل اے ڈبلیو کا استعمال کرتے ہوئے البانی کے محدود عنصر تجزیہ کوڈ کی کارکردگی کی پورٹیبلٹی کی طرف: ابھرتے ہوئے کمپیوٹنگ آرکیٹیکچرز میں کارکردگی کی پورٹیبلٹی فراہم کرنے والا ایک ٹول جنرل پرپز متوازی پروگرامنگ کی پیداواری صلاحیت اور کارکردگی کی پورٹیبلٹی کو بڑھانا اسپائرل: انتہائی پیمانے پر کمپیوٹنگ میں مستقبل کی کارکردگی کی پورٹیبلٹی کا ثبوت: میٹرکس، چیلنج پرفارمنس پورٹیبلٹی میٹرکس کے اطلاق پر اوپن اے سی سی، اوپن ایم پی، کوکوس اور آر اے جے اے ببلیوگرافی کی پرفارمنس پورٹیبلٹی پر پرفارمنس پورٹیبلٹی میٹرک کی اصلاح۔ سائنسی ایپلی کیشنز: اسکیل ایبلٹی اور پرفارمنس پورٹیبلٹی۔ برطانیہ، سی آر سی پریس، 2017۔ مزاہیری اے، شولٹے جے، ماسکوویز ایم ڈبلیو، وولف ایف، جینسری اے۔ (2019) جی پی یو ٹینسر آپریشنز کی پروگرام سازی اور کارکردگی کی پورٹیبلٹی کو بڑھانا۔ میں: یحیی پور آر۔ (ای ڈی ایس) یورو پار 2019: متوازی پروسیسنگ۔ یورو-پار 2019۔ لیکچر نوٹس ان کمپیوٹر سائنس، جلد 11725۔ سپرنگر، چام۔ https://doi.org/10.1007/978-3-030-29400-7_16 کمپیوٹر پروگرامنگ