سیستم‌عامل ابررایانه
سیستم عامل ابر رایانه یک سیستم عامل است که برای ابررایانه‌ها ساخته شده‌است. از اواخر قرن بیستم، به دلیل تغییرات اساسی در معماری ابر رایانه، سیستم‌های عامل ابر رایانه دچار تغییرات اساسی شده‌اند. با وجود اینکه سیستم عامل‌های اولیه برای دستیابی به سرعت برای هر ابر رایانه به‌طور اختصاصی ایجاد می‌شدند، به مرور روند از سیستم عامل‌های داخلی خارج و به سمت نوعی از لینوکسنزدیک شده‌است که همه ابر رایانه‌های موجود در لیست TOP500 را در نوامبر ۲۰۱۷ اجرا کند.
با توجه به اینکه ابررایانه‌های موازی و گسترده مدرن معمولاً با استفاده از چندین نوع گره، محاسبات را از سایر سرویس‌ها جدا می‌کنند، آنها معمولاً سیستم عامل‌های مختلفی را روی گره‌های مختلف اجرا می‌کنند. برای مثال از یک هسته سبک و کوچک و کارآمد مانند هسته گره محاسبه (CNK) یا گره محاسبات Linux (CNL) در گره‌های محاسبه، همچنین در یک سیستم بزرگتر مانند مشتقات لینوکس در سرور و گره‌های ورودی / خروجی (I / O) استفاده می‌کنند.
در حالی که در یک سیستم رایانه ای چند کاربره سنتی، برنامه‌ریزی کار در واقع یک مشکل تعیین تکلیف برای پردازش و منابع محیطی است، اما در یک سیستم کاملاً موازی، سیستم مدیریت کار به مدیریت تخصیص منابع محاسباتی و ارتباطی و همچنین کلنجار رفتن با عملکردهای اجتناب ناپذیر نادرست سخت‌افزارها در هنگام حضور ده‌ها هزار پردازنده، نیاز دارد.
اگرچه اکثر ابر رایانه‌های مدرن از سیستم عامل لینوکس استفاده می‌کنند، هر سازنده تغییرات خاص خود را در مشتقات لینوکس مورد استفاده خود ایجاد کرده‌است و هیچ استاندارد صنعتی وجود ندارد، بخشی به این دلیل است که تفاوت در ساختارهای سخت‌افزاری مستلزم تغییراتی برای بهینه‌سازی سیستم عامل به هر طراحی سخت‌افزاری می‌باشد.
در روزهای اولیه ابر رایانش، مفاهیم اساسی معماری به سرعت در حال پیشرفت بودند و نرم‌افزارهای سیستمی مجبور بودند نوآوری‌های سخت‌افزاری را دنبال کند چرا که معمولاً به سرعت تغییر می‌کردند. در سیستم‌های اولیه، سیستم عامل‌ها متناسب با هر ابر رایانه ای طراحی می‌شدند تا سرعت خود را بدست آورند، اما در توسعه آنها، چالش‌های کیفیت نرم‌افزار در بسیاری از موارد هزینه و پیچیدگی توسعه نرم‌افزاری سیستم به همان اندازه که مسئله سخت‌افزاری، جدی ظاهر شدند.
در دهه ۱۹۸۰ هزینه توسعه نرم‌افزار در Cray برابر بود با آنچه آنها برای سخت‌افزار خرج کردند و این روند تا حدی مسئول دور شدن از سیستم عامل‌های داخلی به منظور انطباق با نرم‌افزارهای عمومی بود. اولین موج تغییرات سیستم عامل در اواسط دهه ۱۹۸۰ اتفاق افتاد، زیرا سیستم عامل‌های خاص فروشندگان به نفع یونیکس کنار گذاشته شدند. با وجود شک و تردید اولیه، این انتقال موفقیت‌آمیز بود.
در اوایل دهه ۱۹۹۰، تغییرات عمده ای در نرم‌افزار سیستم ابر رایانه در حال رخ دادن بود.در این زمان، استفاده روزافزون از یونیکس تغییراتی در نحوه مشاهده نرم‌افزار سیستم ایجاد کرده بود. استفاده از یک زبان سطح بالا (C) برای پیاده‌سازی سیستم عامل، و اتکا به رابط‌های استاندارد در تضاد با رویکردهای زبان اسمبلی گذشته بود.همان‌طور که فروشندگان سخت‌افزار یونیکس را با سیستم‌های خود تطبیق می‌دادند، ویژگی‌های جدید و مفیدی نیز به یونیکس اضافه می‌شد، به عنوان مثال سیستم‌های فایلی سریع و برنامه‌ریزهای فرایند قابل تنظیم. با این حال، تمام شرکت‌هایی که یونیکس را اقتباس کردند، به جای همکاری در یک استاندارد صنعتی برای ایجاد «یونیکس برای ابر رایانه ها»، تغییرات منحصر به فردی در آن ایجاد کردند. این امر تا حدی به این دلیل بود که تفاوت در معماری آنها این تغییرات را برای بهینه‌سازی یونیکس برای هر معماری ایجاب می‌کرد.
بنابراین با پایدار شدن سیستم عامل‌های عمومی منظوره، ابررایانه‌ها شروع به قرض گرفتن و تطبیق کدهای سیستمی مهم از آنها کردند و به مجموعه ای از توابع ثانویه که همراه آنها بود، اعتماد کردند و نیازی به اختراع مجدد چرخ نبودند.با این حال، در همان زمان اندازه کد برای سیستم عامل‌های هدف عمومی به سرعت در حال رشد بود. زمانی که کد مبتنی بر یونیکس به ۵۰۰۰۰۰ خط رسیده بود، نگهداری و استفاده از آن یک چالش بود. این منجر به حرکت به استفاده از ریز هسته‌هایی شد که از حداقل عملکردهای سیستم عامل استفاده می‌کردند. سیستم‌هایی مانند Mach در دانشگاه کارنگی ملون و ChorusOS در INRIA نمونه‌هایی از میکرو هسته‌های اولیه بودند.
هنگامی که ابر رایانه‌ها انواع مختلف گره را توسعه می‌دهند، به عنوان مثال محاسبه گره‌ها در مقابل گره‌های ورودی / خروجی، جداسازی سیستم عامل به اجزای جداگانه ضروری شد؛ بنابراین ابررایانه‌های مدرن معمولاً سیستم عامل‌های مختلفی را روی گره‌های مختلف اجرا می‌کنند، مثلاً از یک هسته کوچک و کارآمد مانند CNK یا CNL در گره‌های محاسباتی استفاده می‌کنند، اما یک سیستم بزرگتر مانند مشتقات لینوکس در سرورها و گره‌های ورودی / خروجی دارند.
CDC 6600 که به‌طور کلی اولین ابر رایانه در جهان محسوب می‌شود، دارای سیستم عامل Chippewa است که سپس در رایانه‌های مختلف دیگر سری CDC 6000 شد. Chippewa یک سیستم کنترل کار نسبتاً ساده بود که از CDC 3000 اولیه به دست آمده بود، اما سیستم‌های بعدی KRONOS و SCOPE را تحت تأثیر قرار داد.
اولین Cray-1 بدون هیچ سیستم عامل یا هیچ نرم‌افزار دیگری به آزمایشگاه Los Alamos تحویل داده شد. Los Alamos نرم‌افزار کاربردی را برای آن و سیستم عامل توسعه داد. سپس سیستم اصلی اشتراک زمانی برای Cray 1، سیستم تقسیم زمان Cray (CTSS)، در آزمایشگاه‌های Livermore به عنوان یک تبار مستقیم از سیستم Sharming Time Livermore (LTSS) برای سیستم عامل CDC 6600 از بیست سال قبل توسعه داده شد.
همان‌طور که از رشد هزینه برای توسعه نرم‌افزار در Cray تا برابری با هزینه سخت‌افزاری آن در دهه ۱۹۸۰ مشهود است، در توسعه ابر رایانه‌ها، به زودی افزایش هزینه‌های نرم‌افزار غالب شد. این روند تا حدی مسئول دور شدن از سیستم عامل Cray داخلی به سیستم UNICOS مبتنی بر Unix بود. در سال ۱۹۸۵، Cray-2 اولین سیستمی بود که با سیستم عامل UNICOS راه اندازی شد.
تقریباً در همان زمان، سیستم عامل EOS توسط ETA Systems برای استفاده در ابر رایانه‌های ETA10 توسعه داده شد.EOS که در زبان سیبیل، (یک زبان Pascal مانند از شرکت Control Data Corporation) نوشته شد، مشکلات پایداری در ایجاد سیستم عامل‌های پایدار برای ابر رایانه‌ها را برجسته کرد و در نهایت یک سیستم Unix مانند در همان دستگاه ارائه شد. دروس آموخته شده از توسعه نرم‌افزار سیستم ETA شامل سطح بالایی از خطر مرتبط با توسعه یک سیستم عامل جدید فوق رایانه و مزایای استفاده از یونیکس با پایگاه گسترده کتابخانه‌های نرم‌افزار سیستم است.
در اواسط دهه ۱۹۹۰، علی‌رغم سرمایه‌گذاری موجود در سیستم عامل‌های قدیمی، روند استفاده از سیستم‌های مبتنی بر یونیکس بود که استفاده از رابط‌های گرافیکی کاربر تعاملی (GUI) را برای محاسبات علمی در چندین سیستم عامل تسهیل کرد. حرکت به سمت سیستم عامل کالایی مخالفانی داشت که سرعت و تمرکز توسعه لینوکس را به عنوان مانع اصلی در برابر پذیرش دانستند. همان‌طور که یکی از نویسندگان نوشت: «به احتمال زیاد سرعت Linux گرفته خواهد شد، اما اکنون سیستم‌های مقیاس بزرگی داریم». با این وجود، این روند همچنان در حال شتاب گرفتن بود و تا سال ۲۰۰۵، تقریباً همه ابر رایانه‌ها از برخی سیستم عامل‌های یونیکس مانند استفاده می‌کردند. این انواع یونیکس شامل IBM AIX، سیستم منبع باز لینوکس و سایر سازگاری‌ها مانند UNICOS از Cray بود. با پایان قرن بیستم، برآورد می‌شد که لینوکس بالاترین سهم از حوزه ابر رایانه را داشته باشد.
ابر رایانه IBM Blue Gene از سیستم عامل CNK در گره‌های محاسبه استفاده می‌کند، اما از هسته تغییر یافته مبتنی بر Linux به نام I / O Node Kernel (INK) در گره‌های ورودی/خروجی استفاده می‌کند. CNK یک هسته سبک است که روی هر گره اجرا می‌شود و از یک برنامه کاربردی برای یک کاربر در آن گره پشتیبانی می‌کند. بخاطر کارایی بهینه، طراحی CNK ساده و حداقلی حفظ شد، با حافظه فیزیکی به صورت ایستا نگاشت می‌شد و CNK به برنامه‌ریزی یا تغییر زمینه نه نیاز داشت و نه آن را فراهم سازی می‌کرد. CNK حتی فایل‌های ورودی / خروجی را بر روی گره محاسبه پیاده‌سازی نمی‌کند، بلکه این پرونده را به گره‌های اختصاصی ورودی / خروجی اختصاص می‌دهد. با این حال، با توجه به اینکه در گره‌های محاسبه چندگانه Blue-Gene یک گره ورودی / خروجی واحد به اشتراک گذاشته می‌شود، سیستم عامل گره ورودی/خروجی نیاز به چند وظیفه دارد، از این رو سیستم عامل مبتنی بر Linux انتخاب می‌شود.
در حالی که در سیستم‌های رایانه ای چند کاربره سنتی و ابررایانه‌های اولیه، برنامه‌ریزی کار در واقع یک مشکل برنامه‌ریزی وظیفه برای پردازش و منابع محیطی بود، در یک سیستم کاملاً موازی، سیستم مدیریت کار نیاز به مدیریت تخصیص منابع محاسباتی و ارتباطی دارد. تنظیم برنامه‌ریزی کار و سیستم عامل در پیکربندی‌های مختلف یک ابر رایانه ضروری است. یک زمانبند کاری موازی معمولی دارای یک برنامه‌ریز اصلی است که به تعدادی از برنامه ریزان زیرمجموعه خود دستور می‌دهد که کارهای موازی را راه اندازی، نظارت و کنترل کنند، و به‌طور دوره ای گزارشاتی را دربارهٔ وضعیت پیشرفت شغل از آنها دریافت می‌کند.
برخی، اما نه همه برنامه ریزان ابر رایانه سعی در حفظ محل اجرای کار دارند. برنامه‌ریز PBS Pro که در سیستم‌های Cray XT3 و Cray XT4 استفاده می‌شود سعی در بهینه‌سازی موقعیت مکانی در اتصال سه بعدی توروس ندارد، بلکه به سادگی از اولین پردازنده موجود استفاده می‌کند. از سوی دیگر، برنامه‌ریز IBM در ابر رایانه‌های Blue Gene با اختصاص دادن وظایفی از همان برنامه به یک یا چند بخش میانی از یک گروه گره ۸*۸*۸، با بهره‌گیری از مکان و به حداقل رساندن مشاجره شبکه انجام می‌شود. برنامه‌ریز Slurm Workload Manager از بهترین الگوریتم متناسب استفاده می‌کند و برای بهینه‌سازی محلی بودن وظایف، برنامه‌ریزی منحنی Hilbert را انجام می‌دهد. چندین ابر رایانه مدرن مانند Tianhe-2 از Slurm استفاده می‌کنند، که داوری رقابت برای منابع موجود در سیستم را بر عهده دارد. Slurm منبع باز، مبتنی بر Linux، بسیار مقیاس پذیر است و می‌تواند هزاران گره را در یک خوشه رایانه با توان پایدار بیش از ۱۰۰۰۰۰ کار در ساعت مدیریت کند.