محققان سیستم جدیدی توسعه دادند که می تواند برنامه های کامپیوتری را سریعتر اجرا کند و در عین حال دقت را تضمین کند. — ScienceDaily


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

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

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

نیکوس واسیلاکیس، دانشمند تحقیقاتی در کامپیوتر می گوید: “مردم زیادی هستند که از این نوع برنامه ها استفاده می کنند، مانند دانشمندان داده، زیست شناسان، مهندسان و اقتصاددانان. اکنون آنها می توانند به طور خودکار برنامه های خود را بدون ترس از اینکه نتایج نادرست دریافت کنند، تسریع کنند.” آزمایشگاه علم و هوش مصنوعی (CSAIL) در MIT.

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

واسیلاکیس نویسنده ارشد آخرین مقاله تحقیقاتی این گروه است که شامل همکار MIT و دانشجوی فارغ التحصیل CSAIL، تمام مصطفی است و در سمپوزیوم USENIX در زمینه طراحی و پیاده سازی سیستم های عامل ارائه خواهد شد. از نویسندگان همکار می توان به نویسنده اصلی، کنستانتینوس کالاس، دانشجوی کارشناسی ارشد اشاره کرد. در دانشگاه پنسیلوانیا؛ یان بیلاک، دانش آموز دبیرستان استاشیک ورشو؛ دیمیتریس کارنیکیس، مهندس نرم افزار در آزمایشگاه آرنو؛ Thurston HY Dang، فوق دکترای سابق MIT که اکنون مهندس نرم افزار در گوگل است. و مایکل گرینبرگ، استادیار علوم کامپیوتر در موسسه فناوری استیونز.

مشکلی چند دهه ای

این سیستم جدید که به نام PaSh شناخته می‌شود، بر برنامه‌ها یا اسکریپت‌هایی متمرکز است که در پوسته یونیکس اجرا می‌شوند. اسکریپت دنباله ای از دستورات است که به کامپیوتر دستور می دهد تا یک محاسبه را انجام دهد. موازی سازی صحیح و خودکار اسکریپت های پوسته مشکلی است که محققان برای دهه ها با آن دست و پنجه نرم کرده اند.

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

واسیلاکیس می افزاید: «مردم همچنین از توسعه در زبان های برنامه نویسی مختلف لذت می برند، بنابراین ترکیب همه این مؤلفه ها در یک برنامه واحد چیزی است که اغلب اتفاق می افتد».

در حالی که پوسته یونیکس اسکریپت های چند زبانه را فعال می کند، ساختار انعطاف پذیر و پویا آن موازی سازی این اسکریپت ها با استفاده از روش های سنتی را دشوار می کند.

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

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

یک راه حل به موقع

برای غلبه بر این مشکل، PaSh از یک مرحله پیش پردازش استفاده می کند که حاشیه نویسی های ساده را روی اجزای برنامه قرار می دهد که فکر می کند می توانند موازی شوند. سپس PaSh سعی می‌کند تا آن بخش‌های اسکریپت را در حین اجرای برنامه، دقیقاً در لحظه‌ای که به هر جزء می‌رسد، موازی کند.

این امر از مشکل دیگری در برنامه نویسی پوسته جلوگیری می کند – پیش بینی رفتار یک برنامه از قبل غیرممکن است.

با موازی کردن اجزای برنامه “درست به موقع”، سیستم از این موضوع جلوگیری می کند. این می تواند به طور مؤثری سرعت مؤلفه های بسیار بیشتری را نسبت به روش های سنتی که سعی در انجام موازی سازی از قبل دارند، افزایش دهد.

موازی‌سازی به‌موقع همچنین تضمین می‌کند که برنامه تسریع‌شده همچنان نتایج دقیقی را برمی‌گرداند. اگر PaSh به یک مؤلفه برنامه برسد که قابل موازی کردن نباشد (شاید وابسته به مؤلفه ای باشد که هنوز اجرا نشده است)، به سادگی نسخه اصلی را اجرا می کند و از ایجاد خطا جلوگیری می کند.

واسیلاکیس می‌گوید: «بدون توجه به مزایای عملکرد – اگر قول بدهید به جای یک سال کاری را در یک ثانیه اجرا کنید – اگر احتمال بازگشت نتایج نادرست وجود داشته باشد، هیچ‌کس از روش شما استفاده نخواهد کرد.

کاربران برای استفاده از PaSh نیازی به تغییر ندارند. آنها فقط می توانند این ابزار را به پوسته یونیکس موجود خود اضافه کنند و به اسکریپت های خود بگویند که از آن استفاده کنند.

شتاب و دقت

محققان PaSh را بر روی صدها اسکریپت، از برنامه های کلاسیک تا مدرن، آزمایش کردند و حتی یک مورد را شکست. این سیستم در مقایسه با اسکریپت‌های بی‌نظیر، به‌طور متوسط ​​شش برابر سریع‌تر برنامه‌ها را اجرا می‌کرد و حداکثر سرعت آن نزدیک به 34 برابر بود.

همچنین سرعت اسکریپت هایی را که سایر رویکردها قادر به موازی سازی آن نبودند، افزایش داد.

واسیلاکیس می‌گوید: “سیستم ما اولین سیستمی است که این نوع دگرگونی کاملاً صحیح را نشان می‌دهد، اما یک مزیت غیرمستقیم نیز وجود دارد. نحوه طراحی سیستم ما به سایر محققان و کاربران در صنعت اجازه می‌دهد تا از این کار استفاده کنند.”

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

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

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



منبع

Matthew Newman

Matthew Newman Matthew has over 15 years of experience in database management and software development, with a strong focus on full-stack web applications. He specializes in Django and Vue.js with expertise deploying to both server and serverless environments on AWS. He also works with relational databases and large datasets
[ Back To Top ]