کامپایلر سی پلاس پلاس اینتل
توسعهدهنده(ها) | اینتل |
---|---|
انتشار پایدار | |
مخزن | |
سیستمعامل | Windows, Macintosh|Mac, Linux, FreeBSD |
نوع | کامپایلر |
مجوز | Trialware |
وبگاه |
توسعهدهنده(ها) | اینتل |
---|---|
انتشار پایدار | 14.0.1
/ ۱۲ نوامبر ۲۰۱۳[۳] |
مخزن | |
سیستمعامل | Windows, Mac OS X |
نوع | کامپایلر |
مجوز | Trialware |
وبگاه |
کامپایلر سی++ اینتل، همچنین به عنوان آیسیسی یا آیسیال شناخته میشود، گروهی از کامپایلرهای سی و سی پلاس پلاس از اینتل است که برای ویندوز، مک، لینوکس، فریبیاسدی[۴] و دستگاههای اندروید مبتنی بر اینتل در دسترس است.
بررسی اجمالی
[ویرایش]کامپایلرها کدهای بهینه شده برای معماری آیای-۳۲ و اینتل ۶۴ و کدهای غیربهینه شده برای پردازندههای غیر اینتل اما سازگار مانند پردازندههای خاص ایامدی تولید میکنند. نسخه ویژه ای از کامپایلر (۱۱٫۱) برای توسعه برنامههای مبتنی بر Linux برای پردازندههای (ایتانیوم IA-64 (۲ در دسترس است.
کامپایلر ۱۴٫۰ پشتیبانی از دستگاههای اندروید مبتنی بر اینتل و بهینهسازی شده و دستورالعملهای SSE Family را برای بهبود عملکرد اضافه کردهاست. نسخه ۱۳٫۰ پشتیبانی از پردازنده زئون فای اینتل را اضافه کرد. این پشتیبانی از بردارسازی خودکار، که میتواند دستورالعملهای اساسایی۲، اساسایی۳، اساسایی، اساساسئی۳، اساسایی۴، ایویایکس و AVX2 SIMD و نسخه سامانه نهفته برای Intel MMX و MMX 2 را تولید کند، ادامه دارد.[۵] استفاده از چنین دستورالعملی از طریق کامپایلر میتواند منجر به بهبود عملکرد برنامه در برخی از برنامهها با معماری آیای-۳۲ و اینتل ۶۴ شود، در مقایسه با برنامههای ساخته شده با کامپایلرها که از این دستورالعملها پشتیبانی نمیکنند.
کامپایلرهای اینتل از کیلک پلاس پشتیبانی میکنند (که در نسخه ۱۹٫۱ حذف شدهاست)، این یک توانایی برای نوشتن کدهای برداری و موازی است که میتواند در پردازندههای IA-32 و Intel 64 استفاده شود یا میتواند در پردازندههای زئون فای بارگیری شود. آنها همچنین پشتیبانی از اپن امپی ۴، چند پردازی متقارن، موازی سازی خودکار و پارالایزاسیون خودکار هدایت شده (GAP) را ادامه میدهند. با قابلیت افزودنی کلاستر اوپنامپی، کامپایلرها همچنین میتوانند بهطور خودکار تماسهای رابط انتقال پیام برای چندپردازشی حافظه توزیع شده از بخشنامههای اوپنامپی را ایجاد کنند.
اینتل سی++ با ویژوال سی++ در ویندوز سازگار است و در مایکروسافت ویژوال استودیو ادغام میشود. در لینوکس و Mac، با GNU Compiler
Collection و زنجیره ابزار گنو سازگار است. کامپایلر سی++ اینتل برای اندروید در ویندوز، OS X یا لینوکس میزبانی میشود و با اندروید اِندیکی، از جمله جییسیسی و اکلیپس(Eclipse IDE) سازگار است. کامپایلرهای اینتل به دلیل عملکردی که میتوانند با اندازهگیری توسط معیارهایی مانند معیارهای SPEC CPU اندازهگیری کنند، شناخته شدهاند.
بهینهسازیها
[ویرایش]کامپایلرهای اینتل با استفاده از پردازندههایی که از معماریهای اینتل پشتیبانی میکنند، برای سیستمهای رایانه ای بهینه میشوند. آنها برای به حداقل رساندن غرفهها (stalls) و تولید کدی طراحی شدهاند که در کمترین تعداد چرخه ممکن اجرا میشود. کامپایلر سی++ اینتل از سه تکنیک سطح بالا جداگانه برای بهینهسازی برنامه کامپایل شده پشتیبانی میکند: ببهینه سازی درون تابع (آیپیاو)، بهینهسازی هدایت شده با پروفایل (پیجییاو) و بهینهسازیهای سطح بالا (اچالاو). کامپایلر سی++ اینتل در محصولات Parallel Studio XE همچنین از ابزارها، تکنیکها و پسوند زبانی برای افزودن و حفظ موازی سازی برنامهها در پردازندههای IA-32 و Intel 64 پشتیبانی میکند و امکان پردازش پردازندههای زئون فای اینتل را فراهم میکند.
بهینهسازی با راهنمای پروفایل به حالت بهینهسازی اشاره دارد که در آن کامپایلر قادر است به دادههای حاصل از اجرای نمونه برنامه از طریق مجموعه ورودی نماینده دسترسی پیدا کند. دادهها نشان میدهد که کدام مناطق از برنامه با دفعات بیشتری اجرا میشوند و کدام مناطق با دفعات کمتری اجرا میشوند. همه بهینهسازیها از بازخورد هدایت شده توسط پروفایل بهرهمند میشوند چون هنگام تصمیمگیری در مورد تدوین، کمتر به روشهای ابتکاری اعتماد دارند.
بهینهسازیهای سطح بالا بهینهسازیهای انجام شده روی نسخه ای از برنامه است که نگاه نزدیک تری به کد منبع دارد. این شامل عوض شدن حلقه، همجوشی حلقه، شکافت حلقه، باز کردن حلقه، پیش تنظیم دادهها و موارد دیگر است.[۶]
بهینهسازی میان فرآیندی، کامپایلرهای معمولی را بهنه سازی میکند اما با استفاده از دامنه گستردهتر که ممکن است شامل چندین روش، چندین پرونده یا کل برنامه باشد.[۷]
دیوید مونیاوکس از کامپایلر اینتل انتقاد کردهاست که بهطور پیش فرض، بهینهسازیهای نقطه شناور را اعمال میکند که توسط استاندارد سی مجاز نیست و به پرچمهای خاصی با کامپایلرهای دیگر مانند جیسیسی نیاز دارند.[۸]
معماری
[ویرایش]شرح بستهبندی
[ویرایش]به جز کامپایلر ++Intel Bi-Endian C، کامپایلرهای ++Intel C به صورت مستقل در دسترس نیستند. آنها در مجموعهها موجود هستند:
- Intel Parallel Studio XE برای توسعه برنامههای محاسباتی فنی، سازمانی و با کارایی بالا در ویندوز، لینوکس و مک
- Intel System Studio برای توسعه سیستم و نرمافزار برنامه برای سامانه نهفته یا دستگاههایی که دارای ویندوز، لینوکس یا اندروید هستند
این مجموعهها شامل ابزارهای ساخت دیگر مانند کتابخانهها و ابزارهایی برای رشته و تجزیه و تحلیل عملکرد هستند.
تاریخچه از سال ۲۰۰۳
[ویرایش]نسخه کامپایلر | تاریخ انتشار | عمده ویژگیهای جدید |
---|---|---|
کامپایلر Intel C ++ 8.0 | ۱۵ دسامبر ۲۰۰۳ | عناوین از پیش تلفیقی، ابزارهای پوشاندن کد. |
کامپایلر Intel C ++ 8.1 | سپتامبر ۲۰۰۴ | معماری AMD64 (برای لینوکس). |
کامپایلر Intel C ++ 9.0 | ۱۴ ژوئن ۲۰۰۵ | معماری AMD64 (برای ویندوز)، بهینهسازی پیش محاسبات احتمالی مبتنی بر نرمافزار (SSP)، گزارشهای بهینهسازی حلقه بهبود یافته. |
کامپایلر Intel C ++ 10.0 | ۵ ژوئن ۲۰۰۷ | موازی سازی و بردار ساز بهبود یافته، پخش جریانی SIMD Extensions 4 (SSE4)، گزارشهای بهینهسازی جدید و پیشرفته برای تحولات حلقه پیشرفته، پیادهسازی جدید مدیریت بهینهسازی بهینه شده. |
کامپایلر Intel C ++ 10.1 | ۷ نوامبر ۲۰۰۷ | کتابخانه زمان اجرا سازگاری OpenMP * جدید: اگر از OpenMP RTL جدید استفاده میکنید، میتوانید با کتابخانهها و اشیا built ساخته شده توسط Visual C ++ ترکیب و مطابقت دهید. برای استفاده از کتابخانههای جدید، باید از گزینه جدید "-Qopenmp / Qopenmp-lib: compat" در ویندوز و "-openmp -openmp-lib: compat" در Linux استفاده کنید. این نسخه از کامپایلر Intel از مواد ذاتی بیشتری از Visual Studio 2005 پشتیبانی میکند.
پشتیبانی از VS2008 - خط فرمان فقط در این نسخه. ادغام IDE هنوز پشتیبانی نشدهاست. |
کامپایلر Intel C ++ 11.0 | نوامبر ۲۰۰۸ | پشتیبانی اولیه از C ++ 11. ادغام VS2008 IDE در ویندوز. OpenMP 3.0. منبع بررسی برای حافظه استاتیک / تشخیص موازی. |
کامپایلر Intel C ++ 11.1 | ۲۳ ژوئن ۲۰۰۹ | پشتیبانی از آخرین دستورالعملهای Intel SSE SSE4.2، AVX و AES. برنامه افزودنی خطایاب موازی. ادغام پیشرفته در Microsoft Visual Studio , Eclipse CDT 5.0 و Mac Xcode IDE. |
Intel C ++ Composer XE 2011 تا بروزرسانی ۵ (کامپایلر ۱۲٫۰) | ۷ نوامبر ۲۰۱۰ | برنامههای افزودنی زبان Cilk Plus، موازی سازی خودکار هدایت شده، پشتیبانی بهتر C ++ 11.[۹] |
Intel C ++ Composer XE 2011 Update 6 و بالاتر (کامپایلر ۱۲٫۱) | ۸ سپتامبر ۲۰۱۱ | افزونههای زبان Cilk Plus برای پشتیبانی از مشخصات نسخه ۱٫۱ به روز شده و علاوه بر ویندوز و لینوکس در Mac OS X نیز موجود است، Threading Building Blocks برای پشتیبانی از نسخه ۴٫۰ به روز شدهاست، اپل از Mac OS X پشتیبانی میکند، پشتیبانی C ++ 11 از جمله پشتیبانی از Variadic را بهبود میبخشد الگوها، پشتیبانی از OpenMP 3.1. |
Intel C ++ Composer XE 2013 (کامپایلر ۱۳٫۰) | ۵ سپتامبر ۲۰۱۲ | پشتیبانی مبتنی بر لینوکس از پردازندههای پردازنده Intel Xeon Phi، پشتیبانی از Microsoft Visual Studio 12 (دسکتاپ)، پشتیبانی از gcc 4.7، پشتیبانی از دستورالعملهای Intel AVX 2، به روزرسانیهای موجود برای بهبود عملکرد برنامه.[۱۰] |
Intel C ++ Composer XE 2013 SP1 (کامپایلر ۱۴٫۰) | ۴ سپتامبر ۲۰۱۳ | نصب کننده آنلاین؛ پشتیبانی از پردازندههای Intel Xeon Phi؛ پیش نمایش Win32 فقط برای گرافیک Intel پشتیبانی میکند. پشتیبانی از C ++ 11 بهبود یافتهاست |
Intel C ++ Composer XE 2013 SP1 Update 1 (کامپایلر ۱۴٫۰٫۱) | ۱۸ اکتبر ۲۰۱۳ | محلی سازی ژاپنی ۱۴٫۰؛ پشتیبانی از ویندوز ۸٫۱ و Xcode 5.0 |
کامپایلر Intel C ++ برای اندروید (کامپایلر ۱۴٫۰٫۱) | ۱۲ نوامبر ۲۰۱۳ | میزبانی شده در ویندوز، لینوکس یا OS X، سازگار با ابزارهای Android NDK از جمله کامپایلر gcc و Eclipse |
Intel C ++ Composer XE 2015 (کامپایلر ۱۵٫۰) | ۲۵ ژوئیه ۲۰۱۴ | پشتیبانی کامل از زبان C ++ 11؛ پیشرفتهای اضافی OpenMP 4.0 و Cilk Plus |
Intel C ++ Composer XE 2015 Update 1 (کامپایلر ۱۵٫۰٫۱) | ۳۰ اکتبر ۲۰۱۴ | پشتیبانی از AVX-512؛ بومی سازی ژاپنی |
Intel C ++ 16.0 | ۲۵ اوت ۲۰۱۵ | در دسترس بودن سوئیت (Intel Parallel Studio XE, Intel System Studio) |
Intel C ++ 17.0 | ۱۵ سپتامبر ۲۰۱۶ | در دسترس بودن سوئیت (Intel Parallel Studio XE, Intel System Studio) |
Intel C ++ 18.0 | ۲۶ ژانویه ۲۰۱۷ | در دسترس بودن سوئیت (Intel Parallel Studio XE, Intel System Studio) |
Intel C ++ 19.0 | ۳ آوریل ۲۰۱۸ | در دسترس بودن سوئیت (Intel Parallel Studio XE, Intel System Studio) |
پرچم و راهنما
[ویرایش]مستندات را میتوان در سایت Intel Documentation Technical Software یافت.
ویندوز | لینوکس، مک و فریبیاسدی | اظهار نظر |
---|---|---|
Od/ | O0- | بدون بهینهسازی |
O1/ | O1- | برای اندازه بهینه کنید |
O2/ | O2- | سرعت را بهینه کنید و برخی از بهینهسازیها را فعال کنید |
O3/ | O3- | همه بهینهسازیها را به عنوان O2 و بهینهسازیهای حلقه فشرده را فعال کنید |
arch:SSE3/ | msse3/- | SSE3، SSE2 و دستورالعملهای SSE را قادر میسازد بهینهسازی برای پردازندههای غیر اینتل[۱۱] |
fast/ | fast- | مختصر نویسی در ویندوز این برابر است با " / O3 / Qipo / QxHost / Opred-div- "؛ در Linux " -O3 -ipo -static -xHOST-no-prec-div ". توجه داشته باشید که پردازنده خاص بهینهسازی پرچم (-xHOST) برای پردازنده بهینهسازی وارد شده در آن تنها پرچم fast که ممکن است نادیده گرفتهاست |
Qprof-gen/ | prof_gen- | برنامه را کامپایل کرده و برای اجرای پروفایل از آن استفاده کنید |
Qprof-use/ | prof_use- | فقط پس از اجرای برنامه ای که قبلاً با استفاده از prof_gen کامپایل شده بود، قابل استفاده است. در هر مرحله از مراحل گردآوری از اطلاعات پروفایل استفاده میکند |
اشکال زدایی
[ویرایش]کامپایلر اینتل اطلاعات اشکال زدایی استاندارد برای اشکال زداهای رایج (مانند DWARF 2 در لینوکس، مشابه gdb و COFF برای ویندوز) را ارائه میدهد. پرچمهایی که با اطلاعات اشکال زدایی کامپایل میشوند Zi/ در ویندوز و -g در لینوکس هستند. اشکال زدایی در ویندوز با استفاده از خطایاب ویژوال استودیو(VS) و در لینوکس با استفاده از gdb انجام میشود.
در حالی که کامپایلر اینتل میتواند یک خروجی رخنمانگاری سازگار با gprof ایجاد کند، اینتل همچنین یک پروفایل آماری سطح هسته و سیستم را به نام Intel VTune Profiler فراهم میکند. VTune را میتوان از طریق خط فرمان یا از طریق GUI موجود در لینوکس یا ویندوز استفاده کرد. همچنین میتواند در ویژوال استودیو در ویندوز یا اکلیپس (Eclipse) در لینوکس ادغام شود). علاوه بر ثبت کننده (پروفایلر) VTune , Intel Advisor نیز وجود دارد که در زمینه بهینهسازی برداری، مدلسازی بارگیری، طراحی نمودار جریان و ابزارهای طراحی رشته و نمونه سازی تخصص دارد.
اینتل همچنین ابزاری را برای شناسایی خطای حافظه و نخ با نام Intel Inspector XE ارائه میدهد. در مورد خطاهای حافظه، به تشخیص نشت حافظه، خرابی حافظه، تخصیص / عدم تخصیص تطابق API و استفاده ناسازگار از API حافظه کمک میکند. با توجه به خطاهای نخ (threading)، این امر به شناسایی انواع مختلف داده (heap و stack)، بنبستها و خطاهای همگام سازی API کمک میکند.
منابع
[ویرایش]- ↑ "Intel® C++ Compiler Release Notes and New Features". software.intel.com.
- ↑ "Intel® C++ Compiler 19.1 Release Notes". software.intel.com.
- ↑ "Intel C++ Compiler for Android documentation". software.intel.com.الگو:Citation not found
- ↑ "Intel® System Studio 2016 for FreeBSD* | Intel® Software". software.intel.com (به انگلیسی). Retrieved 2018-03-15.
- ↑ A. J. C. Bik, The Software Vectorization Handbook (Intel Press, Hillsboro, OR, 2004), شابک ۰−۹۷۴۳۶۴۹−۲−۴.
- ↑ The Software Optimization Cookbook, High-Performance Recipes for IA-32 Platforms, Richard Gerber, Aart J.C. Bik, Kevin B. Smith, and Xinmin Tian, Intel Press, 2006
- ↑ Intel C++ Compiler XE 13.0 User and Reference Guides
- ↑ The pitfalls of verifying floating-point computations, by David Monniaux, also printed in ACM Transactions on programming languages and systems (TOPLAS), May 2008; section 4.3.2 discusses nonstandard optimizations.
- ↑ This note is attached to the release in which Cilk Plus was introduced. This ULR points to current documentation: http://software.intel.com/en-us/intel-composer-xe/
- ↑ Intel C++ Composer XE 2013 Release Notes http://software.intel.com/en-us/articles/intel-c-composer-xe-2013-release-notes/
- ↑ "Intel® Compilers | Intel® Developer Zone". Intel.com. 1999-02-22. Retrieved 2012-10-13.