محاسبات تقریبی
محاسبات تقریبی یک الگوی نوظهور برای طراحی با انرژی کارآمد و/یا با کارایی بالا است.[۱] این شامل انبوهی از تکنیکهای محاسباتی است که یک نتیجه احتمالاً نادرست را به جای یک نتیجه دقیق تضمین شده برمیگرداند، و میتواند برای برنامههایی استفاده شود که یک نتیجه تقریبی برای هدف آن کافی است.[۲] یک مثال از چنین شرایطی برای یک موتور جستجو است که در آن ممکن است پاسخ دقیقی برای یک جستجوی خاص وجود نداشته باشد و از این رو، بسیاری از پاسخها ممکن است قابل قبول باشند. بهطور مشابه، افت گاه به گاه برخی فریمها در یک برنامه ویدیویی به دلیل محدودیتهای ادراکی انسانها میتواند شناسایی نشود. محاسبات تقریبی مبتنی بر این مشاهدات است که در بسیاری از سناریوها، اگرچه انجام محاسبات دقیق به منابع زیادی نیاز دارد، اما اجازه دادن به تقریب محدود میتواند دستاوردهای نامتناسبی را در عملکرد و انرژی ایجاد کند، در حالی که همچنان به دقت نتیجه قابل قبولی دست مییابد.[نیازمند شفافسازی] برای مثال، در الگوریتم خوشه بندی k میانگین، اجازه میدهد از دست دادن تنها ۵٪ دقت طبقه میتواند ۵۰ برابر انرژی ارائه صرفه جویی در مقایسه با طبقهبندی کاملاً دقیق است.
شرط کلیدی در محاسبات تقریبی این است که تقریب را میتوان تنها در دادههای غیر بحرانی معرفی کرد، زیرا تقریب دادههای حیاتی (به عنوان مثال، عملیات کنترل) میتواند منجر به عواقب فاجعه آمیزی مانند خرابی برنامه یا خروجی اشتباه شود.
استراتژیها
[ویرایش]برای انجام محاسبات تقریبی میتوان از چندین استراتژی استفاده کرد.
- مدارهای تقریبی
- مدارهای حسابی تقریبی:[۳] جمعکنندهها،[۴][۵] ضربکننده دودویی و سایر دروازه منطقی میتوانند سربار سختافزار را کاهش دهند.[۶][۷][۸] به عنوان مثال، یک جمعکننده تقریبی چند بیتی می تواند زنجیره حمل را نادیده بگیرد و بنابراین، به همه جمعکنندههای فرعی خود اجازه میدهد تا عملیات جمع را به صورت موازی انجام دهند.
- ذخیرهسازی تقریبی
- به جای ذخیره دقیق مقادیر داده، میتوان آنها را تقریباً ذخیره کرد، به عنوان مثال، با کوتاه کردن بیتهای پایین در دادههای محاسبات ممیز شناور روش دیگر پذیرش حافظه کمتر قابل اعتماد است. برای این کار، در حافظه تصادفی پویا[۹] و eDRAM، نرخ تازهسازی را میتوان کاهش داد یا کنترل کرد.[۱۰] در حافظه دسترسی تصادفی ایستا، ولتاژ تغذیه را میتوان کاهش داد[۱۱] یا کنترل کرد.[۱۲] ذخیرهسازی تقریبی را میتوان برای کاهش مصرف انرژی نوشتاری بالای MRAM اعمال کرد.[۱۳] بهطور کلی، هر مکانیزم تشخیص و تصحیح خطا باید غیرفعال شود.
- تقریب در سطح نرمافزار
- روشهای مختلفی برای تقریب در سطح نرمافزار وجود دارد. یادداشت را میتوان اعمال کرد. برخی از ایتریشن کنترل جریان برای رسیدن به نتیجه سریعتر میتوان نادیده گرفت (به عنوان سوراخ حلقه نامیده میشود). برخی از وظایف را نیز میتوان نادیده گرفت، به عنوان مثال زمانی که یک شرط زمان اجرا نشان میدهد که آن وظایف مفید نیستند (پرش از کار). الگوریتمهای مونت کارلو و الگوریتمهای تصادفی صحت را با تضمین زمان اجرا معامله میکنند.[۱۴] محاسبات را میتوان با توجه به پارادایمهایی که به راحتی امکان شتاب را روی سختافزارهای تخصصی میدهد (به عنوان مثال یک واحد پردازش عصبی) دوباره فرموله کرد.
- سیستم تقریبی
- در یک سیستم تقریبی،[۱۵] زیرسیستمهای مختلف سیستم مانند پردازنده، حافظه، حسگر و ماژولهای ارتباطی بهطور هم افزایی برای به دست آوردن منحنی مبادله QE در سطح سیستم بسیار بهتر در مقایسه با تقریبهای جداگانه برای هر یک از زیرسیستمها تقریب میشوند. .
حوزههای کاربرد
[ویرایش]محاسبات تقریبی در حوزههای مختلفی که برنامههای کاربردی در برابر خطا مقاوم هستند، مانند پردازش چند رسانهای ، یادگیری ماشین، پردازش سیگنال، محاسبات علمی استفاده شدهاست؛ بنابراین، محاسبات تقریبی عمدتاً توسط برنامههایی هدایت میشود که با ادراک/شناخت انسان مرتبط هستند و دارای انعطافپذیری ذاتی خطا هستند. بسیاری از این کاربردها مبتنی بر محاسبات آماری یا احتمالاتی هستند، مانند تقریبهای مختلفی که میتوان برای برآورده شدن بهتر اهداف مورد نظر انجام داد.[۱۶] یکی از کاربردهای قابل توجه در یادگیری ماشین این است که Google از این رویکرد در واحد پردازشی تنسور خود (TPU، یک ASIC سفارشی) استفاده میکند.[۱۷]
پارادایمهای مشتق شده
[ویرایش]مسئله اصلی در محاسبات تقریبی، شناسایی بخشی از برنامه است که میتوان آن را تقریب کرد. در مورد برنامههای کاربردی در مقیاس بزرگ، بسیار رایج است که افرادی را بیابیم که در تکنیکهای محاسباتی تقریبی تخصص دارند و در حوزه برنامه تخصص کافی ندارند (و بالعکس). به منظور حل این مشکل، پارادایمهای برنامهنویسی[۱۸] ارائه شدهاست. همه آنها در تفکیک نقش روشن بین برنامهنویس برنامه و متخصص موضوعی برنامه مشترک هستند. این رویکردها به گسترش رایجترین بهینهسازیها و تکنیکهای محاسباتی تقریبی اجازه میدهد.
منابع
[ویرایش]- ↑ J. Han and M. Orshansky, "Approximate computing: An emerging paradigm for energy-efficient design", in the 18th IEEE European Test Symposium, pp. 1-6, 2013.
- ↑ A. Sampson, et al. "EnerJ: Approximate data types for safe and general low-power computation", In ACM SIGPLAN Notices, vol. 46, no. 6, 2011.
- ↑ Jiang et al. , "Approximate Arithmetic Circuits: A Survey, Characterization, and Recent Applications", the Proceedings of the IEEE, Vol. 108, No. 12, pp. 2108 - 2135, 2020.
- ↑ J. Echavarria, et al. "FAU: Fast and Error-Optimized Approximate Adder Units on LUT-Based FPGAs", FPT, 2016.
- ↑ J. Miao, et al. "Modeling and synthesis of quality-energy optimal approximate adders", ICCAD, 2012
- ↑ S. Venkataramani, et al. "SALSA: systematic logic synthesis of approximate circuits", DAC, 2012.
- ↑ J. Miao, et al. "Approximate logic synthesis under general error magnitude and frequency constraints", ICCAD, 2013
- ↑ R. Hegde et al. "Energy-efficient signal processing via algorithmic noise-tolerance", ISLPED, 1999.
- ↑ Raha, A.; Sutar, S.; Jayakumar, H.; Raghunathan, V. (July 2017). "Quality Configurable Approximate DRAM". IEEE Transactions on Computers. 66 (7): 1172–1187. doi:10.1109/TC.2016.2640296. ISSN 0018-9340.
- ↑ Kim, Yongjune; Choi, Won Ho; Guyot, Cyril; Cassuto, Yuval (December 2019). "On the Optimal Refresh Power Allocation for Energy-Efficient Memories". 2019 IEEE Global Communications Conference (GLOBECOM). Waikoloa, HI, USA: IEEE: 1–6. arXiv:1907.01112. doi:10.1109/GLOBECOM38437.2019.9013465. ISBN 978-1-72810-962-6.
- ↑ Frustaci, Fabio; Blaauw, David; Sylvester, Dennis; Alioto, Massimo (June 2016). "Approximate SRAMs With Dynamic Energy-Quality Management". IEEE Transactions on Very Large Scale Integration (VLSI) Systems. 24 (6): 2128–2141. doi:10.1109/TVLSI.2015.2503733. ISSN 1063-8210.
- ↑ Kim, Yongjune; Kang, Mingu; Varshney, Lav R.; Shanbhag, Naresh R. (2018). "Generalized Water-filling for Source-aware Energy-efficient SRAMs". IEEE Transactions on Communications. 66 (10): 4826–4841. arXiv:1710.07153. doi:10.1109/TCOMM.2018.2841406. ISSN 0090-6778.
- ↑ Kim, Yongjune; Jeon, Yoocharn; Guyot, Cyril; Cassuto, Yuval (June 2020). "Optimizing the Write Fidelity of MRAMs". 2020 IEEE International Symposium on Information Theory (ISIT). Los Angeles, CA, USA: IEEE: 792–797. arXiv:2001.03803. doi:10.1109/ISIT44484.2020.9173990. ISBN 978-1-72816-432-8.
- ↑ C.Alippi, Intelligence for Embedded Systems: a Methodological approach, Springer, 2014, pp. 283
- ↑ Raha, Arnab; Raghunathan, Vijay (2017). "Towards Full-System Energy-Accuracy Tradeoffs: A Case Study of An Approximate Smart Camera System". Proceedings of the 54th Annual Design Automation Conference 2017. DAC '17. New York, NY, USA: ACM: 74:1–74:6. doi:10.1145/3061639.3062333. ISBN 978-1-4503-4927-7.
- ↑ Liu, Weiqiang; Lombardi, Fabrizio; Schulte, Michael (Dec 2020). "Approximate Computing: From Circuits to Applications". Proceedings of the IEEE. 108 (12): 2103. doi:10.1109/JPROC.2020.3033361.
- ↑ Liu, Weiqiang; Lombardi, Fabrizio; Schulte, Michael (Dec 2020). "Approximate Computing: From Circuits to Applications". Proceedings of the IEEE. 108 (12): 2104. doi:10.1109/JPROC.2020.3033361.
- ↑ Nguyen, Donald; Lenharth, Andrew; Pingali, Keshav (2013). "A lightweight infrastructure for graph analytics". Proceedings of the Twenty-Fourth ACM Symposium on Operating Systems Principles (به انگلیسی). ACM: 456–471. doi:10.1145/2517349.2522739. ISBN 978-1-4503-2388-8.