|  |  |
| --- | --- |
|  | برخی از ویرایش‌ها در این مقاله در چارچوب یک تکلیف دانشگاهی انجام شده‌اند. این تکالیف توسط ؟ برای دانشجویان ؟ تعیین شده‌اند. |

**پردازش تقریبی** یک الگوی رو به رشد برای طراحی کم مصرف یا عملکرد بالا است. این شامل تعداد زیادی از روش‌های محاسباتی است که نتیجه احتمالی (که کاملا درست نیست) را به جای یک نتیجه دقیق تضمینی بازمی‌گرداند و می‌تواند برای برنامه‌هایی استفاده شود که نتیجه تقریبی برای هدف آن کافی است.

برای نمونه می‌توان به موتورهای جستجو اشاره کرد که هیچ پاسخ قطعی و دقیقی نمی‌توان برای یک جستجو خاص در نظر گرفت و بنابراین، بسیاری از پاسخ‌ها ممکن است قابل قبول باشند. به‌طور مشابه، افت گاه به گاه برخی از فریم‌ها در یک برنامه ویدیویی می‌توانند به دلیل محدودیت‌های ادراکی انسان‌ها تشخیص داده نشوند.

محاسبه تقریبی بر اساس این مشاهدات استوار است که در بسیاری از زمینه‌ها، علاوه بر اینکه انجام محاسبات دقیق به منابع زیادی نیاز دارد، تقریب محدود می‌تواند دستاوردهای غیرمنتظره ای در عملکرد و انرژی ایجاد کند، در حالی که هنوز به نتایج قابل قبولی دست می‌یابد. به عنوان مثال، در الگوریتم خوشه بندی *k* -means، اگر تنها ۵٪ از دقت طبقه‌بندی را کاهش دهیم، می‌توانیم ۵۰ برابر صرفه جویی انرژی در مقایسه با طبقه‌بندی کاملاً دقیق ایجاد کنیم.

نکتهٔ اصلی در محاسبات تقریبی این است که فقط در داده‌های غیر اصلی و غیر مهم می‌توان از تقریب استفاده کرد چراکه تقریب داده‌های مهم (به عنوان مثال عملیات کنترل) می‌تواند عواقب فاجعه آمیزی ایجاد کند برای مثال می‌تواند باعث خرابی برنامه یا خروجی اشتباه شود.

استراتژی‌ها
-----------

از چندین روش می‌توان برای انجام محاسبات تقریبی استفاده کرد.

**مدارهای تقریبی**
مدارهای حسابی تقریبی: جمع، ضرب و دیگر مدارهای منطقی می‌توانند مخارج کلی سخت‌افزار را کاهش دهند. به عنوان مثال، یک جمع‌کننده چند بیتی تقریبی می‌تواند زنجیره حمل را نادیده بگیرد و بنابراین، به همه اضافات فرعی آن اجازه می‌دهد تا عملیات جمع را به صورت موازی انجام دهند.
**ذخیره‌سازی تقریبی**
به جای ذخیره دقیق داده‌ها، می‌توان آنها را تقریباً ذخیره کرد، به عنوان مثال، (با) کوتاه کردن بیت‌های پایین در داده‌های نقطه شناور.
روش دیگر، پذیرش حافظه کمتر موثق است. برای این منظور، در DRAM و eDRAM، می‌توان تخصیص نرخ تازه سازی را کاهش یا کنترل کرد. در SRAM، می‌توان ولتاژ منبع را کاهش داد یا کنترل کرد. می‌توان از ذخیره‌سازی تقریبی برای کاهش مصرف بالای انرژی نوشتاری MRAM استفاده کرد. به‌طور کلی، هر مکانیزم تشخیص و تصحیح خطا باید غیرفعال شود.
**تقریب در سطح نرم‌افزار**
چندین روش برای تقریب در سطح نرم‌افزار وجود دارد. به خاطر سپاری می‌تواند اعمال شود. برخی از تکرارهای حلقه‌ها را می‌توان نادیده گرفت (این روش سوراخ حلقه نامیده می‌شود) تا سریعتر به نتیجه برسیم. برخی از وظایف نیز می‌توانند نادیده گرفته شوند، به عنوان مثال هنگامی که وضعیت زمان اجرا نشان می‌دهد که این کارها مفید نخواهد بود (نادیده گرفتن کار). الگوریتم‌های مونت کارلو و الگوریتم‌های تصادفی صحت را با ضمانت زمان اجرا مبادله می‌کنند. محاسبه را می‌توان با توجه به پارادایم‌هایی که به راحتی امکان تسریع در سخت‌افزارهای تخصصی را می‌دهند (به عنوان مثال واحد پردازش عصبی)، دوباره فرموله کرد.
سیستم تقریبی
در یک سیستم تقریبی، تقریب های هم افزایی زیر‌سیستم‌های مختلف آن مانند پردازنده، حافظه، سنسور و ماژول‌های ارتباطی برای دستیابی به یک منحنی مبادله QE در سطح سیستم در مقایسه با تقریب‌های جداگانه برای هر یک از زیر سیستم‌ها، بسیار بهتر هستند.

حوزه‌های کاربرد
---------------

از محاسبات تقریبی در حوزه‌هایی که برنامه‌ها در برابر خطاها تحمل پذیر هستند استفاده می‌شود، مانند پردازش چند رسانه ای ، یادگیری ماشین، پردازش سیگنال، محاسبات علمی. به همین دلیل محاسبات تقریبی بیشتر توسط برنامه‌هایی انجام می‌شود که به ادراک (شناخت) انسان مربوط می‌شوند و ممکن است به خودی خود دارای خطا باشد. بسیاری از این برنامه‌ها بر اساس محاسبات آماری یا احتمالی هستند که (مانند تقریب‌های مختلف) می‌تواند با اهداف مطلوب بهتر مطابقت داشته باشد. یکی از کاربردهای قابل توجه در یادگیری ماشین این است که گوگل از این روش در واحدهای پردازش Tensor (TPU , ASIC سفارشی) استفاده می‌کند.

پارادایم‌های مشتق شده
---------------------

مسئله اصلی در محاسبات تقریبی، شناسایی قسمتی از برنامه است که می‌تواند تقریبی باشد. در مورد برنامه‌های کاربردی در مقیاس وسیع، بسیار رایج است افرادی را در زمینه تکنیک‌های محاسباتی تقریبی داشته باشند که دارای تخصص و تجربه کافی در حوزه اجرایی نیستند و نمی‌دانند آن تکنیک‌ها را در کدام بخش‌ها می‌توانند به کار بگیرند (و بالعکس). به منظور حل این مشکل (داشتن تکنینک مناسب و شناخت موقعیت مناسب برنامه برای اجرای محاسبات تقریبی)، الگوهای برنامه‌نویسی پیشنهاد شده‌است. همه آنها به‌طور واضح نقش اصلی را بین برنامه نویس برنامه و متخصص حوزه برنامه مشخص می‌کنند. این رویکردها اجازه می‌دهند متداول‌ترین بهینه‌سازی‌ها و تکنیک‌های محاسباتی تقریبی گسترش یابند.

جستارهای وابسته
---------------

* شبکه‌های عصبی مصنوعی
* فراماسونری

منابع
-----

1. ↑  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.
2. ↑  A. Sampson, et al. "EnerJ: Approximate data types for safe and general low-power computation", In ACM SIGPLAN Notices, vol. 46, no. 6, 2011.
3. ↑  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.
4. ↑  J. Echavarria, et al. "FAU: Fast and Error-Optimized Approximate Adder Units on LUT-Based FPGAs", FPT, 2016.
5. ↑  J. Miao, et al. "Modeling and synthesis of quality-energy optimal approximate adders", ICCAD, 2012
6. ↑  S. Venkataramani, et al. "SALSA: systematic logic synthesis of approximate circuits", DAC, 2012.
7. ↑  J. Miao, et al. "Approximate logic synthesis under general error magnitude and frequency constraints", ICCAD, 2013
8. ↑  R. Hegde et al. "Energy-efficient signal processing via algorithmic noise-tolerance", ISLPED, 1999.
9. ↑  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.
10. ↑  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.
11. ↑  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.
12. ↑  Kim, Yongjune; Kang, Mingu; Varshney, Lav R.; Shanbhag, Naresh R. (2018). "Generalized Water-filling for Source-aware Energy-efficient SRAMs". *IEEE Transactions on Communications*: 1. arXiv:1710.07153. doi:10.1109/TCOMM.2018.2841406. ISSN 0090-6778.
13. ↑  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.
14. ↑  C.Alippi, Intelligence for Embedded Systems: a Methodological approach, Springer, 2014, pp. 283
15. ↑  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.
16. ↑  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. Retrieved 26 May 2021.
17. ↑  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. Retrieved 26 May 2021.
18. ↑  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.