👾 Geek Engineers
539 subscribers
51 photos
42 files
330 links
👾 Extremist software engineering guidance for Geeks.

Website:
https://geekengineers.netlify.app

Github:
https://github.com/geekengineers
https://github.com/tahadostifam

Community:
@geek_engineers_community
Download Telegram
نظری برا این مساله دارید؟ |:

الان مساله دیگه ای که توجهم رو جلب کرده. یک مقاله ای داشتم میخوندم راجب اینکه چطور میشود n-dimension loop رو روی معماری multiprocessor پارالل کرد؟ و خب خیلی خفنه :> میخواستم نظر شمارم بدونم تو این زمینه تا یه جمع بندی داشته باشم راجبش و...

ایده اصلی ش راجب اینه که تسک های مختلف رو بصورت tile (کاشی) در میاره و خیلی سعی میکنه که بین این ها bound هارو پیدا بکنه.

من خودم به Polyhedral Model داشتم فکر میکردم که میتونه تا حدی این کارو انجام بده ولی این اومده یه کار خفن تر کرده. از یه Modified Genetic Algorithm استفاده کردن تا درواقع توی رانتایم سعی میکنه به اصطلاح یادبگیره که سریعترین راه برای محاسبه و پارالل کردن تسک ها چطوریه؟
یه cluster میسازن و نسبت به وظیفه ش (weight ش) و اتصالاتش (یه گراف ساخته میشه ازش درواقع) یه score هم بهش میدیم.

بعد از روی این گرافی که supercompiler میسازه تلاش میشود که سریعترین path رو پیدا کنن و بین processor ها distribute میشه |:

منتها این همش نیست. تا جایی که من متوجه شدم از مقاله ش. بعد ازینکه اجرا میشه (یا شایدم از همون گراف آنالیز میکنه نمیدونم مطمن نیستم...) میاد یک سیستم penalty/reward درست میکنه تا بتونه شایستگی اون path رو مشخص بکنه.

بهش پاداش میده اگر سوپرکامپایلر ببینه که مسیرش bound کمتری دریافت کرده و سریعتر اجرا شده. این پاداشه ینی توی (رجیستری مون یا همون جدول شایستگی که ساختیم score ش افزایش پیدا میکنه و باعث میشه که پایدار تر باشه... ینی احتمالش کمتره که با یه path دیگه جایگزین بشوه).

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

فکر میکنم این مکانیزم رو LAGA (Learning-based Adaptive Genetic Algorithm) نامیده اند.

اینا چیزایی بود که من تقریبا تونستم از مقاله بفهمم. اینکه واقعا میشه در عمل همچین چیزی پیاده سازی کرد یا نه جای بحث داره.
👍4💊1