کامپایلرهای اینتل چرا به کامپایلرهای جدید نیاز بود؟
کامپایلرهای Intel C++ و Fortran و کتابخانه MKL
همراه با کامپایلرهای استاندارد گنو برای لینوکس، کامپایلرهای سی پلاس پلاس و فرترن اینتل روی خوشه های مجتمع محاسباتی NIVC نصب شده اند. در حال حاضر (ابتدای سال 2006)، کامپایلرهای نسخه 9.1 بر روی همه کلاسترها نصب شده اند. این صفحه به تشریح مهمترین گزینه ها و تنظیمات این کامپایلرها و همچنین تفاوت های اصلی آنها با کامپایلرهای گنو اختصاص یافته است. این صفحه عمدتاً برای کاربران خوشههای مرکز محاسبات تحقیقاتی MSU طراحی شده است، اما ممکن است برای سایر کاربران روسی زبان نیز مفید باشد. مسائل مربوط به تدوین برای پلت فرم IA-64 در اینجا مطرح نشده است.
همچنین کتابخانه اینتل بر روی تمامی کلاسترها نصب شده است کتابخانه ریاضی هسته(MKL) نسخه 8.0.2. کتابخانه در پوشه /usr/mkl قرار دارد. لطفاً توجه داشته باشید که زیر شاخه های 32، 64 و em64t در دایرکتوری lib موجود هستند. در خوشه Ant باید از کتابخانه ها از زیر شاخه em64t استفاده کنید و در خوشه های دیگر - از زیر شاخه 32. تمام اسناد و نمونه های لازم را می توان از پوشه /usr/mkl/doc به دست آورد.
چرا به کامپایلرهای جدید نیاز بود؟
نیاز به کامپایلرهای جدید عمدتاً به الف) پشتیبانی از برنامه نویسی در فرترن 90 و همچنین ب) برای بهینه سازی قوی تر برنامه های فرترن نسبت به کامپایلر g77 که از ترجمه به C و سپس کامپایل با استفاده از gcc استفاده می کند، ایجاد شد.
کامپایلرهای PGI (گروه پورتلند) نیز این الزامات را برآورده می کنند، اما شرکت توسعه دهنده از عرضه آنها به روسیه خودداری کرد.
چگونه استفاده کنیم؟
کامپایلرهای اینتل با استفاده از دستورات فراخوانی می شوند icc(C یا C++)، icpc(C++) و آیفورت(فرتران 77/90). دستورات mpicc، mpiCC و mpif77 برای کامپایل و مونتاژ برنامه های MPI نیز برای استفاده از کامپایلرهای اینتل پیکربندی شده اند.
همچنین می توان از کامپایلرهای گنو با استفاده از دستورات mpigcc، mpig++ و mpig77 استفاده کرد (فرترن 90 پشتیبانی نمی شود).
فایل های ورودی
به طور پیش فرض، فایل هایی با پسوند cppو .cxxمتون مبدأ در زبان C++، فایل هایی با پسوند در نظر گرفته می شوند ج- کد منبع C، و کامپایلر icpc نیز فایل های .c را به عنوان کد منبع C++ کامپایل می کند.
فایل های با پسوند .f, .ftnو .برایبه عنوان متون مبدأ در زبان Fotran، با شکل ثابت علامت گذاری و فایل ها شناسایی می شوند fppو .Fعلاوه بر این، از پیش پردازنده زبان فرترن عبور کرد. فایل های با پسوند f90متون منبع فرترن 90/95 با نماد فرم آزاد در نظر گرفته می شوند. با استفاده از گزینهها میتوانید صریحاً یک شکل ثابت یا رایگان از نمادگذاری برای برنامههای فرترن را مشخص کنید -FIو -FRبه ترتیب.
فایل های با پسوند .sبه عنوان کد زبان اسمبلی برای IA-32 شناخته شده است.
ویژگی های کامپایلر اینتل
در اینجا ما ویژگی های کامپایلرهای اینتل را همانطور که توسعه دهنده در کتابچه راهنمای کاربر با برخی از نظرات خود بیان کرده است، ارائه می دهیم.
- بهینه سازی قابل توجه
ظاهراً این به معنای بهینه سازی کد در سطح بالایی است. اول از همه، تبدیل های حلقه های مختلف، که تقریباً همه کامپایلرها با موفقیت کم یا زیاد انجام می دهند - بهینه سازی نقطه شناور
ظاهراً این به معنای استفاده حداکثری از دستورات اجرا شده در سطح سخت افزار است - بهینه سازی های بین رویه ای
آن ها بهینه سازی سراسری کل برنامه، برخلاف بهینه سازی معمولی، که تنها بر روی کد توابع خاص تأثیر می گذارد - بهینه سازی مبتنی بر پروفایل
آن ها توانایی اجرای یک برنامه در حالت تست، جمع آوری داده ها در مورد زمان لازم برای ارسال قطعات کد خاص در داخل توابع پرکاربرد، و سپس استفاده از این داده ها برای بهینه سازی - پشتیبانی از مجموعه دستورات SSE در پردازنده های Pentium III
توجه: برای وظایف محاسباتی، دستورات SSE2 بیشتر مورد توجه هستند، به عنوان مثال. دستورات برداری بیش از اعداد واقعی 64 بیتی را صادر می کند، اما آنها فقط در پردازنده های Pentium 4 پشتیبانی می شوند که ما هنوز در اختیار نداریم. - بردارسازی خودکار
آن ها دوباره با استفاده از دستورات SSE و SSE2 که به صورت خودکار توسط کامپایلر درج می شوند - پشتیبانی OpenMP برای برنامه نویسی در سیستم های SMP
توجه: در یک خوشه توصیه می شود در درجه اول از رابط MPI استفاده کنید. استفاده گسترده از OpenMP در خوشه مورد انتظار نیست و چنین آزمایشاتی هنوز انجام نشده است. اما احتمالاً استفاده از کتابخانه هایی (BLAS و غیره) که برای حافظه مشترک موازی شده اند منطقی است. - پیش واکشی داده ها
آن ها ظاهراً استفاده از دستورات پیش بارگذاری از حافظه به کش داده ها که پس از مدتی مورد نیاز خواهد بود - کد "Dispatching" برای پردازنده های مختلف
آن ها توانایی تولید کد برای پردازنده های مختلف در یک فایل اجرایی که به شما امکان می دهد از مزایای آن استفاده کنید جدیدترین پردازنده هابرای دستیابی به بالاترین عملکرد در آنها، در حالی که سازگاری باینری برنامه ها با پردازنده های قبلی حفظ می شود. در خوشه ما این هنوز مرتبط نیست، زیرا فقط از پردازنده های Pentium III استفاده می شود و برنامه های کامپایل شده در کلاستر قرار نیست روی ماشین های دیگر منتقل و اجرا شوند.
گزینه های اصلی کامپایلر
جالب ترین، البته، گزینه های بهینه سازی کد هستند. اکثر گزینه ها برای کامپایلرهای C++ و Fortran مشترک هستند. بیشتر توصیف همراه با جزئیاتگزینه ها در کتابچه راهنمای کاربر انگلیسی
سطوح بهینه سازی | |
---|---|
گزینه | شرح |
-O0 | بهینه سازی را غیرفعال می کند |
-O1 یا -O2 | بهینه سازی اولیه برای سرعت درج درون خطی توابع کتابخانه غیرفعال است. برای کامپایلر ++C، این گزینه ها همان بهینه سازی را ارائه می دهند؛ برای کامپایلر فرترن، گزینه -O2 ترجیح داده می شود، زیرا همچنین شامل ارتقای چرخه است. |
-O3 | بهینهسازیهای قویتر از جمله تبدیل حلقه، واکشی اولیه داده و استفاده از OpenMP. برخی از برنامه ها ممکن است عملکرد بهبود یافته را در مقایسه با آن تضمین نکنند -O2. استفاده در ارتباط با گزینه های برداری منطقی است -xKو -xW. |
-unroll[n] | باز کردن حلقه را تا n بار فعال می کند. |
بهینه سازی برای یک پردازنده خاص | |
گزینه | شرح |
-tpp6 | بهینه سازی برای پردازنده های Penitum Pro، Pentium II و Pentium III |
-tpp7 | بهینه سازی برای پردازنده های Penitum 4 (این گزینه به طور پیش فرض برای کامپایلر IA-32 فعال است) |
-xM | تولید کد با استفاده از پسوندهای MMX مخصوص پردازنده های Pentium MMX، Pentium II و جدیدتر |
-xK | تولید کد با استفاده از پسوندهای SSE مخصوص پردازنده های Pentium III |
-xW | تولید کد با استفاده از پسوندهای SSE2 مخصوص پردازنده های پنتیوم 4 |
بهینه سازی بین رویه ای | |
-ip | بهینه سازی بین رویه ای در یک فایل فعال می شود. اگر گزینه را مشخص کنید -ip_no_inlining، سپس درج تابع درون خطی غیرفعال می شود. |
-ipo | بهینه سازی بین رویه ای بین فایل های مختلف را فعال می کند |
بهینه سازی با استفاده از پروفایل ها | |
-prof_gen | یک کد "پروفایل" تولید می شود که برای پروفایل استفاده می شود، یعنی. جمع آوری داده ها در مورد دفعات عبور از مکان های خاص در برنامه |
-prof_use | بهینه سازی بر اساس داده های به دست آمده در مرحله پروفایل انجام می شود. استفاده از آن همراه با گزینه بهینه سازی بین رویه ای منطقی است -ipo. |
موازی سازی برای سیستم های SMP | |
-openmp | پشتیبانی از استاندارد OpenMP 2.0 را فعال می کند |
-موازی | موازی سازی خودکار حلقه فعال است |
کارایی
با توجه به نتایج اجرای آزمایشهای SPEC CPU2000، منتشر شده در سرور ixbt.com، کامپایلرهای اینتل نسخه 6.0 تقریباً در مقایسه با کامپایلرهای gcc نسخههای 2.95.3، 2.96 و 3.1 و PGI نسخه 4.0.2 بهتر بودند. این تست ها در سال 2002 بر روی کامپیوتری با پردازنده Pentium 4/1.7 GHz و RedHat Linux 7.3 انجام شد.
طبق آزمایشهای انجامشده توسط Polyhedron، کامپایلر فرترن اینتل نسخه 7.0 تقریباً به طور کلی برتر از سایر کامپایلرهای Fortran 77 برای لینوکس (Absoft، GNU، Lahey، NAG، NAS، PGI) بود. فقط در برخی از آزمایشات کامپایلر اینتل کمی کمتر از کامپایلرهای Absoft، NAG و Lahey است. این تست ها روی کامپیوتری با پردازنده Pentium 4/1.8 گیگاهرتز و Mandrake Linux 8.1 انجام شد.
کامپایلرهای اینتل نسخه 9.1 نیز از کامپایلرهای gcc بهتر عمل می کنند و عملکردی قابل مقایسه با Absoft، PathScale و PGI نشان می دهند.
از آن دسته از کاربران و خوانندگانی که دادههایی را درباره تأثیر انتخاب کامپایلر (GCC یا اینتل) و گزینههای بهینهسازی روی سرعت کار بر روی مشکلات واقعی خود برای ما ارسال میکنند، سپاسگزار خواهیم بود.
کتابخانه ها
کامپایلر زبان C از یک کتابخانه زمان اجرا توسعه یافته در پروژه گنو استفاده می کند ( libc.a).
کتابخانه های زیر با کامپایلر Intel C++ عرضه می شوند:
- libcprts.a- کتابخانه زبان C++ اجرا شده توسط Dinkumware.
- libcxa.a- کتابخانه زمان اجرا اضافی برای توسعه C++ توسط اینتل.
- libimf.a- کتابخانه ای از توابع ریاضی توسعه یافته توسط اینتل، که شامل پیاده سازی های بهینه و با دقت بالا از توابع مثلثاتی، هذلولی، نمایی، ویژه، پیچیده و دیگر است (برای جزئیات بیشتر، به لیست توابع مراجعه کنید).
- libirc.a- پشتیبانی زمان اجرا برای پروفایل (PGO) و ارسال کد بسته به پردازنده (به بالا مراجعه کنید).
- libguide.a- پیاده سازی OpenMP.
این لیست شامل کتابخانه های ثابت است، اما برای اکثر آنها کتابخانه های پویا نیز وجود دارد، به عنوان مثال. گزینه های متصل در هنگام راه اندازی ( .بنابراین).
کتابخانه های زیر با کامپایلر فرترن عرضه می شوند: libCEPCF90.a, libIEPCF90.a, libintrins.a, libF90.a، از کتابخانه توابع ریاضی libimf.a نیز استفاده شده است.
ساخت فایل اجرایی
کتابخانه ها را می توان به صورت ایستا (در حین ساخت) یا پویا (در حین راه اندازی برنامه) متصل کرد. رویکرد پویا به شما این امکان را میدهد که حجم فایل اجرایی را کاهش دهید و به شما امکان میدهد یک نسخه مشابه از کتابخانه را در حافظه به اشتراک بگذارید، اما برای این کار باید مجموعه کاملی از کتابخانههای پویا را روی هر گره نصب کنید که برنامهها در آن اجرا میشوند. .
بنابراین، اگر کامپایلر اینتل را روی دستگاه لینوکس خود نصب کرده اید و می خواهید فایل های اجرایی کامپایل شده را بر روی ماشین های دیگر اجرا کنید، باید یا از یک ساخت استاتیک (که راحت تر است) استفاده کنید یا کتابخانه های پویا اینتل را در این ماشین ها کپی کنید (معمولا از یک دایرکتوری مانند /opt/intel /compiler70/ia32/lib) به یکی از دایرکتوری های فهرست شده در فایل /etc/ld.so.conf، و همچنین مطمئن شوید که مجموعه ای از کتابخانه های پویا گنو/لینوکس روی آنها نصب شده است. ماشین آلات
به طور پیش فرض، تمام کتابخانه های توسعه اینتل (به جز libcxa.so) به صورت ایستا و تمام کتابخانه های سیستم لینوکس و کتابخانه های گنو به صورت پویا پیوند داده شده اند. با استفاده از گزینه -استاتیکمی توانید جمع آوری کننده (ویرایشگر پیوند) را مجبور کنید که تمام کتابخانه ها را به صورت ایستا متصل کند (که باعث افزایش حجم می شود فایل اجرایی) و با استفاده از گزینه -i_dynamicشما می توانید به صورت پویا تمام کتابخانه های توسعه اینتل را پیوند دهید.
هنگام اتصال کتابخانه های اضافی با استفاده از گزینه view -کتابخانهممکن است لازم باشد از گزینه استفاده کنید -دایرکتوریبرای تعیین مسیری که کتابخانه ها در آن قرار دارند.
با استفاده از گزینه ها -Bstaticو -بی دینامیکشما می توانید صریحاً اتصال پویا یا استاتیک هر یک از کتابخانه های مشخص شده را مشخص کنید خط فرمان.
با استفاده از گزینه -جاسمبلی فایل اجرایی غیرفعال است و فقط کامپایل انجام می شود (تولید ماژول شی).
به اشتراک گذاری ماژول ها در فرترن و سی
برای به اشتراک گذاشتن ماژول های نوشته شده در Fortran و C، باید در مورد نامگذاری رویه ها در ماژول های شی، عبور پارامترها و دسترسی به متغیرهای سراسری، در صورت وجود، توافق کنید.
به طور پیشفرض، کامپایلر فرترن اینتل، نامهای رویهها را به حروف کوچک تبدیل میکند و یک زیرخط به انتهای نام اضافه میکند. کامپایلر C هرگز نام توابع را تغییر نمی دهد. بنابراین، اگر بخواهیم تابع یا رویهای را که در C پیادهسازی شده در C از ماژول Fortran فراخوانی کنیم، در ماژول C باید fnname_ نامیده شود.
کامپایلر فرترن از این گزینه پشتیبانی می کند -nus [نام فایل]، که به شما امکان می دهد اضافه کردن زیرخط به نام رویه های داخلی را غیرفعال کنید. اگر نام فایل مشخص شده باشد، این کار فقط برای نامهای رویه فهرست شده در فایل مشخص شده انجام میشود.
بهطور پیشفرض، در فرترن پارامترها با مرجع و در C همیشه با مقدار ارسال میشوند. بنابراین، هنگام فراخوانی یک رویه Fortran از یک ماژول C، ما باید نشانگرهایی را به متغیرهای مربوطه ارسال کنیم که حاوی مقادیر پارامترهای واقعی به عنوان پارامتر هستند. هنگام نوشتن تابعی در C که باید از یک ماژول فرترن فراخوانی شود، باید پارامترهای رسمی را به عنوان نشانگرهای انواع مربوطه توصیف کنیم.
در ماژول های C، امکان استفاده از بلوک های COMMON تعریف شده در ماژول های فرترن وجود دارد (برای اطلاعات بیشتر، به راهنمای کاربر کامپایلر اینتل، فصل ترکیب C و فرترن مراجعه کنید).
اشتراک گذاری کامپایلرهای اینتل و GCC
ماژول های شی C تولید شده توسط کامپایلر Intel C++ با ماژول های تولید شده توسط کامپایلر GCC و کتابخانه GNU C سازگار هستند. بنابراین، این ماژول ها را می توان در یک برنامه واحد که با استفاده از دستورات icc یا gcc کامپایل شده است، استفاده کرد، اما توصیه می شود از icc برای گنجاندن صحیح کتابخانه های اینتل استفاده کنید.
کامپایلر اینتل از تعدادی پسوند زبان C غیر استاندارد که توسط پروژه گنو استفاده می شود و توسط کامپایلر GCC پشتیبانی می شود، پشتیبانی می کند (اما نه همه آنها، برای جزئیات بیشتر اینجا را ببینید).
دفترچه راهنمای کاربر چیزی در مورد سازگاری ماژول های شی در زبان های C++ و Fortran بیان نمی کند؛ ظاهراً پشتیبانی نمی شود.
پشتیبانی از استانداردها
اینتل C++ Compiler 7.0 برای لینوکس از استاندارد زبان ANSI/ISO C (ISO/IEC 9899/1990) پشتیبانی می کند. امکان ایجاد سازگاری دقیق با استاندارد ANSI C ( -ansi) یا گویش گسترده ANSI C ( -خا). هنگام استفاده از گزینه -c99
در شماره قبلی مجله، محصولاتی از خانواده اینتل VTune Performance Analyzer را مورد بحث قرار دادیم - ابزارهای تجزیه و تحلیل عملکرد که به شایستگی در بین توسعه دهندگان برنامه محبوب هستند و امکان شناسایی در کد را فراهم می کنند. برنامه های تیم، که منابع CPU زیادی را هدر می دهد و به توسعه دهندگان فرصت شناسایی و حذف پتانسیل را می دهد مکان های باریک، با بخش های مشابه کد مرتبط است و در نتیجه روند توسعه برنامه را سرعت می بخشد. البته توجه داشته باشید که عملکرد برنامه ها تا حد زیادی به کارآمدی کامپایلرهای مورد استفاده در توسعه آنها و چه ویژگی هایی بستگی دارد. سخت افزارآنها هنگام تولید کد ماشین استفاده می شوند.
آخرین نسخه کامپایلرهای Intel C++ و Intel Fortran برای ویندوز و لینوکس به شما امکان می دهد از مزایای عملکرد برنامه برای سیستم های مبتنی بر پردازنده های اینتل Itanium 2، Intel Xeon و اینتل پنتیوم 4 تا 40 درصد نسبت به کامپایلرهای موجود سایر سازندگان به دلیل استفاده از ویژگی های این پردازنده ها مانند فناوری Hyper-Threading.
تفاوتهای مرتبط با بهینهسازی کد توسط این خانواده از کامپایلرها شامل استفاده از پشته برای انجام عملیات ممیز شناور، بهینهسازی بین رویهای (IPO)، بهینهسازی مطابق با نمایه برنامه (بهینهسازی هدایت شده پروفایل (PGO)، بارگذاری پیشفرض داده در حافظه پنهان ( پیش واکشی داده)، که از تأخیر مرتبط با دسترسی به حافظه جلوگیری می کند، پشتیبانی از ویژگی های مشخصه پردازنده های اینتل (به عنوان مثال، برنامه های افزودنی برای پردازش داده های جریانی Intel Streaming SIMD Extensions 2، مشخصه Intel Pentium 4)، موازی سازی خودکار اجرای کد، برنامه کاربردی ایجاد، در حال اجرا بر روی چندین انواع متفاوتپردازنده ها هنگام بهینه سازی برای یکی از آنها، ابزارهایی برای "پیش بینی" کدهای بعدی (پیش بینی شاخه)، پشتیبانی گسترده برای کار با رشته های اجرایی.
توجه داشته باشید که کامپایلرهای اینتل در شرکت های معروفی مانند Alias/Wavefront، Oracle، Fujitsu Siemens، ABAQUS، Silicon Graphics، IBM استفاده می شوند. با توجه به آزمایش مستقل انجام شده توسط تعدادی از شرکت ها، عملکرد کامپایلرهای اینتل به طور قابل توجهی بالاتر از عملکرد کامپایلرهای سایر سازندگان است (به عنوان مثال، http://intel.com/software/products/compilers/techtopics/compiler_gnu_perf را ببینید. .pdf).
در زیر به بررسی برخی از ویژگی ها می پردازیم آخرین نسخه هاکامپایلرهای اینتل برای دسکتاپ و سرور سیستم های عامل.
کامپایلرها برای پلتفرم مایکروسافت ویندوز
اینتل C++ Compiler 7.1 برای ویندوز
Intel C++ Compiler 7.1 کامپایلری است که در اوایل سال جاری منتشر شد که کدهای بسیار بهینه شده ای را برای پردازنده های Intel Itanium، Intel Itanium 2، Intel Pentium 4 و Intel Xeon و همچنین پردازنده Intel Pentium M با استفاده از فناوری Intel Centrino ارائه می دهد و برای استفاده در دستگاه های تلفن همراه
کامپایلر مشخص شده کاملاً با ابزارهای توسعه Microsoft Visual C++ 6.0 و Microsoft Visual Studio .NET سازگار است: می تواند در محیط های توسعه مربوطه ساخته شود.
این کامپایلر از استانداردهای ANSI و ISO C/C++ پشتیبانی می کند.
اینتل فرترن کامپایلر 7.1 برای ویندوز
Intel Fortran Compiler 7.1 برای ویندوز، که اوایل امسال نیز منتشر شد، به شما امکان می دهد کد بهینه سازی شده برای پردازنده های Intel Itanium، Intel Itanium 2، Intel Pentium 4 و Intel Xeon، Intel Pentium M ایجاد کنید.
این کامپایلر با ابزارهای توسعه Microsoft Visual C++ 6.0 و Microsoft Visual Studio .NET کاملاً سازگار است، یعنی می توان آن را در محیط های توسعه مربوطه تعبیه کرد. علاوه بر این، این کامپایلر به شما اجازه می دهد تا برنامه های کاربردی 64 بیتی را برای سیستم عامل های در حال اجرا بر روی پردازنده های Itanium/Itanium 2 با استفاده از Microsoft Visual Studio بر روی یک پردازنده Pentium 32 بیتی با استفاده از کامپایلر 64 بیتی Intel Fortran توسعه دهید. هنگام اشکال زدایی کد، این کامپایلر به شما امکان می دهد از یک دیباگر استفاده کنید پلتفرم های مایکروسافت.خالص.
اگر محصول Compaq را نصب کرده اید، می توان از Visual Fortran 6.6 به جای کامپایلر اصلی Intel Fortran 7.1 استفاده کرد، زیرا این کامپایلرها در سطح سازگار هستند. کد منبع.
Intel Fortran Compiler 7.1 for Windows کاملاً با استاندارد ISO Fortran 95 سازگار است و از ایجاد و اشکال زدایی برنامه های کاربردی حاوی کد به دو زبان C و Fortran پشتیبانی می کند.
کامپایلرها برای پلتفرم لینوکس
اینتل C++ Compiler 7.1 برای لینوکس
کامپایلر دیگری که در ابتدای سال منتشر شد، Intel C++ Compiler 7.1 برای لینوکس، به شما اجازه می دهد تا به درجه بالایی از بهینه سازی کد برای پردازنده های Intel Itanium، Intel Itanium 2، Intel Pentium 4، Intel Pentium M دست پیدا کنید. این کامپایلر کاملاً ساخته شده است. سازگار با کامپایلر GNU C در کد منبع و ماژول های شی، که به شما امکان می دهد برنامه های ایجاد شده با استفاده از گنو سی را بدون هزینه اضافی به آن منتقل کنید. زیر کنترل لینوکسکد کامپایل شده برای پلتفرم های دیگر مانند سیستم عامل های اولیه SCO، نسخه های اولیه Sun Solaris و غیره)، که به معنای سازگاری کامل با کامپایلر gcc 3.2 در سطح کد باینری است. در نهایت، با Intel C++ Compiler 7.1 برای لینوکس، حتی میتوانید هسته لینوکس را با ایجاد چند تغییر جزئی در کد منبع آن دوباره کامپایل کنید.
کامپایلر Intel Fortran 7.1 برای لینوکس
کامپایلر Intel Fortran 7.1 برای لینوکس به شما امکان می دهد کد بهینه سازی شده برای پردازنده های Intel Itanium، Intel Itanium 2، Intel Pentium 4، Intel Pentium M ایجاد کنید. برای کامپایل مجدد برنامه ها با استفاده از آن ایجاد شده با استفاده از Compaq Visual Fortran و در نتیجه افزایش عملکرد آنها.
علاوه بر این، کامپایلر مشخص شده با ابزارهایی مانند ویرایشگر emacs، دیباگر gdb و ابزار ساخت اپلیکیشن make توسط توسعه دهندگان سازگار است.
همانند نسخه ویندوزی این کامپایلر، اینتل فرترن کامپایلر 7.1 برای لینوکس کاملاً با استاندارد ISO Fortran 95 سازگار است و از ایجاد و اشکال زدایی برنامه های کاربردی حاوی کد به دو زبان C و Fortran پشتیبانی می کند.
به ویژه باید تأکید کرد که متخصصان مرکز توسعه نرم افزار روسیه روسیه در نیژنی نووگورود سهم قابل توجهی در ایجاد کامپایلرهای فهرست شده اینتل داشته اند. بیشتر اطلاعات دقیقاطلاعات مربوط به کامپایلرهای اینتل را می توانید در وب سایت اینتل به آدرس www.intel.com/software/products/ بیابید.
بخش دوم این مقاله به کامپایلرهای اینتل که برنامه های کاربردی را برای دستگاه های تلفن همراه ایجاد می کنند، اختصاص خواهد داشت.
تو برده نیستی!
دوره آموزشی بسته برای کودکان نخبه: "آرایش واقعی جهان".
http://noslave.org
مطالب از ویکی پدیا - دانشنامه آزاد
خطای Lua در Module:Wikidata در خط 170: تلاش برای نمایه سازی فیلد "wikibase" (مقدار صفر). | ||||||||||||||||||||||||||||||||||||
تایپ کنید | ||||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
نویسنده |
خطای Lua در Module:Wikidata در خط 170: تلاش برای نمایه سازی فیلد "wikibase" (مقدار صفر). |
|||||||||||||||||||||||||||||||||||
توسعه دهنده | ||||||||||||||||||||||||||||||||||||
توسعه دهندگان |
خطای Lua در Module:Wikidata در خط 170: تلاش برای نمایه سازی فیلد "wikibase" (مقدار صفر). |
|||||||||||||||||||||||||||||||||||
نوشته شده بر روی |
خطای Lua در Module:Wikidata در خط 170: تلاش برای نمایه سازی فیلد "wikibase" (مقدار صفر). |
|||||||||||||||||||||||||||||||||||
رابط |
خطای Lua در Module:Wikidata در خط 170: تلاش برای نمایه سازی فیلد "wikibase" (مقدار صفر). |
|||||||||||||||||||||||||||||||||||
سیستم عامل | ||||||||||||||||||||||||||||||||||||
زبان های رابط |
خطای Lua در Module:Wikidata در خط 170: تلاش برای نمایه سازی فیلد "wikibase" (مقدار صفر). |
|||||||||||||||||||||||||||||||||||
چاپ اول |
خطای Lua در Module:Wikidata در خط 170: تلاش برای نمایه سازی فیلد "wikibase" (مقدار صفر). |
|||||||||||||||||||||||||||||||||||
پلت فرم سخت افزاری | ||||||||||||||||||||||||||||||||||||
آخرین نسخه | ||||||||||||||||||||||||||||||||||||
نامزد انتشار |
خطای Lua در Module:Wikidata در خط 170: تلاش برای نمایه سازی فیلد "wikibase" (مقدار صفر). |
|||||||||||||||||||||||||||||||||||
نسخه بتا |
خطای Lua در Module:Wikidata در خط 170: تلاش برای نمایه سازی فیلد "wikibase" (مقدار صفر). |
|||||||||||||||||||||||||||||||||||
نسخه آلفا |
خطای Lua در Module:Wikidata در خط 170: تلاش برای نمایه سازی فیلد "wikibase" (مقدار صفر). |
|||||||||||||||||||||||||||||||||||
نسخه آزمایشی |
خطای Lua در Module:Wikidata در خط 170: تلاش برای نمایه سازی فیلد "wikibase" (مقدار صفر). |
|||||||||||||||||||||||||||||||||||
فرمت های فایل قابل خواندن |
خطای Lua در Module:Wikidata در خط 170: تلاش برای نمایه سازی فیلد "wikibase" (مقدار صفر). |
|||||||||||||||||||||||||||||||||||
فرمت های فایل تولید شده |
خطای Lua در Module:Wikidata در خط 170: تلاش برای نمایه سازی فیلد "wikibase" (مقدار صفر). |
|||||||||||||||||||||||||||||||||||
حالت |
خطای Lua در Module:Wikidata در خط 170: تلاش برای نمایه سازی فیلد "wikibase" (مقدار صفر). |
|||||||||||||||||||||||||||||||||||
مجوز |
ویژگی های اصلی:
کامپایلر از استاندارد OpenMP 3.0 برای نوشتن برنامه های موازی پشتیبانی می کند. همچنین شامل یک تغییر OpenMP به نام Cluster OpenMP است که با آن می توانید برنامه های نوشته شده مطابق با OpenMP را روی خوشه ها با استفاده از MPI اجرا کنید. کامپایلر C++ Intel از Frontend (بخشی از کامپایلر که برنامه کامپایل شده را تجزیه می کند) از گروه طراحی ادیسون استفاده می کند. همان ظاهر توسط کامپایلرهای SGI MIPSpro، Comeau C++ و Portland Group استفاده می شود. این کامپایلر به طور گسترده ای برای کامپایل بنچمارک های SPEC CPU استفاده می شود. 4 سری محصول از اینتل حاوی کامپایلر هستند:
از معایب نسخه لینوکس کامپایلر می توان به ناسازگاری جزئی با پسوندهای GNU زبان C (پشتیبانی شده توسط کامپایلر GCC) اشاره کرد که می تواند هنگام کامپایل برخی از برنامه ها مشکلاتی ایجاد کند.
گزینه های تجربینسخه های آزمایشی زیر از کامپایلر منتشر شد:
پرچم های اساسی
نظری در مورد مقاله "کامپایلر Intel C++" بنویسیدیادداشتهمچنین ببینیدپیوندها
گزیده ای از کامپایلر Intel C++و همچنین، او برای آخرین بار برای دیدن مجوس سفید بازگشت... شوهر و واقعی ترین دوستش که هرگز نتوانست او را فراموش کند. در دل او را بخشید. اما با تأسف فراوان او نتوانست آمرزش مجدلیه را برای او به ارمغان بیاورد... بنابراین، همانطور که می بینید، ایزیدورا، افسانه بزرگ مسیحی در مورد "بخشش" فقط یک دروغ کودکانه برای مؤمنان ساده لوح است تا به آنها اجازه دهد. هر کار بدی انجام دهند، زیرا می دانند که هر کاری که انجام دهند، سرانجام بخشیده می شوند. اما شما فقط می توانید چیزی را ببخشید که واقعاً شایسته بخشش باشد. انسان باید بفهمد که باید پاسخگوی هر بدی باشد... و نه در برابر خدای مرموز، بلکه در برابر خودش که خودش را مجبور به رنج ظالمانه کند. ماگدالنا ولادیکا را نبخشید ، اگرچه عمیقاً به او احترام می گذاشت و صمیمانه او را دوست داشت. همانطور که او نتوانست همه ما را به خاطر مرگ وحشتناک رادومیر ببخشد. از این گذشته، او بهتر از هر کس دیگری فهمید - ما می توانستیم به او کمک کنیم، می توانستیم او را از یک مرگ بی رحمانه نجات دهیم ... اما ما نمی خواستیم. از آنجا که گناه مجوس سفید را بیش از حد ظالمانه می دانست، او را رها کرد تا با این گناه زندگی کند و لحظه ای آن را فراموش نکرد... او نمی خواست به راحتی او را ببخشد. ما دیگر او را ندیدیم. همانطور که آنها هرگز نوزادان خود را ندیدند. از طریق یکی از شوالیه های معبد خود - جادوگر ما - مگدالن پاسخ ولادیکا را به درخواست او برای بازگشت به ما رساند: "خورشید در یک روز دو بار طلوع نمی کند ... شادی دنیای شما (رادومیر) خواهد بود. هرگز به سوی تو برنگرد، همانطور که من به سوی تو برنخواهم گشت و من... ایمان و حقیقت خود را یافتم، آنها زنده هستند، اما مال تو مرده است... برای پسرانت سوگوار باش - آنها تو را دوست داشتند. تا زنده ام هرگز تو را به خاطر مرگشان نخواهم بخشید. و ممکن است گناه شما با شما باقی بماند. شاید روزی برای شما نور و بخشش بیاورد... اما نه از من.» سر مجوس جان را به همین دلیل به متئورا نیاوردند - هیچ یک از شوالیه های معبد نمی خواستند به ما برگردند ... ما آنها را از دست دادیم ، همانطور که بیش از یک بار بسیاری دیگر را از دست داده ایم ، که نمی خواستند قربانیان ما را درک کنید و بپذیرید... چه کسی درست مثل شما انجام داد - آنها رفتند و ما را محکوم کردند.سرم می چرخید!.. مثل یک تشنه که گرسنگی ابدی خود را برای دانش فرو می نشاند، حریصانه جریان اطلاعات شگفت انگیزی را که سخاوتمندانه شمال داده بود جذب کردم... و خیلی بیشتر می خواستم!.. می خواستم همه چیز را بدانم تا پایان. نفسی بود از آب شیرین در صحرای سوخته از درد و ناراحتی! و من نتونستم ازش سیر بشم... - من هزاران سوال دارم! اما فرصتی نمانده... چیکار کنم شمال؟.. - بپرس، ایسیدورا!.. بپرس، سعی می کنم جوابت را بدهم... - به من بگو، سیور، چرا به نظر من این داستان ترکیبی از دو داستان زندگی است که با رویدادهای مشابه در هم تنیده شده است و آنها به عنوان زندگی یک نفر معرفی می شوند؟ یا من درست نیستم؟ - کاملاً درست می گویی، ایسیدورا. همانطور که قبلاً به شما گفتم، "قدرت های این جهان" که تاریخ نادرست بشریت را ایجاد کردند، زندگی بیگانه یوشع پیامبر یهودی را که یک و نیم هزار سال پیش می زیسته، بر زندگی واقعی مسیح "قرار دادند". از زمان داستان شمال). و نه تنها خودش، بلکه خانواده اش، بستگان و دوستانش، دوستان و پیروانش. از این گذشته، این همسر یوشع نبی، مریم یهودی بود که یک خواهر مارتا و یک برادر لازاروس، خواهر مادرش ماریا یاکوبه و دیگرانی داشت که هرگز به رادومیر و مجدلیه نزدیک نبودند. همانطور که هیچ "حواری" دیگری در کنار آنها وجود نداشت - پولس، متی، پطرس، لوقا و بقیه... این خانواده یوشع پیامبر بودند که یک و نیم هزار سال پیش به پروونس (که در آن روزها گال ماوراءالنهر نامیده می شد) به شهر یونانی ماسالیا (مارسیل کنونی) نقل مکان کردند، زیرا ماسالیا در آن زمان "دروازه" بین اروپا و آسیا، و این ساده ترین راه برای همه "آزار و اذیت" بود تا از آزار و اذیت و مشکلات جلوگیری کنند.
|