کمبود حافظه هنگام اجرای برنامه در متلب – پادکست پرسش و پاسخ
امروزه، حجم دادههایی که افراد برای تحلیل مورد استفاده قرار میدهند افزایش قابل توجهی داشته است. همین امر، منجر به مشکلات و چالشهایی ضمن نوشتن و اجرای برنامههایی شده است که با حجم انبوهی از دادهها کار میکنند. یکی از این مشکلات، مساله اجرا نشدن برنامه در نرمافزار «متلب» (MATLAB) و نمایش خطای Out of Memory است. کاربران زیادی با این پرسش مواجه هستند که چگونه میتوان مشکل کمبود حافظه هنگام اجرای برنامه در متلب را حل کرد. دکتر «سید مصطفی کلامی هریس»، در پادکستی که در ادامه آمده، به این پرسش به طور مشروح پاسخ داده است. نسخه متنی این پادکست نیز در همین مطلب قرار دارد. البته، منبع اصلی همچنان فایل صوتی محسوب میشود.
پادکست پیرامون کمبود حافظه هنگام اجرای برنامه در متلب
ذخیره کردن این فایل صوتی: لینک دانلود
نسخه نوشتاری
یکی از مشکلات رایجی که که افراد گزارش میکنند، پیرامون مسالهای است که در اجرای برنامههای خود در «متلب» (MATLAB) دارند. وقتی حجم دادههای مساله و در واقع، حجم مساله از یک اندازه بزرگتر میشود، دیگر برنامه اجرا نمیشود و پیام خطای «کمبود حافظه» (Out of Memory) به کاربر نمایش داده میشود. یعنی حافظه تمام شده است و به اندازه کافی جا ندارد. در اینجا، منظور از «حافظه» (Memory)، «رم» (RAM) است. یعنی، حافظهای که برنامهها در آن اجرا میشوند. بنابراین، اگر رم به اندازه کافی وجود نداشته باشد، طبیعتا گنجایش لازم وجود ندارد و برنامهها نمیتوانند اجرا شوند.
چند راهکار برای حل این مساله وجود دارد. البته ابتدا باید بررسی شود که واقعا به میزان خاصی از رم نیاز باشد. گاهی، برنامه درست نوشته نشده و محاسبات و دادههای اضافی ضمن اجرای آن لود میشوند. بعضا در این شرایط میتوان موضوع را در همین مرحله حل کرد. اما گاهی چنین موضوعی حل شده است؛ اما، مثلا یک کامپیوتر با هشت گیک رم موجود است ولی برنامه کاربر به بیست گیگ رم احتیاج دارد.
به دو روش میتوان این مساله را حل کرد. یکی اینکه از کامپیوتر دیگری استفاده شود که خب فرض میشود امکان تغییر و ارتقا سختافزار وجود ندارد. روش دیگر این است که «حافظه مجازی» (Virtual Memory) به سیستم اضافه شود. یعنی، بخشی از «درایو دیسک سخت» (Hard Disk Drive) به عنوان رم تعریف شود. این امکان، در بخش «System Properties» در کنترل پنل تعبیه شده است. در نسخههای متفاوت ویندوز، امکان دارد جای آن متفاوت باشد. معمولا میتوان آن را با کلیک راست روی «My Computer» و از System Properties، بخش Advance، در قسمت Performance پیدا کرد. با جستجوی عبارتهایی مانند «Add Virtual Memory» در گوگل نیز میتوان روش آن را پیدا کرد.
با این قابلیت، به عنوان مثال اگر پارتیشن هارد ۳۰ گیگ فضا خالی دارد، ۳۰ گیگ به رم میتوان اضافه کرد تا در واقع از بخشی از این هارد دیسک نیز به عنوان RAM استفاده کند. البته اگر هارد کامپیوتر فرد از نسخههای قدیمی باشد، سرعت آن پایین است و این موجب افت کیفیت اجرای برنامه میشود.
اما اگر هارد از مدلهای جدید و SSD باشد، به خوبی میتواند اثرگذار باشد و سرعت همچون وقتی که از هاردهای کلاسیک استفاده میشود، خیلی کاهش پیدا نمیکند. البته، به هر حال استفاده از هارد دیسک به عنوان حافظه مجازی نمیتواند به خوبی رم باشد.
این مورد را حتما باید در نظر داشت، ولی به هر حال مشکل را حل میکند. البته در شرایط بیان شده، کمی کارایی کاهش پیدا میکند ولی به هر حال میتوان با استفاده از کامپیوتر موجود، کار را انجام داد و برنامه را اجرا کرد. یعنی در واقع، گاهی ناگزیر باید این کار را انجام داد. یعنی، بخشی از هارد، یا یک یا چند پارتیشن را، به عنوان یک رم ثانویه و در واقع، یک رم مجازی (Virtual Memory) تخصیص داده و سایر کارها را خود سیستم عامل جلو میبرد.
البته این را نیز باید مد نظر داشت که بعد از انجام این تنظیمات، باید متلب را بست و دوباره باز کرد و گاهی حتی نیاز میشود کامپیوتر را Reset کرد. این موضوع، بستگی به «پیکربندی» (Configuration) سیستم کاربر دارد. برای حصول اطمینان از اینکه این تغییرات اعمال شده است، میتوان در Task Manager و با استفاده از کلیدهای ترکیبی Ctrl+Shift+Escape، میتوان آمارهای مربوط به سیستم را مشاهده کرد. در این بخش، میتوان میزان حافظه در دسترس (Available)، میزان حافظه مجازی (Virtual Memory) و حافظه فیزیکی (Physical Memory) را مشاهده کرد.
به هر حال، مساله Out of Memory نه تنها در متلب که در بقیه نرمافزارها نیز ممکن است به وقوع بپیوندد و آن را میتوان بدین شکل حل کرد. از آنجا که بسیاری از دانشجویان از متلب استفاده میکنند و این موضوع، مشکل شایعی در این نرمافزار است، راه حل آن را بیان کردم.
برای دانلود کردن و شنیدن دیگر پادکستهای دکتر سید مصطفی کلامی هریس در مجله فرادرس، روی این لینک [+] کلیک کنید.
اگر نوشته بالا برای شما مفید بوده است، آموزشهای زیر نیز به شما پیشنهاد میشوند:
- مجموعه آموزشهای متلب MATLAB
- آموزش دادهکاوی یا Data Mining در متلب
- مجموعه آموزشهای دادهکاوی و یادگیری ماشین
- الگوریتمهای بهینهسازی هوشمند
^^