مدیریت ارتباطات و بهینه سازی اتوماتیک CPU-GPU

مدیریت ارتباطات و بهینه سازی اتوماتیک CPU-GPU فواید عملکردی موازی سازی GPU می تواند بسیار چشمگیر باشد ولی باز کردن پتانسیل چنین عملکردی بسیار چالش برانگیز است. قابلیت عملکردی و اجرای موازی سازی GPU محدود به پیچیدگی های ارتباطات CPU-GPU می شود. جهت پرداختن به این مشکلات ارتباطاتی، در این مقاله ابتدا به ذکر سیستم های کاملاً اتوماتیک برای مدیریت و بهینه سازی CPU-GPU می پردازیم. این سیستم که مدیریت ارتباطات CPU-GPU نامیده می شود متشکل از یک کتابخانه زمان اجرا و گروهی از انتقالات مولف است که برای مدیریت و بهینه سازی ارتباطات CPU-GPU باهم کار می کنند بدون آنکه وابستگی به قدرت تحلیل ایستای زمان داشته باشند، CGCM موجب تسهیل موازی سازی دستی GPU شده و قابلیتک کاربردی و عملکردی موازی سازی اتوماتیک را بهبود می بخشد. برای 24 برنامه، موازی سازی GPU اتوماتیک شده از CGCM منجر به میانگین افزایش سرعت x 36/5 در بهترین توالی اجرایی فقط CPU می شود. در حال حاضر حتی PCهای سطح ورودی مجهز به GPUهای صدها GFLOPS می باشند. کاربردهای واقعی بطور موازی برای بهره گیری از مزایای آنها به افزایش سرعت منظم بین 4 تا 100 ایکس دست می یابند. متاسفانه کد موازی سازی برای GPU از آنجایی مشکل بدست می آید که بسته به معماری حافظه CPU-GPU می باشد. وقتی که اجرای برنامه روی CPU یا GPU به ساختارهای داده ای بیرون حافظه آنها نیاز دارد باید کپی آشکار کد بین CPU تقسیم شده و حافظه های GPU روی بدهد. فرآیند کپی نمودن داده ها بین این حافظه ها برای اجرای صحیح ارتباطات مدیریتی خوانده می شود. عموماً برنامه نویسان اقدام به مدیریت ارتباطات CPU-GPU با عملکردهای memcpy می کنند. مدیریت دستی ارتباطات CPU-GPU بسیار احتمال بروز خطا دارد. پوینترهای مستعار، آرایه هایی با اندازه متغیر، پوینترهای جهانی و انواع مربوطه موجب شده تا کپی نمودن داده های صحیح بین CPU و GPU کار مشکلی باشد. متاسفانه تمامی موارد مدیریتی ارتباطات کارآمد نمی باشند. الگوهای مدیریت چرخه ای مکررا ترتیبی از بزرگی آهسته تر از الگوهای غیرچرخه ای می باشند. الگوهای تبدیلی ارتباطات چرخه ای به غیرچرخه ای بهینه سازی ارتباطات نامیده می شود. کپی نمودن داده ها به حافظه GPU منجر به الگوهای ارتباطاتی چرخه ای می شود و کپی نمودن نتایج به CPU منجر به الگوهایی مشابه آن می گردد. کپی کردن داده ها به GPU در قبل هدر بسیاری از عملکردها را معلق می گرداند. بهینه سازی نادرست ارتباطات موجب می شود تا برنامه به داده های ثابت یا غیرمستمر دسترسی داشته باشد. این پژوهش در 24 صفحه انجام شده است.