hamedof

سیستم های محاسباتی ناهمگن با بهره گیری از پردازنده مرکزی و کارت گرافیک

امتیاز دادن به این موضوع:

Recommended Posts

ارسال شده در · مخفی شده توسط MR9، 2 خرداد 1395 - دلیلی ارایه نشده است
مخفی شده توسط MR9، 2 خرداد 1395 - دلیلی ارایه نشده است

سلام مطالب خوب بود

به اشتراک گذاشتن این پست


لینک به پست

مقاله بسیار مفیدی است و بنده مشتاق قسمتهای بعدی هستم

صرفا جهت یادآوری دوستان و اساتید

GPU یا واحد پردازش گرافیک زبان اسمبلی خاص خود را دارد که همان زبان های برنامه نویسی گرافیکی (shading languages) اما سطح پایین این زبان است

ابررایانه چینی Tianhe-1 که یک دوره برترین ابررایانه جهان بود، از 7168 پردازنده گرافیکی NVidia بهره میبرد

  • Upvote 2

به اشتراک گذاشتن این پست


لینک به پست
اشتراک در سایت های دیگر

با تشکر از جناب hamedof به خاطر مطالب ارزنده‌شان

 

البته ناگفته نماند شرکت‌های سازنده CPU نیز بیکار ننشستند

 

شرکت اینتل برای افزایش‌ سرعت محاسبات دست به ساخت کلاسترهای مجتمع با نام xeon phi نمود خانواده night landing در یک کارت دارای ۷۲ واحد پردازشگر است که

توان محاسباتی ۱.۲ ترافلاپس را در مدل ۷۱۲۰ ارائه می‌کند که مبنای طراحی ماشین‌های محاسباتی امروزه است به عنوان مثال تیان هی ۲ دارای ۱۶۰۰ نود محاسباتی

به قدرت ۳۳ پتا فلاپس است در حالی که هر نود از دو سری پروسسورIvy Bridge و ۳ کارت xeon phi استفاده می کند و در مجموع سه میلیون هسته محاسباتی سبب شده تا عنوان بزرگترین

ماشین محاسباتی را به خود اختصاص دهد.

 

شرکت AMD نیز مجموعه fire Stream را عرضه نموده که تابحال با آن کار ننموده ام

 

 

در مقابل Nvidia کارت های محاسبه گر خود را با معماری متفاوت عرضه می‌نماید که توضیح آن را به بعد از اجازه جناب حامداف موکول می‌کنم

کارت پاسکال از خانواده تسلا به تنهایی دارای ۳۵۸۴ هسته پردازش به قدرت پردازش ۱۰ ترافلاپس است

 

البته مقدار غیر قابل باور توان محاسباتی GPU ها یک توان علمی است و در عمل به توانایی انطباق برنامه‌ها بر GPU وابسته است

برنامه نویسی بهینه  بر اساس GPU نیازمند آگاهی کامل و به روز از معماری واحدهای پردازشگر آن است و به کلی با برنامه نویسی های متداول

متفاوت است‌

اما برنامه نویسی بر روی کارت‌های مجتمع اینتل به مراتب راحت‌تر است و تفریبا با برنامه نویسی متداول تفاوتی ندارد برنامه توسط مفسر OPEN MP

به چند بخش شکسته شده و بر روی CPU هسته‌ها اجرا می‌شود

 

نکته مهم اینکه اینگونه سخت افزارها  در محیط لینوکس برای برنامه نویسی کاربر در دسترس هستند و عموما کلاس‌های برنامه نویسی را پشتیبانی نمی کنند

این مساله در GPU جدی تر است

  • Upvote 5

به اشتراک گذاشتن این پست


لینک به پست
اشتراک در سایت های دیگر

به چند بخش شکسته شده و بر روی CPU هسته‌ها اجرا می‌شود

 

نکته مهم اینکه اینگونه سخت افزارها  در محیط لینوکس برای برنامه نویسی کاربر در دسترس هستند و عموما کلاس‌های برنامه نویسی را پشتیبانی نمی کنند

این مساله در GPU جدی تر است

درود به دوستان گرامی

با اینکه کارت xeon phi پردازنده های زیادی را در اختیار می گذارد و برنامه سازی روی آن خیلی ساده تر از برنامه سازی روی GPU هست اما من ترجیح می دهم که از OpenMP استفاده نکنم.

OpenMP یک کامپایلر دایرکتیو هست که کامپایلر به کامپایلر تنظیماتش متفاوت است و به ویژه در زمینه مدیریت stack دچار مشکلات وحشتناکی است.

در یک پروژه بزرگ من دوست دارم از Message passing Interfacing (MPI) استفاده بکنم که خیلی ساده نیست اما کنترل همه هسته ها با دقت دست خود برنامه ساز هست و احتمال وقوع خطای کمتری دارد اما در OpenMP اینطور نیست و ما مجبوریم که به کامپایلر اعتماد بکنیم. حتی در زبانهایی که امنیت بیشتری نسبت به C دارند استفاده از OpenMP ساده اما ساخت نرم افزار با پاسخ مطمئن بسیار مشکل است.

اگر از OpenMP روی Windows استفاده می کنید توصیه می کنم که Intel parallel Studio 2016 را روی Visual studio  بگذارید و از امکانات debug آن هم استفاده بکنید تا محل وقوع race را به شما نشان بدهد. در ضمن تا می توانید کار nested نکنید که سر و ته کار را بشود جمع کرد.

 

مزیت کارتهای Xeon phi این است که خیلی سریع می شود روی انها برنامه موازی را با روش های متداول پیاده کرد و ایراد آنها مصرف انرژی بیشتر هست.

در مورد AMD هم نمی شود مطمئن بود که چقدر انرژی مصرف می کند اما AMD همیشه از نظر معماری از اینتل جلوتر بوده و از نظر تکنولوژی ساخت و سود عقب تر. باید دید محصول جدید چه چیزی از آب درآمده است.

در این دورانی که اینتل مرتب در حال ضرر دادن است، اینها با زنده کردن پروژه شکست خورده "لارابی" دارند سعی می کنند که برای خود بازاری ایجاد بکنند. وضع AMD که باید از اینتل هم بدتر باشد.

 

برای نوشتن برنامه روی کارت گرافیکی تحت ویندوز هم کافی است که درایور متناسب با کامپیتور خود را با استفاده از فیلتر شکن از سایت NVIDIA دانلود کنید سپس روی visual studio 2012 که در سیستم نصب دارید نصب بکنید و بعد با استفاده از دیباگر nsight برنامه خود را ریز ریز جلو ببرید. البته باید از معماری GPU کاملا اطلاع داشته باشید و از حافظه ها درست استفاده بکنید و حواستان به سینک به موقع و دستورات اتمیک هم باشد در غیر این صورت نتیجه غلط خواهد بود.

یک کار خوب استفاده از توابع کتابخانه ای هست که قبلا برای GPU تهیه شده باشند.

 

البته به نظر من اگر بروید در BIOS گزینه hyperthreading را disable بکنید و برنامه خودتان را برای CPU هدف (مثلا i7 سری skylake) کامپایل بکنید و از کامپایلر بخواهید که از دستورات AVX2 یا بالاتر استفاده بکند و گزینه های debug را حذف بکند و release کامپایل بکنید، شما تا 64 برابر برنامه محاسباتی سریعتری دارید که همین برای اکثر کاربرد ها بیش از کافی است و خیلی بدون دردسر است و کمترین سختی را هم به برنامه ساز تحمیل نمی کند.

با بهینه سازی کد و تکنیکهای آن هم میزان قابل توجهی کد شما سریع می شود که باز نیاز به پردازش موازی را کم می کند. البته بهینه سازی باعث کاهش خوانایی برنامه می شود که شمشیر دولبه هست.

 

تنها در صورتی باید به سراغ پردازش موازی رفت که چاره دیگری نداریم.

خوبی و بدی GPU هم شاید این باشد که هر کسی نمی تواند برای آن برنامه سازی بکند و فقط افراد متخصص کامپیوتر می توانند برنامه سازی درست بکنند.

 

اگر کار شما با GPU و یا کلاستری از GPU ها هم راه نیافتاد تنها راه شما پیاده سازی الگوریتم روی FPGA است و باید کارت شتابدهنده خاص سخت افزاری بسازید.

طبیعی است که در محیط لینوکس همه چیز تا حدودی سریعتر باشد اما کاربردهای تحت لینوکی معمولا صنعتی و نظامی هستند تا تجاری.

 

در یک پروژه نظامی که سفارش ساخت سخت افزار برای یک نرم افزار داشتم، فقط با بهینه سازی خیلی ساده نیاز به از کار انداختن hyperthreading هم نشد چه برسد به استفاده از FPGA.

  • Upvote 11

به اشتراک گذاشتن این پست


لینک به پست
اشتراک در سایت های دیگر

با تشکر از جناب EMP

 

هیچ وقت فکر نمی‌کردم در این سایت چنین بحثی پیش بیاید اما این بحث نشان از تخصص و دانش کاربران و گردانندان این سایت است

 

اقبال به پردازشگر‌های xeon phi بسیار کم و برای پردازنده‌های مجتمع fire stream ناچیز است به گونه‌ای که خود اعضای شرکت

اینتل نیز دیگر تعصبی بر روی محصول خود نسبت به GPU ندارند ( البته در سطح برنامه نویسی حرفه‌ای)

 

واقعه از آنجا عجیب تر می‌شود که اینتل بخش تحقیقات هود را به شرکت اماراتی- هندی فروخته است

 

در واقع بازار بزرگ بازیهای کامپیوتری و کارت‌های گرافیکی مربوط به آن رشد سخت افزارهای GPU را تا سالها تضمین کرده است

( شاید اگر شرکت اینتل هم شام ما رو دعوت میکرد مثل Nvidia  ازش حمایت می کردم)

 

اگر بنا به دلایلی نتوانم از GPU استفاده کنم. آنگاه و فقط آنگاه

درمورد استفاده از MPI , openMP من ترجیح می‌دهم  نوع مساله و امکانات را ملاک قرار دهم

 

اگر محدودیت به حجم زیاد داده مربوط باشد استفاده از MPI مقرون به صرفه تر است تا ارتباط بین نودها با کامپایل مناسب حفظ شود

اما اگر حجم محاسبات زیاد باشد باید ارتباط بین هسته‌های یک نود اهمیت بیشتری پیدا می‌کند و استفاده از OpenMP به صرفه است

البته این قاعده برای نوهای بیش از ۱۶ هسته به صرفه خواهد بود

در حالت کلی استفاده هیبریدی از هر دو روش کارآیی بهتری دارد اما برای هر مساله پیداکردن شرایط بهینه تعداد نود و هسته برای دست‌یابی

به پرفورمنس بهینه است

 

در مورد کامپایل openMP , رسیدن به نتیجه درست باید در داخل برنامه به توالی یا sequence management توجه داشت در غیر این

صورت نتیجه فاجعه بار خواهد بود

 

جناب EMP  در مورد استفاده از اپلیکیشن‌ها در ویندوز مطالب ارزنده‌ای بیان فرمودند اما برنامه نویسی با کارآمدی بالاHigh Performance programing(HPC)

بر اساس نیازهای جدی و چالش برانگیزی ایجاد شده که حتی نیازمند ارتباط تنگاتنگ برنامه و سخت افزار است به همین جهت دسترسی

بدون محدودیت به سخت افزار ملاک است. انتخاب محیط ویندوز بدترین انتخاب در این مسیر است چراکه حتی بر طول آرایه‌ها نیز

اعمال نظر شدید میکند چه برسد به سخت افزار!

 

شاید این مثال بی راه نباشد که برای حمل بار سنگینی مسیر خوب و همواری را طراحی کنید ولی بار  را بامحدود کننده‌ای مانند سواری حمل کنید

یا با ماشین باری. لینوکس هم به همان نسبت برای دسترسی و اعمال مدیریت بر سیستم کاراتر و اصطلاحا (حمال‌تر) است تا جایی

که xeon phi فقط بر سیستم لینوکس قابل اجرا است. این محدودیت در GPU  هم به همان نسبت وجود دارد

 

از آن بدتر استفاده‌ از نرم افزاری مانند متلب برای برنامه نویسی موازی است که تصور آن را هم نمی‌توانم کنم

 

کارت  xeon phi

 

 

 

w2jdcfduw57hn799f65e.png

 

نمونه‌ای از چیدمان در یک نود

 

vl3d73gk5xe9kux3qeqz.jpeg

 

 

کارت GPU Nvidia tesla

 

 

sapo9o3wmkpvffxefsce.jpeg

 

3584 هسته در یک کارت!!!!!!!!!!

 

نمونه‌ای از چیدمان در یک نود

 

7djj2udkd0jge1acicod.jpeg

 

ناقابل ۸* ۳۵۸۴=۲۸۶۷۲ هسته

 

 

 

 

  • Upvote 9

به اشتراک گذاشتن این پست


لینک به پست
اشتراک در سایت های دیگر

مطالب بسیار ارزنده‌ای مطرح نمودید

به شخصه از آن استفاده زیادی بردم و مطمئنا بارها آن را مطالعه خواهم کرد

 

 

در مورد محدودیت‌های کارفرما (و استاد) من هم مانند شما این محدودیت را درک کرده‌ام بسیاری از برنامه‌نویسان مجبورند هم به زبان فرترن و هم به زبان C و ++C  برنامه نویسی کنند

 

خوشحال می‌شوم اگر مختصری در مورد زمینه فعالیت خود توضیح دهید تا بتوانیم موضوعات را به صورت مصداقی بررسی کنیم  فرآیند بهینه‌ سازی که شما مورد استفاده

قرار می‌دهید هوشمندانه و کارا است و به شکلی اصولی بهینه سازی را بر روی نرم افزار اجرا می‌نمایید من در حوزه سیالات ، داده‌های بزرگ  وساخت نرم افزارهای

شبیه سازی در حوزه علوم فعال هستم

 

در مورد باگ‌های موجود در نرم‌اقزار و حتی سخت‌افزارها این یک امر روتین است به گونه‌ای که در سخت افزارهای مانندGPU باگهای بسیار بیشماری وجود دارد بالاخص در عملیات

بر روی Floating Point دو الگوریتم ساده ممکن است پاسخ‌های متفاوتی بدهد

 

 

 

در یک مورد که یکی از اساتید الگوریتمی را برای پیاده سازی از ما خواسته‌ بود با یک جستجو ساده متوجه شدم که دو سال پیش این الگوریتم به عنوان باگ GPU معرفی شده‌بود

من هم از همه جا بی خبر، به گمان آنکه مچ استاد را گرفته‌ام مقاله مورد نظر را به وی نشان دادم

او هم با لبخندی به من گفت که عمر باگ‌های سخت افزاری در GPU پس از کشف ۶ ماه است و این مقاله ۲ سال پیش ارائه شده است

و اینگونه فک ما کش آمد

 

جالب آنکه یک بار برای مصاحبه  استخدامی به وزارت دفاع رفته بودم هرچه از پردازش موازی و امکانات آن برای پردازش تصویر برخط گفتم چپ چپ مرا نگاه کردند

یکی پرسید یعنی با کارت گرافیک بازی هم می‌شود این کارها را کرد بعد به پروژه خودم که مربوز به نانو کامپوزیت‌ها بود ودر ارتباط با  زره‌های مایع بود را تشریح کردم

این بار از من پرسیدند فرق مخلوط و ترکیب چیست؟

از تعجب خشکم زد فکر نمیکردم سوال علوم سوم دبستان از من بپرسند فکر کردم مرا مسخره می‌کنند قدرت سخن گفتن از من سلب شده بود متحیر ماندم

از مجموع ۲۳ دکتری ۵۶ فوق لیسانس حدود هزار لیسانس و ... هیچ کس دانش یا تخصصی نداشت که به درد وزارت دفاع بخورد تنها تعدادی از شاغلین

وزارتخانه که  معرفی واحد مربوطه  برای تبدیل وضعیت داشتند از این فیلتر عبور کردند

 

خود من و بسیاری از افرادی که دکتری یا مدارک دیگر خود را در بهترین دانشگاهها اخذ کرده‌اند حاضرند با حقوق کارگری برای هر مرکز تحقیقاتی داخل کشور کار

کنند به شرط آنکه امکان اجرای تحقیقات را به آنها بدهند

 

یکی از دوستانم از بچه‌های ورودی دکتری پیوسته بود اکنون و پس از اخذ یک دکتری از فرانسه و یکی هم از ایران وچون میخواهد در ایران بماند

چاره‌ای جز کار بر روی انیمیشن پیدا نکرده است

دیگری با هزار امید پس از اخذ دکتری از اتریش به ایران آمده در دوره سربازی ..............

دیگری از هلند آمده اکنون .............................

همه ما دغدغه کار برای کشور خود داریم اما سرخوردگی تنها دستاورد این دغدغه است

 

 

نتیجه آنکه هکرهای دست و پاچلفتی عربستان سایت‌های وزارت خارجه را هک می‌کنند مگر ما در کشور متخصص کم داریم؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟

 

یا از همه با مزه تر ساخت این به اصلاح سوپر کامپیوتر‌های ملی است همیشه ۲۰ درصد اعتبار مجموعه‌های محاسباتی (ماشین‌های محاسباتی)

با رتبه بالای ۱۰ به سخت افزارها مربوط است و ۸۰ درصد آن به مجموعه برنامه نویسان و افرادی است که در کنار آن‌ به بهینه‌سازی الگوریتم‌های

مختلف می‌پردازند نکته‌ای که در سوپر کامپیوتر!! شیخ بهایی (دانشگاه صنعتی اصفهان) و گرید ملی (دانشگاه امیر کبیر ) اصلا دیده نشد و تنها یک مجموعه

سخت افزاری خریداری شد تا باز کاری شعاری انجام شده باشد

نتیجه آن شد که اکنون پس از چند سال این مجموعه‌ها از پس هزینه برق خود هم بر نمی‌آیند چه رسد به ارتقای سخت افزار!!!!!!!!!

 یک نمونه نرم افزار توسط این مجموعه‌ها طراحی نشده‌است یا حتی  یک نمونه گزارش performance  این ماشینها و یا اندازه گیری optimized core Number

برای یک الگوریتم!!!!!!

نتیجه دفن شدن این ماشینها با مدیرانشان در طول زمان و البته هدر رفت هزینه‌ای برگشت ناپذیر

 

 

جالب اینکه عربستان در این زمینه در حال پیشی گرفتن از ما است

ویرایش شده در توسط smorteza
  • Upvote 10

به اشتراک گذاشتن این پست


لینک به پست
اشتراک در سایت های دیگر

درود به دوست گرامی

با این توضیحاتی که شما دادید احساس می کنم که درجه علمی شما خیلی بالا باشد. حداقل خیلی بالاتر از من اما جوان هستید.

 

 

در مورد استخدام در صنایع دفاع من نمی دانم که چطور یک فردی مثل شما را نگرفته اند و این شانس را از دست داده اند. احتمالا منتظر بوده اند یک مشابه خاوری بیاید تقاضا بدهد. اما همین افرادی که می فرمایید چند بار برای آموزش پرسنل و برخی از پروژه ها از من کمک خواسته اند و من با هیچ مشکلی برای ورود به مجموعه آنها مواجه نشدم. البته طبیعی بود من قصد استخدام شدن نداشتم در آنجا.

 

در مورد ابر رایانه ملی هیچ نگویید که من بابت آن کلی بد و بیراه شنیدم و متهم به بی سوادی شدم. حرف من این بود که توجیه شما برای پخش یک کلاستر کوچک در چند استان چه بود که به جای آن از یک کلاستر کوچک از GPU ها استفاده نکردید

اون موقع خانم سلطان خواه معاون فناوری ریاست جمهوری بود و وقتی در سیما از او پرسیدند که کاربرد این به اصطلاح ابر رایانه در چیست، صدایش می لرزید و هیچ پاسخی نداشت. یک کلام می توانست بگوید "نفت"


اواخر 2011 یکی از دانشجویان من در یک شرکت نفتی یک سری کمک از من خواست برای یک پروژه نفتی بین المللی. من فقط برای کمک به دانشجوی سابقم رفتم آنجا و آن موقع 10 سالی بود که من دنبال کار پردازش موازی واقعی می گشتم

 

 

خلاصه خاطره بسیار بدی برای من به جا ماند

 

سلام مجدد بر استاد ارجمند

 

بر من مسجل شده که شما استادی زبر دست در این امرهستید و در حسرت این هستم که چرا افتخار شاگردی در حضور شما را نداشته‌ام

 

ایکاش امکان این بود تا ویدئو کلاسهای خود را بر روی سایتهایی چون مکتب‌خانه بگذارید تا من و سایر دوستان هم بتوانیم از آن استفاده کنیم

 

خاطره بسیار جالبی در مورد لغت کلاستر دارم که شنیدن آن خالی از لطف نیست

روزی یک کد نرم افزاری برای تحلیل خواص مکانیکی (مانند ویسکوزیته) سیالات غیر نیوتنی به نگارش در آورده بودم

برای موازی سازی و تجاری سازی آن به دنیال فاند (پوشش مالی) بودم تا هم بتوانم بحث GUI ، موازی سازی و طراحی ماشین نمونه برای

اجرا بر پایه کارت گرافیکی و همینطور بحث آموزش را پیش ببرم

با توجه به نوع کار به سراغ ستاد نانو رفتم. در ستاد نیز  من را به بخش پشتیبانی از همایشها ارجاع دادند به صورت حضوری ملاقاتی با مسئول آن

داشتم و به طور مفصل عملکرد آن را توضیح دادم و گفتم اگر برای گرید ملی در سال ۸۵ چهل میلیارد تومان (۴۰ ملیون دلار) هزینه کردید و ۴۰۰۰

هسته پردازش ایجاد کردید من برنامه ای تحویل میدهم که با ۲۰۰۰ دلار هزینه بر روی یک کلاستر با ۳۵۰۰ هسته اجرا شود و کلاستر راهم به شما می‌دهم

 

پس از حدود ۲ ساعت توضیح، مسئول محترم رو به من کرد و گفت ببخشید این کلاستر که شما می‌فرمایید چه نوع نرم افزاری هست!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

 

در نهایت به من گفتند نرم افزار به درد ما نمی خورد اگر می توانید یک چیزی درست کنید و روی میز بگذارید ما کمکتان می‌کنیم

پرسیدم یعنی اگر من caso4 به صورت گرد نانو تولید کنم و رو میز بگزارم شما برای ساخت کارخانه حمایت میکنید؟؟

پاسخ مٍثبت بود آنچه من گفتم گچ ساختمانی بود که نانو پودر آن به هیچ دردی نمی‌حورد مانند بسیاری از محصولات دیگر که

وام چند میلیاردی گرفتند و امروز اسم آنها فقط باقی است

 

 

خانم سلطان‌خواه را دیگر نگویید که برای پروژه های زیر ۵۰ میلیارد اصلا وقت گوش دادن  و فکرکردن ندارند

 

 

امیدوارم جناب حامد اف تاپیک را ادامه دهند تا بیش از این سر درد دل را باز نکنیم

 

امیدوارم فرصت این را داشته‌باشید تا منابعی برای مطالعه من و سایر دوستان معرفی کنید

 

در ضمن شما کامپایلر PGI را ترجیح می‌دهید آیا این کامپایلرها مزیت خاصی بر کامپایلرهای اینتل مانند ICC , Ifort

و همچنین کاوپایلرهای استاندارد gcc و یا ++g دارند؟ با توجه به آنکه این کامپایلرها فقط در default optimization  

و برخی امکانات جانبی با هم فرق دارند؟

  • Upvote 9

به اشتراک گذاشتن این پست


لینک به پست
اشتراک در سایت های دیگر

امیدوارم فرصت این را داشته‌باشید تا منابعی برای مطالعه من و سایر دوستان معرفی کنید

 

در ضمن شما کامپایلر PGI را ترجیح می‌دهید آیا این کامپایلرها مزیت خاصی بر کامپایلرهای اینتل مانند ICC , Ifort

و همچنین کاوپایلرهای استاندارد gcc و یا ++g دارند؟ با توجه به آنکه این کامپایلرها فقط در default optimization  

و برخی امکانات جانبی با هم فرق دارند؟

درود به دوست گرامی

در مورد کامپایلر ها باید بگویم که خیلی مهم هستند. در واقع کامپایلر بهترین دوست یک بهینه ساز هست.

ما باید به ساز کامپایلری که داریم برقصیم و قبل از هرگونه برنامه سازی باید اسنادش را کامل بخوانیم تا به آن کمک کنیم که بهترین کد باینری ممکن را برای ما بسازد.

 

کامپایلر اینتل برای زبان C دچار مشکلاتی است که از سال 2007 تا 2011 ادامه داشت و در واقع باگ ایندکس بدی دارد. من سال 2007 برای اینتل یک نامه نوشتم و خطا را گزارش دادم که اینها از من یک testcase خواستند و من هم نوشتم و برایشان فرستادم که در این Testcase، فقط کامپایلر میکروسافت درست کار می کرد و اینتل و VectorC درست کار نمی کردند. بعد از مدتی Andrew E. Dakowsky که در واقع Head developer کامپایلر اینتل بود به من خبر داد که مشکل حل شده اما بعد از چند سال بعد که من کامپایلر جدید گیر آوردم، دیدم مشکل سر جایش هست هنوز.

 

کامپایلر اینتل در کنار Intel Parallel Studio یک ابزار بسیار قدرتمند در اختیار شما قرار می دهد که برای معماری های مختلف اینتل می توانید کد ویژه کامپایل بکنید که این یعنی شما از جدید ترین دستورالعمل های موجود در این سخت افزار ها (مثلا Skylake i7 ) می توانید استفاده بکنید و برنامه شما دارای کمترین Conditional jump و بهترین کارایی ممکن می شود.(دستورات پرش شزطی پدر معماری pipeline را در می آورند)

کامپایلر های دیگر هیچ کدام چنین امکانی را به شما نمی دهند.

و اما PGI این شرکت در زمینه HPC پیشرو هست و همیشه آخرین تکنولوژی ها نظیر OpenAccelerator ابتدا روی آن می آید و سپس به دیگران سرایت می کند. علاوه بر این PGI پردازنده های AMD را هم خوب می شناسد و این امکان را به شما می دهد که مثلا برای پردازنده بولدوزر خود مطابق با ویژگی های خاص معماری آن کامپایل بکنید که این یعنی پولی که برای سخت افزار داده اید به صورت بهینه استفاده خواهد شد.

PGI گزینه IEEE754 را هم برای اعداد ممیز شناور دارد که در تشخیص خطای محاسباتی خیلی می تواند کمک بکند. با این ابزار می توانیم مطمئن بشویم که تکرار نشدن پاسخ محاسبات با ورودی ثابت در کلاستر ناشی از خطای محاسباتی بوده یا اینکه ناشی از این بوده که ترتیب اجرای Thread ها در نتیجه کار موثر بوده که به معنی data decomposition بد یا برنامه سازی بد است.

خلاصه ابزار خوبی است اگر همیشه نسخه جدید آن را در اختیار داشته باشید

یک قانونی ما داریم که می گوید: we never trust to any compiler به ویژه در کامپایلرهای سخت افزار.

همه کامپایلرها مشکلاتی دارند که با استفاده از طی کردن مسیر معکوس از خروجی به سورس کد امکان تحقیق در مورد صحت کار کامپایلر را داریم که اگر چه برای سخت افزار این کار شدنی است اما برای نرم افزار با اینکه نرم افزار هایی مثل Boomrang و IDA l موجودند اما به هیچ وجه مناسب نیستند به ویژه برای برنامه های OOP.

بنابراین ما مجبوریم که از کامپایلرهایی استفاده بکنیم که دارای استاندارد باشند و بالاترین کیفیت را داشته باشند. تا جایی که من می دانم نه اینتل و نه PGI و نه GCC استاندارد ایمنی ندارند اما حداقل کار بیشتری روی اینتل و PGI با بودجه خیلی بیشتر انجام می شود.

 

در مورد GCC هم باید بگویم که خوب است اما نباید با یک کامپایلری که پشتیبانی مالی خیلی قوی دارد مقایسه بشود. با کامپایلرهای خوب که دارای استاندارد ایمنی هستند بیشترین باگ را می توان از کد بیرون کشید و بعد از آن دیگر باید به امید تست های استاتیک و داینامیک و ابزارهایی مثل stackanalyser و ... بود برای جا نگذاشتن خطا. آخرش هم در ازای هر 1000 خط برنامه 8 خطا جا می ماند!!!

  • Upvote 10

به اشتراک گذاشتن این پست


لینک به پست
اشتراک در سایت های دیگر

درود به دوست گرامی

در مورد کامپایلر ها باید بگویم که خیلی مهم هستند. در واقع کامپایلر بهترین دوست یک بهینه ساز هست.


در مورد GCC هم باید بگویم که خوب است اما نباید با یک کامپایلری که پشتیبانی مالی خیلی قوی دارد مقایسه بشود. با کامپایلرهای خوب که دارای استاندارد ایمنی هستند بیشترین باگ را می توان از کد بیرون کشید و بعد از آن دیگر باید به امید تست های استاتیک و داینامیک و ابزارهایی مثل stackanalyser و ... بود برای جا نگذاشتن خطا. آخرش هم در ازای هر 1000 خط برنامه 8 خطا جا می ماند!!!

 

سلام بر استاد گرامی

 

ممنون می‌شوم تعریفی از خطا داشته باشید آیا منظور شما فقط خطا در floating point است یا حتی مواردی چون crash برنامه را نیز شامل می‌شود؟

متاسفانه در برنامه نویسی علمی بسیاری از این ظرایف مورد تووجه قرار نمی‌گیرد نمونه آن نیز استفاده‌از goto در این نرم افزارها است شاید

بسیاری از این موارد هم به مسایل مالی مربوط باشد در بسیاری موارد طراح، نویسنده و آزمایشگر نرم افزار یک نفر است و باید مانند آچار

فرانسه عمل کند.

 

به نظر شما decompilerها برای نرم افزارهای تجاری تاچه حد موفق عمل می‌کنند

 

اگر مقدور باشد چند نمونه از باگ‌های کامپایلرها را در حد مقدورات زمانیتان تشریح کنید ممنون می‌شوم

تا جایی که من دیده‌ام همه جا فقط باگ معروف به پاتریوت ( رخ داده در زمان جنگ طوفان صحرا) را به عنوان

باگ ارائه میکنند اما گویا مشکلات فراتر از این موارد است ممنون می‌شوم مثالهای بیشتری معرفی نمایید

 

 

ممنون

  • Upvote 1

به اشتراک گذاشتن این پست


لینک به پست
اشتراک در سایت های دیگر

لطفا وارد سیستم شوید برای ارسال نظر

شما قادر خواهید بود بعد از ورود به سیستم این نظر را ترک نمایید



ورود به سیستم