ویرایشگر سختافزار
تمام برنامههای رایانهای از جمله OghmaNano روی سختافزار محاسباتی فیزیکی اجرا میشوند. ترکیبهای زیادی از سختافزار وجود دارد که میتوانند در هر رایانهای باشند، بعضی رایانهها تعداد زیادی هسته CPU دارند در حالی که برخی دیگر فقط یک هسته دارند. به همین ترتیب رایانهها با مقادیر متفاوتی از حافظه، فضای دیسک سخت و GPU عرضه میشوند. برای کمک به کاربر جهت بهرهبرداری بهتر از OghmaNano، یک ویرایشگر سختافزار وجود دارد که در آن کاربر میتواند پیکربندی کند OghmaNano روی هر رایانه مشخص چگونه رفتار کند. میتوان از طریق پنجره زبانه شبیهسازی به آن دسترسی داشت (??).
اگر روی آن کلیک کنید، پنجره ویرایشگر سختافزار باز خواهد شد (??).
پنجره سختافزار از زبانههای مختلفی تشکیل شده است که به کاربر امکان میدهند پیکربندی را ویرایش کند و همچنین دستگاه شما را benchmark کند.
زبانه پیکربندی CPU/GPU
از این زبانه برای پیکربندی نحوه تعامل OghmaNano با GPU و CPU استفاده میشود و در جدول زیر توصیف شده است. همانطور که در بخشهای دیگر این راهنما با جزئیات توضیح داده شده، OghmaNano دو بخش دارد: oghma_core.exe که بخش پشتیبان محاسباتی است و oghma_gui.exe که رابط کاربری گرافیکی است، رفتار هر دوی این بخشهای مدل را میتوان در اینجا بهصورت دقیق تنظیم کرد.
- تعداد رشتههای استفادهشده توسط backend: این حداکثر تعداد رشتههایی است که OghmaNano oghma_core.exe میتواند استفاده کند. این مقدار تعیین میکند؛ تعداد برازشهای همزمانی که میتوان اجرا کرد؛ حداکثر تعداد شبیهسازیهای بهینهسازی که میتوان همزمان اجرا کرد؛ حداکثر تعداد رشتههایی که برای شبیهسازیهای FDTD استفاده میشوند؛ حداکثر تعداد فایلهای cache مربوط به DoS که میتوان همزمان تولید کرد؛ تعداد نقاط حوزه فرکانس که میتوان همزمان اجرا کرد.
- حداکثر تعداد نمونههای core: این گزینه حداکثر تعداد نمونههای oghma_core.exe را که GUI میتواند شروع کند تنظیم میکند. اگر کسی در حال اجرای parameter scan باشد، این گزینه حداکثر تعداد شبیهسازیهای همزمانی را که میتوان در یک زمان انجام داد کنترل خواهد کرد. اگر مقدار تعداد رشتههای استفادهشده توسط backend روی 4 تنظیم شده باشد و کسی یک شبیهسازی FDTD انجام دهد، سپس حداکثر تعداد نمونههای core را روی 8 تنظیم کند، آنگاه GUI تعداد 8 نمونه از oghma_core.exe را هر کدام با استفاده از 4 رشته ایجاد میکند، بنابراین به 32 هسته CPU نیاز خواهد بود.
- زمان توقف: گاهی هنگام اجرای OghmaNano روی یک ابررایانه بدون نظارت ممکن است اجرای آن متوقف شود، احتمالاً به دلیل یک خطای IO یا خطای شبکه. از این گزینه میتوان برای تنظیم حداکثر طول یک شبیهسازی منفرد استفاده کرد. منظور من از شبیهسازی منفرد، یک منحنی JV منفرد، یک شبیهسازی منفرد حوزه زمان یا یک شبیهسازی منفرد حوزه فرکانس است، اما نه یک برازش کامل که شامل اجرای هزاران شبیهسازی منفرد خواهد بود.). بنابراین با مقدار 2000 ثانیه، حلگر خارج میشود، اگر برای مثال یک شبیهسازی JV منفرد بیش از 2000 ثانیه طول بکشد. در عمل هر شبیهسازی منفرد باید فقط چند ثانیه طول بکشد، بنابراین این گزینه بهعنوان یک توقف سخت عمل میکند اگر چیزی واقعاً خیلی اشتباه شده باشد.
- حداکثر زمان اجرای fit: این حداکثر زمانی است که oghma_core.exe میتواند در حافظه باقی بماند. اگر هر شبیهسازی یا برازش بیش از این مقدار طول بکشد، خاتمه داده خواهد شد، باز هم این یک توقف پشتیبان است برای جلوگیری از اجرای بیپایان شبیهسازیها. مقدار پیشفرض 4 روز است.
- Steel CPUs: گاهی هنگام اجرای OghmaNano روی یک رایانه اشتراکی، شبیهسازیای را اجرا میکنند در حالی که کاربر دیگری از تعداد قابلتوجهی هسته استفاده میکند. بعد از مدتی شبیهسازیهای کاربر دیگر به پایان میرسند و رایانه با CPUهای بیکار باقی میماند. اگر این گزینه روی True تنظیم شده باشد، آنگاه OghmaNano تعداد CPUهای آزاد را پایش میکند و اگر تعداد بیشتری در دسترس قرار گیرند از آنها استفاده خواهد کرد.
- حداقل CPUها: همراه با گزینه بالا یعنی Steel CPUs استفاده میشود تا حداقل تعداد CPUهایی که استفاده خواهند شد را تنظیم کند.
- ذخیره DoS روی دیسک: OghmaNano جدولهای lookup را برای افزایش سرعت شبیهسازیها روی دیسک ذخیره میکند، اگر این گزینه روی false تنظیم شود این جدولهای lookup ذخیره نخواهند شد.
- شتابدهی OpenCL GPU: این گزینه شتابدهی GPU را فعال یا غیرفعال میکند، این مورد عمدتاً در طول شبیهسازیهای FDTD استفاده میشود.
- نام GPU: GPU مورد استفاده را انتخاب میکند.
Newton cache
هنگام اجرای شبیهسازیهایی با تعداد قابلتوجهی ODE، مانند دستگاههای 1D با تعداد زیادی حالت تله و تعداد زیادی نقاط فضایی، یا هنگام اجرای شبیهسازیهای OFET دوبعدی، هر گام ولتاژ میتواند مدتی طول بکشد تا محاسبه شود. این به این دلیل است که حلگر باید هر گام ولتاژ را با استفاده از روش نیوتن حل کند تا همگرا شود. برای هر گام حلگر ژاکوبین باید ساخته شود، ماتریس معکوس شده در residualها ضرب شود و بهروزرسانی همه متغیرهای حلگر محاسبه شود. این میتواند برای هر گام زمان قابلتوجهی بگیرد (2000ms). یک رویکرد برای دور زدن این رویکرد این است که پاسخهای قبلاً محاسبهشده روی دیسک ذخیره شوند و سپس وقتی کاربر از حلگر بخواهد یک مسئله از قبل محاسبهشده را محاسبه کند، پاسخ بهجای محاسبه مجدد فراخوانی شود. این در طراحی OLED بسیار مفید است، جایی که فرد تلاش میکند ساختار نوری دستگاه را بهینه کند اما ساختار الکتریکی را بدون تغییر باقی میگذارد. در این صورت میتوان شبیهسازیهای نوری جدید را با راهحلهای الکتریکی از قبل محاسبهشده اجرا کرد. گزینههای پیکربندی در جدول زیر نمایش داده شدهاند.
استفاده از Newton Cache دارای سربار است، بنابراین فقط وقتی آن را توصیه میکنم که حل مسئله الکتریکی واقعاً بسیار کند باشد. از نظر فنی Newton cache با گرفتن مجموع MD5 از ترازهای فرمی و پتانسیلها کار میکند تا یک hash از مسئله الکتریکی تولید کند. سپس این مقدار با آنچه روی دیسک وجود دارد مقایسه میشود. اگر یک پاسخ از پیش محاسبهشده پیدا شود، ترازهای فرمی/پتانسیلها به مقادیر موجود روی دیسک بهروزرسانی میشوند. cache در oghma_local cache ذخیره میشود، هر راهحل از پیش حلشده بهصورت یک فایل باینری جدید ذخیره میشود. هر اجرای شبیهسازی یک فایل index تولید میکند که همه مجموعهای MD5 مربوط به آن شبیهسازی در آن ذخیره میشوند. وقتی cache پر شود OghmaNano نتایج شبیهسازی را بهصورت دستهای بر اساس فایلهای index حذف میکند.
- حداکثر اندازه cache: حداکثر اندازه cache را بر حسب Mb تنظیم میکند. من حدود 1Gb را توصیه میکنم.
- حداقل فضای آزاد دیسک: حداقل مقدار فضای دیسک لازم برای استفاده از cache را تنظیم میکند، این گزینه برای جلوگیری از پر شدن دیسک توسط cache طراحی شده است، من آن را حدود 5Gb تنظیم میکنم.
- تعداد شبیهسازیهایی که باید نگه داشته شوند: این گزینه حداکثر تعداد اجراهای شبیهسازی را که باید نگه داشته شوند تعیین میکند، من آن را بین 20 تا 100 تنظیم میکنم.
- فعالسازی cache: این گزینه Newton Cache را فعال یا غیرفعال میکند، گزینه پیشفرض و توصیهشده False است.
benchmark سختافزار
در بالا-چپ پنجره سختافزار (??) دکمهای به نام benchmark سختافزار وجود دارد. اگر روی آن کلیک شود، OghmaNano سختافزار شما را benchmark خواهد کرد، نتیجه چنین benchmarkی را میتوان در (??) دید. این کار توانایی CPUهای شما را برای محاسبه sin،exp و تخصیص/آزادسازی حافظه در بلوکها benchmark میکند. این بخش نشان میدهد انجام چند هزار عملیات چقدر طول کشیده است و همچنین یک مقدار R (یا Roderick) را نمایش میدهد. این مقدار بهصورت R=زمان لازم برای انجام محاسبه روی رایانه شما/زمان لازم برای انجام محاسبه روی رایانه من تعریف میشود. بنابراین مقادیر کوچکتر یعنی رایانه شما از رایانه من سریعتر است. رایانه من یک Intel(R) Core(TM) i7-4900MQ CPU @ 2.80GHz در یک Lenovo thinkpad مدل 2017 است. بنابراین بیشتر رایانههای مدرن باید سریعتر باشند. اگر عملکرد CPU شما خوب است اما شبیهسازیهایتان کندتر از ویدئوهای YouTube من اجرا میشوند، این تقریباً همیشه به دلیل سرعت بد IO است که ناشی از آنتیویروسها، ذخیره شبیهسازیها روی OneDrive، استفاده از درایوهای شبکهای، استفاده از حافظه USB کند و غیره است.