نام پژوهشگر: سید حسن صدیق ضیابری

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

چکیده اپن فوم یک ابزار cfd آموزشی، تحقیقاتی و صنعتی بصورت متن باز است که انواع گسترده ای از برنامه های کاربردی و حلگرها را برای شبیه سازی هایی از جمله جریان تراکم ناپذیر، جریان تراکم پذیر، انتقال حرارت و الکترومغناطیس شامل می شود. در اپن فوم از زبان برنامهنویسی c++ به عنوان زبان پایه استفاده شده است و می توان توسط برنامه نویسی شئ گرا برنامه های موجود را بهبود داده و یا حتی یک نمونه جدید ایجاد کرد. یک شیوه مرسوم در سرعت بخشیدن به محاسبات و کاهش زمان اجرا شبیه سازی ها، استفاده از پردازش موازی بر روی رایانه های پر قدرت و حتی ابررایانه ها می باشد. در عین حال، با افزایش دسترس پذیری به پردازنده های چند هسته ای و فن آوری های جدیدتر gpu، کارایی رو به توسعه و حلگرهای سریع شدیداً به استفاده بهتر از منابع سخت افزاری حاضر نیاز پیدا کرده اند. برای انجام این کار، خصوصاً برای برنامه های سنگین محاسباتی نیاز به استفاده از تکنیک های برنامه نویسی موازی است. در پژوهش حاضر، افزایش سرعت حل در حلگر خطی گرادیان مزدوج پیش شرط شده موسوم به pcg، بکار رفته در برنامه کاربردی icofoam از اپن فوم مد نظر قرار گرفته است. اپن فوم از پروتکل mpi به عنوان مدل برنامه نویسی موازی پیش فرض خود برای سرعتدهی محاسبات استفاده می کند. با بررسی ساختار کد فعلی حلگر pcg در اپن فوم، یک شیوه موازی سازی دو سطحی، برگرفته از هر دو مدل برنامه نویسی موازی حافظه توزیع یافته و حافظه اشتراکی به ترتیب توسط mpi و openmp، پیشنهاد و پیاده سازی شده است. ساختار شیوه حاضر از موازی سازی دانه درشت در بین زیردامنه های مختلف توسط mpi و موازی سازی دانه ریز در سطح حلقه ها در توابع حلگر خطی با استفاده از ساختارهای openmp، تشکیل یافته است. پس از تجزیه دامنه کل شبکه محاسباتی، هر یک از زیردامنه ها با اطلاعات هندسی خاص و مقادیر اولیه خود به هر یک از پردازه های mpi بصورت مجزا اختصاص یافته است. هر یک از زیردامنه ها از طریق دستورات mpi اطلاعات خود را مبادله می کنند. در عین حال، درون هر یک از زیردامنه ها، برخی از بخش های محاسباتی از طریق اجرا بر روی هسته های پردازشی موجود با استفاده از پروتکل openmp، سرعت دهی می شوند. نکته کلیدی در اینجا، استفاده از ویژگی موازی سازی رشته های پردازشی openmp است که اجرای موازی برنامه را بین هسته های پردازشی موجود در هر یک از دستگاه های واحد توزیع می کند. طبق دانش نظری، این امر می بایست سربار ارتباطات غیر ضروری mpi را کاهش دهد و منجر به افزایش عملکرد کد شود. نتایج ما نشان داد که با استفاده از تکنیک برنامه نویسی موازی ترکیبی ارائه شده، تسریع حلگر pcg نسبت به حالت پیاده سازی اولیه mpi بهبود یافت. بر اساس نتایج گزارش شده، نتیجه می گیریم که مدل ترکیبی حاضر یک تکنیک مناسب در بهبود کارایی، هم در اجرای موازی حلگر pcg و هم در بکارگیری تعدد منابع سخت افزاری موجود، می باشد. همچنین با توجه به بحث های مطرح شده در این پژوهش، پیشنهاداتی برای کارهای آتی ارائه شده است.