Internet Derazalar Android
Kengaytirmoq

Intel kompilyatori. Intel va GCC komplektsionerlarini almashish

Oldingi jurnalning oldingi soni, Intel VTune Amaldagi analizatsionerlar oilasining mahsulotlarini - amaliyotni ishlab chiquvchilarning mahsulotlarini - unumdorlikni tahlil qilish vositalari - bu juda ko'p protsessor resurslarini sarflash uchun sarflanadigan narsa sarflanadi Dasturchilar Kodeksning o'xshash bo'limlari bilan bog'liq potentsial inlekslenklarni aniqlash va yo'q qilish, dasturlarni ishlab chiqish jarayonini tezlashtirish imkoniyatini ishlab chiqadi. Ammo biz talabnomalarning bajarilishi ko'p jihatdan ularni ishlab chiqishda qanday samarali qo'llanilishiga va mashina kodi yaratishda jihozlarning qaysi xususiyatlaridan foydalanilishiga bog'liqligini ta'kidlaymiz.

Intel Intel C ++ va Intel Starit kompilyatsiyasining so'nggi versiyalari, Intel Itariy va Intel Pentium 2, Intel Xeon va Intel Pentium 4 dan 40% gacha mavjud kompilyatsiyachilar bilan solishtirganda daromad olish imkonini beradi Giper-yollash texnologiyasi kabi ko'rsatilgan protsessorlarning bunday xususiyatlaridan foydalanish orqali boshqa ishlab chiqaruvchilar.

Ushbu kompilyatorning optimallashtirish, suzuvchi punktlar, protsessorni optimallashtirish, protsedural optimallashtirish, podani optimallashtirish, POGO), POGE ni optimallashtirish va oldindan yuklash uchun optimallashtirish bilan bog'liq farqlash COST protsessorlarining xarakterli xususiyatlari bilan bog'liq bo'lgan kechikishlar (masalan, Intel Sime-ni uzaytirish, Intel Pentiumning 4) inelli Pentiumning 4-chi oqimini qo'llab-quvvatlaydigan ma'lumotlar Qo'llash, ariza yaratish, bir nechada bajaring turli xil turlar Ulardan biri uchun optimallashtirishda protsessorlar, keyingi kodni bashorat qilish vositalari (filial bashorat qilish), oqim oqimlarini qo'llab-quvvatlash.

Shuni yodda tutingki, Intel kompilyatori Adaviylar / to'lqin, Oracle, Fujitsu Siemens, ABRAUS, Silikon grafikasi, IBM. Bir qator kompaniyalar tomonidan o'tkazilgan mustaqil sinovlarga ko'ra, Intel kompilyatorlarining ishlashi boshqa ishlab chiqaruvchilarning kompilyatorlarining ishlashidan ancha yuqori (masalan, http://snel.com/sproducts/techtopics/techtopics_gnu_perf. PDF).

Quyida biz ish stoli va server uchun eng so'nggi Intel kompilyatsiyasining ba'zi xususiyatlarini ko'rib chiqamiz operatsion tizimlar.

Microsoft Windows platformasi uchun kompilyatorlar

Intel C ++ kompilyator 7.1 derazalar uchun

Intel C ++ kompilyer 7.1 bu Intel Itani Itel Itoniy 2, Intel Pentium 4 va Intel Xon, shuningdek, Intel Pentium 2 kodini optimallashtirishga imkon beradigan kompilyator. intel protsessor Pentium m Intel Centrino texnologiyasidan foydalanib, mobil qurilmalarda foydalanish uchun mo'ljallangan.

Belgilangan kompilyator Microsoft Visual C ++ 6.0 va Microsoft-ga to'liq mos keladi Vizual studiya. .Net: Tegishli rivojlanish muhitiga qurilishi mumkin.

Ushbu kompilyator ANSI va ISO C / C ++ standartlarini qo'llab-quvvatlaydi.

Windows uchun Intel Forran kompilyator 7.1

Intel Forran kompilyatori 7.1 Instel Itanium 2, Intel Pentium 2, Intel Pentium 4, Intel Xeon, Intel Xontiy, Intel Xeon, Intel Xontiylik M.

Ushbu kompilyator Microsoft Visual C ++ 6.0 va Microsoft Visual Studio bilan to'liq mos keladi .Net, ya'ni u tegishli rivojlanish muhitiga o'rnatilishi mumkin. Bundan tashqari, ushbu kompilyator 64-bitli Intel Forra kompilyatoridan foydalangan holda 32-bitli Intel Striger kompilyatoridan foydalangan holda Microsoft Visual Studio-dan foydalanib, 32 bitli Intel Intel Strieler-dan foydalanib, 32 bitli Intel Strientce-dagi 32 bitli Pentium protsessorida ishlaydigan operatsion tizimlar uchun 64 bitli arizalarni ishlab chiqishga imkon beradi. Kodni tuzatganda, ushbu kompilyator sizga Microsoft-ga nosozliklarni murojaat qilish imkonini beradi .Net platformasi.

O'rnatilgan mahsulotning o'rnatilgan mahsuloti 6,6, uni Intel Forran kompilyitori o'rniga ishlatish mumkin, chunki belgilangan kompilyatorlar dastlabki kodi darajasida mos keladi.

Intel Forran kompilyator 7.1 Windows uchun kompilyator ISO forran 95 standartiga to'liq mos keladi va ikki tilda - C va foritda bo'lgan dasturlarni yaratishni va olib borishni qo'llab-quvvatlaydi.

Linux platformasi uchun kompilyatorlar

Intel C ++ kompilyator 7.1 Linux uchun

Yil boshida yorug'likni ko'rgan yana bir kompilyator, Intel C ++ kompilyer 7.1 Intel Itoniy 2, Intel Pentium 4, Intel Pentium 4, Intel Pentium M., Intel Pentium M. Ushbu kompilyator GNU C kompilyatoriga to'liq mos kelmaydi, bu esa qo'shimcha xarajatlarsiz C ++ C ++ kompilyitori kompilyatorini qo'llab-quvvatlaydigan dasturlarsiz dasturiy ta'minotga imkon beradi. C ++ ABI (qo'shimcha) Linux yadro, masalan, Shanxay hamkorlik tashkilotining dastlabki operatsion tizimlari, erta suskis versiyalari va boshqalar kabi kompilyatsiyalangan kodni ishga tushirishga imkon beradigan Linux yadrosi ikkilik kod. Va nihoyat, Intel C ++ kompilyatoridan foydalanish 7.1 kompilyator, siz Linux yadroni bir nechta mayda o'zgarishlar kiritish orqali qayta ishlashingiz mumkin. manba kodi.

Intel Forran kompilyator 7.1 Linux uchun

Intel Forran kompilyatori Linux uchun kompilyator Intel Itorium 2, Intel Itanium 4, Intel Itanium 4, Intel Itanium 4, Intel Blettum 4, Intel Pentium 4, Manba kodi darajasida to'liq mos keladi, Compaq Vizual Fortran yordamida tuzilgan kompetentsiyni qayta hisoblashni amalga oshirishga imkon beradi va shu bilan ularning ishlashini oshiradi.

Bundan tashqari, belgilangan kompilyator foydalanuvchilar tomonidan qo'llanilgan ishlab chiqaruvchilarga mos keladi, masalan, EACS muharriri, GDB Nosevrager, arizalarni yig'ish uchun yordamchi.

Ushbu kompilyatorning Windows versiyasi singari, Linux uchun Intel Forran kompilyator 7.1-ni to'liq mos keladi iSO Standart Forra 95 va Kodni o'z ichiga olgan dasturlarni ikki tilda - C va fortada olib borishni qo'llab-quvvatlaydi.

Ta'kidlash joizki, Rossiya Nijniy Novgorodda dasturiy ta'minotni rivojlantirish bo'yicha kurash markazi mutaxassislari "Nijniy Novgorodda" Intel Intel kompaniyasining yaratilishiga salmoqli hissa qo'shdilar. Intel kompilyatori haqida ko'proq ma'lumotni Intel-ning veb-saytida www.intel.com/softwarware/products/ saytida topishingiz mumkin.

Ushbu moddaning ikkinchi qismi mobil qurilmalar uchun arizalarni yaratadigan Intel kompilyatorlariga bag'ishlanadi.

Haqiqiy xakerlik misollari: Intel C ++ 7.0 kompilyator - FADM.RU arxivi

... Intel C ++ 7,0 kompilyator tunda chuqur norozilik bildirdi, ertalab soat beshinchi soat. Men nihoyatda uxlashni xohladim, balki qiziquvchanlik: Himoya kuchaytirildimi yoki yo'qmi, ham begona o'tlar. Mudofaa bilan shug'ullanmagunimcha, men hali ham uxlay olmadim, men hali ham yangi konsolni ochaman va C: C: C: C: C: C: Naskoro-ni qayta o'rnatishga qaror qilmayman W_cc_p_7.073.exe o'rnatuvchisi buyruq satri (Temper va TMP o'zgaruvchanlarini o'rnatish zarurati, Windows 2000-dagi ular sukutni juda chuqur tasdiqlovchi katalogni va Intel C ++ o'rnatuvchisini bildiradi, balki bu juda katta hajmdagi yo'llarni qo'llab-quvvatlamaydi). .

Ma'lum bo'lishicha, himoya siyosati tubdan qayta ko'rib chiqilgan va endi dasturning o'rnatish bosqichida (5.X 5.X versiyada o'rnatilgan holda amalga oshirilgan) allaqachon tekshirilganligi ma'lum bo'ldi. Ok, DROM buyrug'i va biz bilan kurashish borasidagi tarkibiga qarang:

    Kontentlar papkasi C: \\ tmp \\ intrelc ++ kompilyer70

    17.03.2003 05:10

    HTML.

    17.03.2003 05:11

    X86.

    17.03.2003 05:11

    ITANIUNII.

    17.03.2003 05:11

    Izohlar.

    05.06.2002 10:35 45 056 Autorun.exe

    07/10 2001 12:56 27 Autorun.inf

    10.29.2002 11:25 2 831 ccompindex.htm

    10/24/2002 08:12 126 976 Chklich.dll

    10/18 2008 22:37 552 960 Chklic.exe

    10/17/2002 16:29 28 663 clicense.rtf

    10/17/17/2002 16:35 386 COMESTIST.TXT

    10/16 2007 17:02 34 136 Crelnotes.htm

    03/19/19/2002 14:28 4 635 pltuite.htm

    02/21/2002 12:39 2 478 Ro'yxatdan o'tish.htm

    02.10.2002 14:51 40 960 Setup.exe

    02.10.2002 10:40 151 Setup.ini

    07/10/2001 12:56 184 Setup.mwg

    19 fayl 2 519 238 bayt

    6 jild 886 571 008 bayt bepul

Ha! Setup.exe o'rnatish dasturi kilobayt pony bilan atigi qirqni egallaydi. Juda yaxshi! Bunday hajmda jiddiy himoya qilish juda qiyin va hatto shunga qaramay, bu mayda fayl butunlay tahlil qilinmasligi kerak - tanqali faylni tanazzulga uchratish kerak emas. Biroq, bu haqiqat emas havfsizlik kodi Setup.exe-da joylashgan bo'lsa, u boshqa joyda, masalan ... CHKLIC.DLL / Chklic.exe, etti kilobaytdan biroz kamroq. Kutib turing, bunday Chklic nima? Chek litsenziyasidan yoki nima?! Umidda, odamlar hazil tuyg'usi bilan jiddiy muammolar bo'lgan yigitlar. Ular ushbu faylni "meni hack" deb nomlash yaxshiroqdir! Ok, ovoz balandligi bilan hukm qilish, chklich - bu bir xil egiluvchan va u erda biz bilan uchrashganmiz ("Intel C ++ 5.+ 5.0 kompilyator" ni (qarang, uni qanday sindirish kerakligini ko'ring.

Eksport qilinadigan funktsiyalarni o'rganish uchun "Chklich.dll" jamoasi va ... Kafedradan yiqilmaslik uchun asta-sekin ushlab tursin.

    Chklich.dll faylining axlatxonasi

  1. Bo'limda Chklich.dll uchun quyidagi eksport mavjud

    0 xususiyatlari

    3Db438b4 Vaqt vaqti Mart 21 21:26:12 2002 yil

  2. 1 funktsiyalar soni

    1 Ismlar soni

    rVA nomi

    1 0 000010A0 _chckValidense

Jin ursin! Eksportni eksport qilish faqat bitta yagona xususiyatni yaratadi. "Ajoyib" - chunki funktsiyaning maqsadi uning nomidan aylanadi va desasslik kodeksi va nuqsonli tahlili oldini olish imkoniyati paydo bo'ladi. Xo'sh, ular barcha qiziqishni mag'lub etishdi ... Agar ular uni shifrlash turining nomi bo'lsa, uni biron bir tarzda eksport qilsalar, agar ular istalgan joyda deb nomlangan bo'lsa, yaxshiroq bo'ladi.

... Uylangan! Mayli, bizning filiallarimizga qaytish. Keling, mantiqiy gaplashamiz: Agar butun himoya kodini Chklich.dll-da ko'rib chiqilsa (va "o'rnatilgan" Minnatdorchilik ", bu to'g'ri" Setup.exe-dan qo'ng'iroqni tekshirish va natijani tekshirish. Shuning uchun, "xakerlik" uchun ChekValidense funktsiyasini har doim qaytish uchun majburlash uchun faqat ChekValidense funktsiyasini majburlash kifoya ... Ha, yo'l bilan nima qaytarilishi kerak? Aniqrog'i: bepul litsenziyani tekshirish qanchalik muhim qiymatga ega? Yo'q, aniqlashni aniqlash uchun Setup.exe-ni demontaj qilish uchun shoshilmang, chunki mumkin bo'lgan variantlar uchun mumkin bo'lgan variantlar yo'q: yolg'on yoki haqiqat. Siz haqiqatga tayyormisiz? Xo'sh, qandaydir ma'noda bu mantiqiy, ammo boshqa tomondan, biz aslida CHECVADIDENTS funktsiyasi foydalanish kodi emas, balki operatsiyaning muvaffaqiyati bayrog'ini qaytarishga qaror qildik va xato kodi emasmi? Axir, bunga qandaydir tarzda kompilyatorni o'rnatmaganlik sabablarini unutish kerak: litsenziyali fayl topilmadi, fayl buzilgan, litsenziya muddati o'tgan va boshqalar? Xo'sh, nolni qaytarishga harakat qilaylik va agar u minmasa, biz jihozni qaytarib beramiz.

OK, mahkamlang, boring! Biz xklic.dll faylini ochamiz (agar u ochilmasa, efirni uch marta otib yuboradigan bo'lsa, uni menda varaqani yoqtirmaydigan ildizga yoki boshqa biron bir katalogga nusxa ko'chiramiz "Y). Shunday qilib, Sumbinbin yordamida olingan eksport stoliga yana murojaat qilib, nazorat qilish funktsiyasining manzilini aniqlang (bu holda, 010 soat) va" 10a0 "ni belgilang. Endi -" yashash " , "Xor Eax, EAx / EAP 4" ni yozgan holda yozing, shunchaki "Ren 4", "Ren 4"? Ha, chunki funktsiya "Funktsiya" STDCall Bitimni "Funktsiya" shuni bilib olishingiz mumkin. E epilogida (shunchaki chegirma ekranidan chegirmadan pastga tushing).

Tekshiring ... ishlamoqda !!! Litsenziya yo'qligiga qaramay, o'rnatuvchini qo'shimcha savollar bermasdan, o'rnatishni boshlaydi! Shuning uchun himoya tushdi. Oh, men hamma narsa juda sodda va o'tirish emas, balki dasturxonni o'rnatish jarayonini tugatgandan so'ng, biz dasturni o'rnatish jarayonini kutib, setup.exe-da, sizning sevimli deformatangizda. Birinchi narsa, import qilingan funktsiyalar ro'yxatida tekshiriladigan to'lovVatsionensening etishmasligi. Ehtimol, bu qandaydir tarzda boshlanadi? Biz avtomatik ravishda tan olingan liniyalar orasida tegishli bog'liqlikni topishga harakat qilamiz: "~ Andame", "Chklic" ... "Chklic.Exe" chiziqlari umuman emas, ammo u "chklic.dll" topilmadi. Ha, bu aniq, demak, Chklic kutubxonasi prodagrum tinchigi bilan qoplangan. Va kesishma havolasiga o'tish buni tasdiqlaydi:

    Matn: 0040175D PROP OFKLIC_DLL; Lplibfilename.

    Matn: 00401762 Call DS: Loadlbaro

    Matn: 00401762; Biz CHKLIC.DLL ^^^^^^^^^^^^^^^

    Matn: 00401762;

    Matn: 00401768 Rac Esi, EAX

    Matn: 0040176a pushti Ofset A_CheckValidlic; Lpprosyame.

    Matn: 0040176F ASP ASSI; HMOLULE.

    Matn: 00401770 Call DS: getpocadDress

    Matn: 00401770; Biz funktsiyalarni boshqarish funktsiyasining manzilini olamiz

    Matn: 00401770;

    Matn: 00401776 smp esi, eBx

    Matn: 0040178 Jz Loc_40192e

    Matn: 00401778; Agar bunday kutubxona bo'lmasa, biz o'rnatuvchini qoldiramiz

    Matn: 00401778;

    Matn: 0040177E CMP EAX, EBX

    Matn: 00401780 JZ LOY_40192E

    Matn: 00401780; Agar kutubxonada bunday funktsiya bo'lmasa, biz o'rnatishni tark etamiz

    Matn: 00401780;

    Matn: 00401786 EBX-ni bosing

    Matn: 00401787 EAX qo'ng'iroq qiling

    Matn: 00401787; ChekValidense funktsiyasini chaqiring

    Matn: 00401787;

    Matn: 00401789 EAX, EAX

    Matn: 0040178b jnz lok_4019a3

Matn: 0040178; Agar funktsiya nolga qaytarilmasa, biz o'rnatish dasturidan ketamiz

Ajablanarlisi shundaki, bu dahshatli imtiyozli himoya qilish juda aniq qurilgan! Bundan tashqari, yarim metrli fayli Chklic.exe umuman kerak emas! Va nega bu Internetdan sudrab yurishga arziydi? Aytgancha, agar siz kompilyatorni taqsimlashni istasangiz, Chklich disk bo'shlig'ini saqlash uchun.) Chaqiruv bo'shlig'ini saqlash uchun: "Siz uni o'rganib chiqsangiz, uni o'rganishingiz mumkin Ularga murojaat qiling yoki shunchaki o'z chklich.dll-ni yarating, STDCall funktsiyasi Eksport qilish ChekValidliense versiyasi Ko'rish: IR Tekshirvidliense (ST ba'zi_flag) (0 ni qaytarish;)

Shunday qilib, biz hammamiz bularning barchasini muhokama qilsak-da, o'rnatuvchi kompilyator o'rnatishni tugatdi va o'z ishini to'liq yakunladi. Kompilyator boshlanadigan yoki barcha eng qiziqarli narsa boshlanadimi yoki yo'qmi qiziqmi? Men boshlang'ich o'ralgan papkalarning tarqalib ketgan papkalarni topa oldimki, kutilganidek, "ICL: Xatl: Xathie" ga ishora qilmaymiz. : Flex LM litsenziyasini hisoblay olmadim ", u o'z ishini davom ettira olmaydi.

Ma'lum bo'lishicha, Intelda ko'p darajadagi himoya va birinchi daraja ahmoqlardan yalpi himoyaga aylangan. Xo'sh! Biz ushbu qo'ng'iroqni qabul qilamiz va oldingi tajribangizga asoslanib, kompilyator katalogidagi LMRMLL faylini avtomatik qidiramiz. Foydasiz! Bu safar ushbu fayl bu erda tugamaydi, ammo shuni ta'kidlaydiki, ICL.exe og'irlik bilan oltinchi kilobytytni bosib o'tdi ... to'xtang! Va kompilyator ishlab chiqaruvchilar bu eng mos lm statik tuzilishini bog'ladimi? Biz ko'rib chiqamiz: Intel C ++ 5.0 o'lchamlari LMGR327.dll va ICL.Exe-ning o'lchamlari 598 KB hajmini tashkil etdi va endi ICL.exe 684 Kb ni tashkil etdi. "Semirish" ga o'zgartishlarni hisobga olgan holda, raqamlar juda yaxshi konsentratsiyaga ega. Shunday qilib, hali ham Flek LM! Oh oh! Ammo hozir, - - bu funktsiyalarning ramziy nomlarisiz, himoya qilish ancha qiyinroq bo'ladi ... Biroq, biz vahima qilmaymiz! Keling, shunchaki xotirjam! Rivojlanish guruhi butun Kodni butunlay to'liq qayta yozishimiz dargumon. Ushbu "konvert" himoyasini himoya qiladi. Ehtimol, uning "obodonlashtirish" - bu tartib turidagi o'zgarishdir va tugadi. Agar shunday bo'lsa, unda dasturni buzish imkoniyati hali ham ajoyib!

Asosiy funktsiyaning oxirgi funktsiyasida oxirgi marta tugaganligini davom ettirish, biz o'z manzilini belgilab, shunchaki Chiqish nuqtasini o'rnatib, kodni chin dildan kuzatib boring, so'ngra Ning derazasida. Dastur: Ko'rsatilmagan ko'rinmadimi? Shu bilan birga, barcha shartli o'tishlar bizni qoniqtiradi, biz har bir shartli o'tish yoki qilmadim, aniq emas ... to'xtab qolmay, biz alohida qog'ozni nishonlaymiz (yoki boshqa xotirada qoldiramiz). Kechirasiz, biz siz bilan ekanligimizdir, lekin muqaddas xabar allaqachon sakrab chiqdi! Yaxshi! Keling, Unga qandaydir shartli o'tish to'g'ri kelishini ko'rib chiqaylik. Bizning yozuvlarimiz shuni ko'rsatadiki, o'tish davri bilan so'nggi uchrashuv 0401075h-da joylashgan shartli JNZ o'tishi va natijada "reaktsiya", natijada "Real", natijada "reaktsiya".

  • Matn: 000107F LOST_40107F :; XREF XREF: _mal + 75 ^ J

    Matn: 0040107F CAC EAX, Ofset Affrpps; "FFRES"

    Matn: 0040104 Har safar Edx, 21h

    Matn: 0001089 Sub_404c0e Qo'ng'iroq qiling

    Matn: 0040108E test EAX, EAX

    Matn: 00401090 JNZ Qisqa loke_40109a

    Shubhasiz, sub_404c0e - bu uning mavjudligi uchun litsenziyani amalga oshiradigan eng himoya protseduradir. Buni qanday qilish kerak? Xo'sh, juda ko'p variantlar mavjud ... Birinchidan, tushuntirish uchun Sub_404c0e tarkibini sinchkovlik bilan tahlil qilish mumkin: aniq va qanday aniq tekshiriladi. Ikkinchidan, siz shunchaki jz qisqa lok_40107F yoki hatto NOP, NOOP-dagi JNZ qisqa lok_407F-da, siz shunchaki NNZ qisqa loke_40107F yoki hatto NOP ni almashtirishingiz mumkin. Uchinchidan, EAX qaytish natijalari bo'yicha EAX nol sozlash buyrug'iga aylantirilishi mumkin: Xor eax, eax. To'rtinchidan, siz har doim nolni qaytarishi uchun sub_404c0e o'zi yo'qolishingiz mumkin. Siz qanday qilib siz buni bilmayman, lekin men birinchi raqamning eng muhimi juda yoqdi. Biz ikkita baytni o'zgartiramiz va kompilyatorni ishga tushiramiz. Agar uning "litsenziyalash" da boshqa cheklar bo'lmasa, unda dastur ishlaydi va shunga ko'ra, aksincha. (Buni eslaymiz, bunday cheklarning beshinchi versiyasida bor edi). Ajablanarlisi, lekin kompilyator endi qasam ichadi va ishlaydi !!! Darhaqiqat, uni kutishi kerak bo'lganidek, uning ishchilari himoyani kuchaytirmadi, aksincha, hatto uni zaiflashtirdi! Kris Kasperskiy

  • Inel C ++ va Forran va MKL kutubxonasini tuzish

    GNUning standart kompilyatori Linux uchun, NIVC hisoblash majmuasi, Intel C ++ va Forran kompilyatori klasterlari bilan bir qatorda o'rnatilgan. Hozirda (2006 yil boshida), 9.1 versiyasini tashkilotlar barcha klasterlarga o'rnatiladi. Ushbu sahifaning eng muhim variantlari va sozlamalari, shuningdek, GNU komplektsionerlarining asosiy farqlari tavsifiga bag'ishlangan. Sahifa asosan Nivz MSU klasterlari foydalanuvchilariga qaratilgan, ammo bu boshqa rus tilida so'zlashadigan foydalanuvchilarga foydali bo'lishi mumkin. IA-64 platformasi uchun kompilyatsiya bilan bog'liq savollar mavjud emas.

    Shuningdek, barcha klasterlarda Intel kutubxonasi Kernel Math Kutubxonasi (Mkl) 8.0.2 versiyasi. Kutubxonada / usr / mkl katalogida joylashgan. Biz diqqatni libos katalogida 32, 64 va EM64T Subliqektura mavjudligiga e'tibor qaratamiz. Janna klasterida siz EM64t Subdireirektori va boshqa klasterlarning kutubxonalaridan - pastki qismdan - pastki qismlardan - barcha kerakli hujjatlar va misollar / USR / MKL / DOC ma'lumotnomasidan foydalanishingiz kerak.

    Yangi kompilyatchilar nima kerak?

    Yangi kompilyatorlarga bo'lgan ehtiyoj asosan forronda, shuningdek B) dasturni optimallashtirish uchun, shuningdek, C tilida ko'rsatuvni taqdim etish va shundan so'ng G77 kompilyatorini qo'llab-quvvatlash uchun C tilida namoyishlar va shundan keyin GCC yordamida kompilyatsiya qilish uchun dasturlashni qo'llab-quvvatlash.

    Ushbu talablar PGI kompilyatori (Portland Group) qondiradi, ammo ishlab chiqaruvchi kompaniyasi ularni Rossiyaga etkazib berishdan bosh tortdi.

    Qanday ishlatish?

    Intel kompilyatorlari buyruqlar yordamida deyiladi. iCC. (C yoki C ++) iCPC. (C ++) va ifrakti (Forran 77/90). MPI dasturlarini tuzish va yig'ish bo'yicha MPI dasturlarini tuzish va yig'ish uchun MPIF77 buyruqlari Intel kompilyatorlaridan foydalanish uchun ham sozlangan.

    GNU kompilyatorlaridan MPIGCC, MPIG ++ va MPIG77 (Forran 90 qo'llab-quvvatlanmaydi) dan foydalangan holda GNU kompilyatori foydalanish qobiliyati.

    Kirish fayllari

    Standart, kengaytirish fayllari .CPP va .cxx C ++, kengayish bilan fayllar, fayllar, fayllar .C.C. - SI tilidagi manbalar va ICPC kompilymi ham fayllarni tuzadi. C C ++ saytidagi manba sifatida.

    Kengaytmali fayllar .f., .FTN .FTN va .uchun Fotosuratli matn sifatida tan olingan fotologiya tilidagi, yozuvlar va fayllar .FP va .F. Qo'shimcha ravishda fortrraning progrosidan o'tgan. Kengaytmali fayllar .F90. U forronning 90/95 boshlang'ich matnlari hisobga olinadi. Aniq usulda siz variantlardan foydalanib, masofani dasturxon yozishning sobit yoki erkin shaklini belgilashingiz mumkin. -FI. va -Fr. mos ravishda.

    Kengaytmali fayllar .s. IA-32 uchun majlis tilidagi kod sifatida tan olingan.

    Intel kompilyatorlarining xususiyatlari

    Bu erda biz Intel kompilyatorlarning xususiyatlarini beramiz, chunki ular ba'zi sharhlarimiz bilan foydalanuvchi qo'llanmasida foydalanuvchi qo'llanmasida e'lon qilingan.

    • Muhim optimallashtirish
      Ko'rinishidan, bu erda kodni yuqori saviyada optimallashtirish kerak, i.e. Avvalo, deyarli barcha kompilyatorlarning katta yoki kamroq muvaffaqiyatlari bilan tsikllarning turli xil konversiyasi
    • Suzuvchi nuqta hisoblarini optimallashtirish
      Ko'rinishidan, avvalo apparat darajasida amalga oshiriladigan buyruqlardan maksimal darajada foydalanish mumkin
    • Interpostali optimallashtirish
      ular. Butun dasturni global optimallashtirish, an'anaviy optimallashtirishdan farqli o'laroq, bu aniq funktsiyalarning kodeksiga ta'sir qiladi
    • Profil optimallashtirish
      ular. Dastur rejimida dasturni boshqarish imkoniyati, tez-tez ishlatiladigan funktsiyalar ichida ushbu yoki boshqa kod bo'laklarini o'tish uchun vaqt ma'lumotlarini to'plang va keyin ushbu ma'lumotlardan foydalaning
    • Sse buyruq tizimini Pentium III protsessorlari
      eslatma: SSE2 buyruqlari vazifalarni hisoblash uchun ko'proq qiziqish uyg'otadi, i.e. 64-bitli haqiqiy raqamlardan tashqari vektor jamoalari, ammo ular faqat bizning ixtiyorimiz hali yo'q bo'lib ketayotganda, Pentiumda 4 protsessorlar tomonidan qo'llab-quvvatlanadi
    • Avtomatik vektorizatsiya
      ular. Yana, Sse va SSE2 buyruqlaridan avtomatik kompilyator tomonidan kiritilgan
    • SMP tizimlarini dasturlash uchun OpenMP qo'llab-quvvatlash
      Izoh: Klaster MPI interfeysini foydali ishlatishni tavsiya qiladi; Klasterdagi OpenMPning keng qo'llanilishi taxmin qilinmaydi va bunday tajribalar hali amalga oshirilmagan; Ammo umumiy xotira uchun parallellangan kutubxonalar (Blas va al.) Dan foydalanish mumkin.
    • Ma'lumotlar holati
      ular. Aftidan, oldindan belgilangan komissiyalarni esdan chiqarishni bir muncha vaqtdan keyin kerak bo'lgan ma'lumot keshiga ishlatish
    • Turli xil protsessorlar uchun kodni "jo'nating"
      ular. Turli xil protsessorlar uchun kodni yaratish qobiliyati, bu sizga afzalliklarni ishlatishga imkon beradigan bitta bajariladigan faylda eng yangi protsessorlar Avvalgi protsessorlar bilan dasturlarning ikkitomonlama mosligini yuritishda ulardagi eng katta ishlashga erishish; Bizning klasterimizda hali bog'liq emas, chunki Faqat pentium III protsessorlardan foydalaniladi va klasterga tuzilgan boshqa mashinalarda uzatilishi kerak emas

    Asosiy variantlar

    Eng qiziqarli, albatta kodni optimallashtirish variantlari. Ko'pgina variantlar C ++ va Forran kompilyatorlari uchun keng tarqalgan. Ko'proq batafsil tavsif Ingliz Foydalanuvchi qo'llanmaidagi variantlar.

    Optimallashtirish darajasi
    ImkoniyatTavsif
    -O0Optimallashtirishni o'chiradi
    -O1 yoki -O2.Tezlik uchun asosiy optimallashtirish. Kutubxona funktsiyalarini inline-indikt o'chirish o'chirilgan. C ++ kompilyatori uchun ushbu parametrlar bir xil optimallashtirishni beradi, fitraniya kompilyatorlari optimalligi --o2 afzal, chunki Tsikllarni hanuzgacha reklama qilishni o'z ichiga oladi.
    -O3OpenMP-dan foydalanib, yanada kuchliroq optimallashtirish, shu jumladan tsiklli suhbatlar, ma'lumotlar saylanishi. Ba'zi dasturlar bilan taqqoslaganda oshishni kafolat bermaslik mumkin -O2.. Vektorizatsiya variantlari bilan foydalanish mantiqiy -Xk. va -Xw..
    -Noll [n]V marta tsikllarni targ'ib qilishni o'z ichiga oladi.
    Muayyan protsessor uchun optimallashtirish
    ImkoniyatTavsif
    -TPP6.Penitum Pro uchun optimallashtirish, pentium II va pentium III protsessorlar
    -TPP7Penitum 4 protsessorlarini optimallashtirish (ushbu parametr IAA IA-32-da kompilyator uchun ushbu parametr yoqilgan)
    -Xm.Pentium MMX protsessorlariga xos bo'lgan mmx kengaytmalaridan foydalanib, kodni yaratish
    -Xk.Sse kengaytmalaridan foydalanib, Pentium III protsessorlari uchun o'ziga xos xususiyatlar
    -Xw.Pentium 4 protsessorlari uchun SFE2 kengaytmalaridan foydalangan holda kodni yaratish
    Interpostali optimallashtirish
    - Shifokor.Bitta fayl ichida internaturish optimallashtirishni o'z ichiga oladi. Agar siz variantni ko'rsatsangiz -P_no_inlining, Inline qo'shimchalar o'chirilgan.
    -IpoTurli fayllar orasida interdistant optimallashtirishni o'z ichiga oladi
    Profillardan foydalanish optimallashtirish
    -Prof_gen.Narxi "profilizatsiya" kodi, chunki profillash uchun ishlatiladi, i.e. Dasturda ma'lum o'rindiqlarning o'tish chastotasi to'g'risidagi ma'lumotlarni to'plash
    -Prof_UseOptimallashtirish fazali davrda olingan ma'lumotlarga asoslanadi. Interclub-ning optimallashtirish variantidan foydalanish mantiqiy -Ipo.
    SMP tizimlari uchun parallellashtirish
    -Krenmp2.0 Openmp 2.0 qo'llab-quvvatlash kiradi.
    -NospallTsikllarning avtomatik parallellashuvni o'z ichiga oladi

    Ijro

    IXBT.com serverida e'lon qilingan SPRU2000 sinov natijalari bo'yicha IXBT.com serveri, Intel versiyasi Jamoa 9,3, 2.96 va 3.1.2 versiyasidan yaxshiroq edi. Ushbu testlar 2002 yilda Pentium 4 / 1,7 gigaged protsessor va RedHat Linux 7.3.

    Sinovlar polietron tomonidan o'tkazilgan sinovlar natijalariga ko'ra deyarli hamma joyda Linux uchun (Abnoft, GNU, NAG, NAS, PGI, NAS, PGI) dan yaxshiroq chiqdi. Faqat ba'zi sinovlarda Intel kompilyatorini ozgina yo'qotadigan Notoft, Nag va Lahey. Ushbu testlar Pentium 4 / 1.8 GGZ protsessor va Mandrake Linux 8.1-da o'tkazildi.

    Intel versiyasi 9.1 kompilyatorlari, shuningdek, GCM kompiyotlarini ortda qoldirib, aboft, patscale va PGI bilan taqqoslanadigan ishlashni ko'rsatish.

    Biz AQSh ma'lumotlarini kompilyatorni tanlash (GCR yoki Intel) va ularning haqiqiy vazifalari bo'yicha ish tezligi uchun optimallashtirish variantlarini yuboradigan foydalanuvchilarga va o'quvchilarga minnatdormiz.

    Lanchak kutubxonalar

    SI Til kompilyatori GNU loyihasining bir qismi sifatida ishlab chiqilgan ishchi kutubxonani ishlatadi ( libc.a.).

    Quyidagi kutubxonalar Intel C ++ kompilymi bilan ta'minlangan:

    • libccpts.a. - C ++ Dinkkumware Rivojlanish kutubxonasi kutubxonasi.
    • libcxa.a. - C ++ Intel rivojlanishidagi qo'shimcha ish vaqti.
    • libimf.a. - Intel rivojlanishining matematik funktsiyalari kutubxonasi, bu trigonetik, giperbolik, eksponent va boshqa funktsiyalarning optimallashtirilgan va yuqori aniqliklarini amalga oshirishni o'z ichiga oladi (tafsilotlar uchun funktsiyalar ro'yxati).
    • libirk.a. - Ishlash vaqti-ni qo'llab-quvvatlovchi profillash (POGO) va protsessorga qarab "jo'natish" kodini (yuqoriga) bajaring.
    • libggge.a. - OpenMPni amalga oshirish.

    Ushbu ro'yxat statik kutubxonalar ro'yxati va ularning aksariyati uchun dinamik, i.e. Ishga tushirish variantlari paytida ulangan ( .Shuning uchun).

    Fitran kompilymi bilan birgalikda quyidagi kutubxonalar beriladi: libcepcf90.A., libiepctF90.A., libintrins.a., libf90.A.Shuningdek, liblimf.a matematik funktsiyalari kutubxonasi.

    Majburiy faylni yig'ish.

    Kutubxona aloqasi statik (yig'ilish paytida) yoki dinamik (dastur boshlanishida). Dinamik yondashuv sizga bajariladigan fayl hajmini kamaytirish imkonini beradi, ammo dasturlar ishga tushiriladigan har bir tugunni o'rnatishga imkon beradi, ularda dasturlar amalga oshiriladigan dinamik kutubxonalar to'plamini o'rnatishingiz kerak. .

    Shunday qilib, agar siz Intel kompilyatorini Linux bilan o'rnatgan bo'lsangiz va boshqa mashinalarda to'plangan bajariladigan fayllarni ishga tushirishni istasangiz, siz statik anjumanlarga (bu osonroq) yoki "dinamik" kutubxonalariga (odatda Turli / Te / Intel katalog / IA32 / Lib) Tarkibida / IA32 / Lib / IA32 / Lib / Linux dinamik kutubxonalari to'plamini aytib berish. Ushbu mashinalarda.

    Odatiy bo'lib, barcha Intel rivojlanish kutubxonalari (libcxa.so.so) statistik jihatdan bog'liq va barcha Linux tizim kutubxonalari va GNU kutubxonalari jadal aloqada bo'lgan. Variantdan foydalanish -STATIDA Siz kollektorni (havola muharriri) statikal ravishda ulashingiz mumkin (bu bajariladigan fayl miqdorini ko'paytiradi) va tanlovdan foydalanib - mennamik Siz Intel rivojlanish kutubxonalarini jadal ravishda ulashingiz mumkin.

    Qo'shimcha kutubxonalarni tipdagi variantdan foydalanganda -Libelebord Variantdan foydalanish kerak bo'lishi mumkin OylikKutubxonalar joylashtirilgan joyda yo'lni o'rnatish.

    Variantlar bilan -Bastik. va -Bynamik Siz buyruq satrida ko'rsatilgan har bir kutubxonalarning dinamik yoki statik ulanishini aniq belgilashingiz mumkin.

    Variantdan foydalanish -c. Bajariladigan bajariladigan faylning yig'ilishi o'chirilgan va faqat kompilyatsiya (Ob'ekt moduli avlod) amalga oshiriladi.

    Qal'a va Si-da almashish modullari

    Forran va SI tillarida yozilgan modullarni almashish uchun siz ob'ekt modullarida protseduralar nomlarini ulashishingiz, parametrlarni uzatish, shuningdek, agar mavjud bo'lsa, global o'zgaruvchilarga kirishingiz kerak.

    Odatiy bo'lib, Intel Forran kompilyatori protsedura nomlarini quyi registrga tarjima qiladi va nomining oxirigacha pastki chiziq qo'shadi. C kompiller hech qachon funktsiyalarning nomlarini o'zgartirmaydi. Shunday qilib, agar biz Fitrandagi moduldan istaysak, C bo'yicha amalga oshirilgan funktsiya yoki FNNName protsedurasini C, keyin Si-dagi modulda FNNNAME_ deb nomlanishi kerak.

    Fitran kompilyatori variantni qo'llab-quvvatlaydi - [fayl nomi]Tarkibiy nomlar qo'shilishini o'chirish protseduraning ichki nomlariga kiritish imkonini beradi. Agar fayl nomi ko'rsatilgan bo'lsa, bu faqat ko'rsatilgan faylda keltirilgan tartib nomlari uchun amalga oshiriladi.

    Sukunda, qal'ada, parametrlar ma'lumot bilan uzatiladi va C har doim qiymat hisoblanadi. Shunday qilib, startrand-protsedura deb atash paytida balog'atga etguvchilarni parametrlar kabi haqiqiy parametrlarning qiymatlarini o'z ichiga olgan tegishli o'zgaruvchilarga etkazishimiz kerak. Fortran-dagi moduldan chaqirilishi kerak bo'lgan funktsiyani yozayotganda, biz tegishli turdagi ko'rsatkichlar sifatida rasmiy parametrlarni tasvirlashimiz kerak.

    SI modullarida fortrda belgilangan modullardan foydalanish mumkin (bu haqda ko'proq, Intel Forraning Contran kompilyator foydalanuvchisi qo'llanmasi, C va fortran-bob).

    Intel va GCC komplektsionerlarini almashish

    Intel C ++ kompilyatoridan olingan SI tilidagi ob'ekt modullari GCC kompilyori va C tilidagi GNU kutubxonasi tomonidan olingan modullarga mos keladi. Shunday qilib, ushbu modullar ICC yoki GCC buyruqlari yordamida to'plangan bitta dasturda birgalikda bo'lishilishi mumkin, ammo Intel kutubxonalarini to'g'ri ulash uchun ICC-dan foydalanish tavsiya etiladi.

    Intel kompilyatori GNU loyihasida ishlatiladigan bir qator normaning bir qatorini qo'llab-quvvatlaydi va GCC kompilyatoridan (lekin ularning hammasi ham emas, balki bu erda ko'ring).

    Ob'ekt modullarining C ++ va Fastran tillarida foydalanish moslamasi foydalanuvchi qo'llanmasidagi moslamalar aytilmaydi, ehtimol u qo'llab-quvvatlanmaydi.

    Qo'llab-quvvatlash standartlari

    Intel C ++ kompilyator 7.0 uchun Ansi / ISO (ISO / IEC 98990). ANSI C boshlanishiga qat'iy moslikni o'rnatish mumkin ( -Sining.) yoki kengaytirilgan Ansi C lavect ( -Xa). Variantdan foydalanganda -C.99.

  • HTML kompilyator qo'llanmalar (bizning serverimizda "onlayn" da mavjud, ammo Java tilini qo'llab-quvvatlashini talab qiladi
    • Intel C ++ kompilyator foydalanuvchisi qo'llanmasi.
    • Intel Forran kompilyator foydalanuvchi qo'llanmasi.
  • PDF formatida ingliz tilidagi kompilyator bilan qo'llar (Acrobat Reader talab qilinadi, siz PDF fayllarini kompyuteringizga yuklab olishingiz kerak)
    • Intel C ++ kompilyator foydalanuvchisi qo'llanmasi: Inel C ++ kompilyator foydalanuvchisi (1.3 MB, 395 bet).
    • Intel Forran: Intel Forran kompilyatorining foydalanuvchi qo'llanmasi: Intel Forran kompilyatorining foydalanuvchi qo'llanmasi (1.1 Mb, 285 bet).
    • Dasturchiga Forranda: Intel Forran dasturchining ma'lumotnomasi (7 MB, 566 sahifa).
    • Fortrra kutubxonasi katalogi: Intel Forran kutubxonalari ma'lumotnoma (9,5 MB, 881 sahifa).
  • Intel dasturi Nosevraj Deagger qo'llanmasi.
  • Taqqoslash komplektri CPU2000 testlari bo'yicha kompilyatorlar (IXBT.com saytidagi maqola).
  • Polihedron veb-sayti turli kompilyatorlarni taqqoslash natijalarini taqdim etadi.
  • 2003 yil oxiriga kelib, Intel Intel o'z kompilyatorlari to'plamining 8.0 versiyasini taqdim etdi. Yangi kompilyatorlar serverlar, ish stoli kompyuterlarida ishlaydigan dasturlarning bajarilishini yaxshilash uchun yaratilgan mobil tizimlar Intel protsessorlar asosida (noutbuklar, mobil telefonlar va cho'ntaklar va yig'ish kompyuterlari). Shuni ta'kidlash yoqimli, ushbu mahsulot Nijniy Novgorod markazi Intalir Intel xodimlarining Intel dasturiy ta'minotini va Sarovning mutaxassislarini rivojlantirish bo'yicha faol ishtirok etishi quvonarlidir.

    Yangi seriyalar Windows va Linux uchun C ++ va Linux uchun C ++ va Linux uchun intel kompilyatori, shuningdek Windows Ce uchun C ++ tilidagi Intel kompilyatorlari. Kompilyatorlar Intel-ga asoslangan tizimlarga, Intel Itanium 2, Intel Xeon, Intel Xon, Intel Xonte 4, Intel shaxsiy Internet-mijozlar arxitekturasi bo'yicha protsessorlarga yo'naltiriladi uyali telefonlar va kompyuter va kompyuter va kompyuter va Intel Pentium m uyali kompyuterlar uchun protsessor (Intel Centrino texnologiyasi Mobil kompyuterlar uchun texnologiyali).

    Windows uchun Intel Vizual Forrance kompilyatori yuqori samarali hisoblash echimlari uchun yangi avlod yig'ish texnologiyasi amalga oshirilmoqda. U kompilyatsiya optimallashtirish texnologiyalari va Intel Corporation Kodeksining ulushi va Intel Corporation Kodeksi tufayli amalga oshiriladigan va Intel Vizual-ga binoan ishlab chiqilgan manba kodini uzatish muammosini yanada soddalashtiradi Forran muhiti. Ushbu kompilyatorda CVF funktsiyalari birinchi navbatda 32 bitli Intel tizimlari va Windows muhitida ishlaydigan Intel Itel Itel tizimlari uchun ham amalga oshiriladi. Bundan tashqari, ushbu kompilyator CVF-ni 32-bitli Intel protsessorlar va Intel Idaiyning intel tizimiga asoslangan tizimlarda amalga oshirishga imkon beradi. 2004 yilda ushbu kompilyatorning kengaytirilgan versiyasini bo'shatish rejalashtirilgan - Windows-ni vizual raqami, Inc. tomonidan ishlab chiqilgan IMSL Forrance 50 kutubxonasi kutubxonasi o'z ichiga oladi.


    "Yangi kompilyatorlar, shuningdek, yangi jamoalarni grafika va video ishlarini ko'paytirish uchun yangi jamoalar, shuningdek, boshqa unumdorlik vositalarini ko'paytirish uchun yangi jamoalarni qo'llab-quvvatlaydilar. Ular ham qo'llab-quvvatlaydilar. yangi texnologiyalar Mobil MMX (TM), shuningdek, mobil telefonlar va cho'ntak kompyuterlar uchun grafik, tovush va cho'ntagma kompyuterlar uchun grafik kompyuter dasturlarini kuchaytirish, - dedi Kola Intel Novgorod, Aleksey shodmeylari. - Ushbu kompilyatorlar amaliyotni ishlab chiquvchilarni yangi dasturlarni yaratish uchun yagona instrumental vositalar kompleksini taqdim etadilar simsiz tarmoqlar Intel arxitekturaga asoslanib. Intel Intel kompilymi, shuningdek, Intel va Sohal OpenMP 2.0 spetsifikatsiyasini qo'llab-quvvatlaydi, bu esa qo'llanmada qo'llanmalarni boshqarish uchun yuqori darajadagi ko'rsatmalar qo'llanilishini belgilaydi.

    Bir kompilyatorlarga kiritilgan yangi vositalar orasida Intel Kodeksni qamrab olish va Intel sinov ustuvorligi. Birgalikda ushbu vositalar dasturiy ta'minotni sinovdan o'tkazish jarayonini takomillashtirish orqali arizalarni ishlab chiqish va ularning sifatini yaxshilashga imkon beradi.

    Kodeksni qamrab oluvchi vositani qo'llash paytida qo'llanma dastur manchasi va arizaning dastlabki kodida ishlatiladigan bo'limlarning joylashuvi haqida to'liq ma'lumot beradi. Agar dasturga o'zgartirishlar kiritilgan bo'lsa yoki ushbu sinov ishlab chiqaruvchiga qiziquvchi dasturning bir qismini tekshirishga imkon bermasa, dasturning dastlabki yo'nalishidagi sinov vositasi sizga dastur kodeksining faoliyatini tekshirishga imkon beradi.

    Yangi Intel kompilyatori turli xil trimlar to'plamida 1499 dollardan 149 dollargacha ishlab chiqariladi. Bugungi kunda ularni butun dunyo bo'ylab Intel yoki Sotels-da sotib olish mumkin, ularning ro'yxati saytda joylashgan. http://www.intel.com/software/products/reeler.htmrarussiya..

    Matbuot protsessori qo'llab-quvvatlash

    Intel Pentium 4 protsessorni qo'llab-quvvatlash (Preskott) ni kompilyatorning sakkizinchi versiyasida quyidagicha:

    1. SFE3 (yoki PNI, Precott yangi ko'rsatmalarini) buyruqlarini qo'llab-quvvatlang. Bu erda uchta usulni ta'kidlash kerak:

    ammo. Qo'shma joylar (INline anjuman). Masalan, kompilyator SFE3 _asm Cit (AddSubupd xmm0, xmm1) buyrug'idan quyidagi foydani tan oladi. Shunday qilib, past darajadagi optimallashtirishdan manfaatdor bo'lgan foydalanuvchilar yig'ish jamoalariga to'g'ridan-to'g'ri kirish imkoniyatiga ega bo'lishlari mumkin.

    b. C / C ++ kompilyatorida yangi ko'rsatmalar yig'ilmalar qo'shimchalaridan foydalanishdan yuqori darajada foydalanish mumkin. Ya'ni, o'rnatilgan funktsiyalar orqali (ichki funktsiyalar) orqali:

    O'rnatilgan funktsiyalar

    O'rnatilgan funktsiya Ishlab chiqarilgan jamoa
    _MM_ADDUB_PS. AddSUns.
    _mm_hadd_ps. Hades.
    _MM_HSUB_PS. MSUBPS.
    _MM_MOVDUP_PS. Movsudup.
    _mm_movpdup_ps. Movshdup.
    _MM_ADDUB_PD. AddSubupd.
    _mm_hadd_pd. Xaddpd.
    _MM_HSUB_PD. Hsubpd.
    _MM_AndDUP_PD. MovDDUP xmm, m64
    _mm_meup_pd. MovDDUP REG, REG
    _mm_lddQuqu_si128. LddQu -Q.

    Jadvalda o'rnatilgan xususiyatlar va SFE3 to'plamidan mos keladigan to'plam buyruqlari ko'rsatilgan. Xuddi shu qo'llab-quvvatlash MMX \\ Sse \\ Sse2 to'plamlaridan buyruqlar uchun mavjud. Bu dasturchiga past darajadagi kodni optimallashtirishni amalga oshirishga imkon beradi: kompilyatorning o'zi mos protsessor buyruqlari va registrlarning maqbul foydalanish uchun belgilangan funktsiyalarni displeyga ("e)" ekish kerak. Dasturchi yangi buyruq to'plamlaridan samarali foydalanadigan algoritmni yaratishga diqqatni jamlashi mumkin.

    ichida. Yangi buyruqlar kompilyatori avtomatik ravishda ishlab chiqarishi. Dastlabki buyruqlar dasturchi tomonidan yangi buyruqlardan foydalanishning ikkita usuli. Ammo kompilyator, shuningdek, tegishli variantlarni ishlatishga qodir - Quyidagi 3-bo'limda C / C ++ va Forran tillarida yangi buyruqlarni keltirib chiqaradi. Masalan, ishlatish, undan foydalanish 40% gacha (masalan, video va audio kodlash vazifalarida) optimallashtirilgan. SI3-ning boshqa jamoalari murakkab raqamlardan foydalangan holda 3D grafik vazifalarida yoki hisob-kitob vazifalarini sezilarli tezlashtirish imkonini beradi. Masalan, SS3 buyruqlarining avtomatik avlodini avtomatik avlodni avtomatik ravishda avlod avlodini avtomatik ravishda avlod orqali olish uchun 31-qismdagi grafikadan ko'rinib turibdiki, SS3 buyrug'i avtomatik avlodni avtomatik ravishda amalga oshirgan. Ushbu qo'llanmani bajarish sezilarli darajada arifmetik integrallashtirilgan raqamlarning tezligiga bog'liq.

    2. Preskott protsessorining mikromarxrital afzalliklaridan foydalanish. Kodni yaratishda kompilyator yangi protsessordagi mikroarxqural o'zgarishlarni hisobga oladi. Masalan, ba'zi operatsiyalarni amalga oshirish (masalan, butun son, butun sonni ko'paytirish yoki turli xil shakllarni ko'paytirish yoki turli xil shakllarning turli xil formatlarini ko'paytirish yoki raqamlarni qayta ishlash, aytaylik, bitta protsessor egalladi Intel Pentium 4 protsessor uchun oldingi versiyasida to'rtlikka qarshi. Bunday buyruqlardan ko'proq intensiv foydalanish arizalarni sezilarli tezlashtirishga imkon beradi.
    Microarxritural o'zgarishlarning yana bir namunasi - bu qayta yo'naltirish mexanizmi (tezkor ma'lumotlarni tezroq yuklash ma'lumotlarini tezkor yuklab olish); Haqiqiy tejash hatto kesh xotirasida emas, balki ba'zi oraliq saqlash uchun shunchaki buferni saqlash imkoniyatini beradi, bu sizga ma'lumotlarga juda tez kirish imkoniyatini beradi. Arxitekturaning ushbu xususiyati, masalan, dastur kodini yanada agressiv avtomatik vektorizatsiya qilish imkonini beradi.
    Kompilyator shuningdek, birinchi va ikkinchi darajali keshning ko'paygan miqdorini hisobga oladi.

    3. Yaxshilangan giper-oqim texnologiyasini qo'llab-quvvatlash. Ushbu mahsulot avvalgi bittasi - mikromarkratur o'zgarishlar va kompilyatorda foydalanishlari mumkin. Masalan, OPENMP sanoat spektaklini qo'llab-quvvatlashning bajarilishi yangi protsessorning ijrosi uchun optimallashtirilgan.

    Ijro

    Kompilyatorlardan foydalanish oddiy va samarali usul Intel protsessor arxitekturalaridan foydalaning. Tuzilgichlardan foydalanishning ikkita usuli quyida keltirilgan: a) kompilyator sozlamalari va matnli matnda, shuningdek, kompilyator diagnostikasi o'zgarishi bilan qayta ishlash dasturlari, shuningdek, kompilyator diagnostikasidan foydalanish va mumkin boshqa dasturlardan foydalanish (masalan, profilizatorlar).


    1.1 Dasturlarni qayta to'ldirish va kompilyator sozlamalarini o'zgartirish orqali optimallashtirish


    Ko'pincha, yangi optimallashtirish komplektsiyasiga o'tishning birinchi bosqichi asl sozlamalari bilan foydalanishdir. Keyingi mantiqiy bosqich - bu ko'proq tajovuzkor optimallashtirish uchun imkoniyatlardan foydalanish. 1, 2, 3 va 4-rasmlarda sanoatdagi etakchi bo'lgan boshqa mahsulotlardan foydalanishga nisbatan 8,0 ni tashkil qilishning 8,0 versiyasiga o'tish ta'siri ko'rsatilgan (-M2 - Standart kompiller sozlamalari, baza - sozlamalar maksimal unumdorlik). Taqqoslash 32 va 64-bitli Intel arxitektsiyalar bo'yicha amalga oshiriladi. Sinov CPU2000-dan dasturlar sinov terish sifatida ishlatiladi.


    1-rasm




    2-rasm.




    3-rasm.




    4-rasm.


    Ba'zi variantlar quyida keltirilgan (bundan keyin ham Windows OS oilasi deb ataladi; Linux OS oilasi uchun quyidagilar mavjud bo'lsa, unda ismlar bir xil bo'lishi mumkin; masalan, Windows yoki Windows uchun QXK ham xuddi shunday harakatni ta'minlaydi - O0 yoki -XK uchun mos ravishda Linux uchun, mos keluvchi qo'llanmada ko'proq ma'lumotni Intel kompilyator tomonidan qo'llab-quvvatlanishi mumkin.


    Nazoratni optimallashtirish darajasi: Variantlar -Od (optimallashtirish yo'q; Narxlar hajmini kamaytirish uchun qo'llanilmaydi), - (Maksimal tezlik), (Maksimal tezlik kodni kamaytirish), (Kodni bajarish tezligini optimallashtirish; Odatiy optimallashtirishni o'z ichiga oladi) Kodning tezligi; ba'zi hollarda u qarama-qarshi ta'sirga olib kelishi mumkin; shuni ta'kidlash kerakki, IA-64-dan foydalanish ko'p hollarda tezlashuvga olib keladi. 32 kamroq talaffuz qilinadi). Optimalizatsiyaning misollari -33: Ichki tsikllar ordeni, tsikllarning tarqalishi, tsiklni ajratish, tsiklni ajratish, tsiklni ajratish, teskari axlatni ajratish), Teskari LOP. Sekin-mishlardan foydalanishning sababi -O3-dan foydalanishning sababi - bu kompilyator ma'lum bir ish uchun katta ishni tanlab olishni tanlagan holda, ushbu dastur haqida etarli ma'lumotga ega bo'lmasdan, ma'lum bir ish uchun gürtsifik optimal yondashuvdan foydalangan bo'lishi mumkin (masalan, saylovoldi buyruqlarini yaratdi) tsiklda ishlatiladigan ma'lumotlar, aylantirilgan, tsikl bajariladi katta miqdorda Bir marta, aslida u bir nechta iteratsiyalar bor. Dastlabki dasturlar, shuningdek dasturchining xilma-xilligi uchun optimallashtirishni optimallashtirish (3.2-bo'limga qarang) Ushbu vaziyatda yordam berishi mumkin.

    Uzbekbek optimallashtirish: -Qip (bitta fayl ichida) va -qipo (bir nechta yoki barcha loyihalarda). Masalan, tez-tez ishlatiladigan kodni (narxlarni chaqiradigan xarajatlarni kamaytirish). Boshqa optimallashtirish bosqichlariga ma'lumot taqdim etadi - masalan, tsiklning yuqori chegarasi haqida ma'lumot (agar u bitta faylda belgilangan tartibda belgilangan va ko'p sonli) yoki ko'p miqdorda belgilangan bo'lsa) Agar operandlar 8 yoki 16 baytda chegarada xotirada bo'lsa, tezroq ishlaydi. Xotirani taqsimlash protseduralari tahlili (Loyiha fayllarining biridan biriga kiritilgan) \\ protseduralar bilan uzatiladi (bu ma'lumotlar xotiraga to'g'ri kelmaganligini konservativ taxmindan voz kechishga yordam beradi; lekin Qo'shimcha ma'lumotlar yo'qligi paytida taxmin konservativ bo'lishi kerak. Yana bir misol - bu xotira chorrahasini tahlil qilishdir: qo'shimcha ma'lumot yo'qligi va chorrahalar etishmasligini isbotlash, kompilyator chorrahada bo'lgan konservativ taxmindan kelib chiqadi. Bunday qaror bunday optimatiyalarning sifatiga salbiy ta'sir ko'rsatishi mumkin, masalan, IA-64-da IA-6 32 yoki SWP dasturiy ta'minotini (dasturiy ta'minot quvurini konveyashga) avtomatik vektorizatsiyalash. Interrotsessor optimallashtirish xotira chorrahasidagi o'zgarishlarga yordam beradi.

    Profil optimallashtirish: Uch bosqichni o'z ichiga oladi. 1) CQPROF_GEN OLDINI yordamida instrumental kodni yaratish. 2) Olingan kod vakillik ma'lumotlarida boshlangan, Kod ijroining turli xil xususiyatlari (masalan, aylantirishlar soni uchun o'tish yoki odatiy qiymat) yig'iladi. 3) oldingi bosqichda to'plangan ma'lumotni tuzuvchidan foydalanishni ta'minlaydigan-kursprof_ice option bilan qayta kompleksiya. Shunday qilib, kompilyator nafaqat dasturning muhim xususiyatlarini emas, balki dasturning haqiqiy ishlashi paytida olingan ma'lumotlar ham foydalanish imkoniyatiga ega. Bu ba'zi optimallashtirishning keyingi tanlovi bilan yordam berishi mumkin (masalan, qaysi filiallar qaysi chastotada amalga oshirilganligi to'g'risida ma'lumotlarga asoslanib, dasturning qaysi chastotasida amalga oshirilganligi sababli, dasturning qaysi chastotasini ishlatishi mumkinligi sababli samaraliroq joylashish; yoki tsiklga optimallashtirish ITeratsiyalarning odatiy soni to'g'risidagi ma'lumot asosida. Profilni optimallashtirish, ayniqsa, kichik tanlash mumkin bo'lgan hollarda, bu dasturning kelajakdan foydalanishning eng odatiy hollarini ko'rsatadigan holatlar (2-bosqich). Ba'zi bir mavzularda bunday vakillik to'plamini tanlash juda mumkin. Masalan, DBTMS dasturchilari tomonidan profillash optimallashtirish qo'llaniladi.

    Yuqorida sanab chiqilgan optimallashtirish umumiy (umumiy) turiga tegishli, i.e. Netodlangan kod oilaning barcha protsessorlarida ishlaydi (ayting, 32 bitli arxitektura misolida: Intel Pentium-ii, Pentium 4, Presyom Pentium m). Shuningdek, aniq protsessor uchun optimallashtirilgan.

    Maxsus protsessor yo'naltirilgan optimallashtirish: -Qx (pentium-iii; SSE SET buyruqlari, mikroarxitektura xususiyatlari), - Sse va SSE2; SSE2 yoki SSE2 buyrug'i, mikroarxitektura xususiyatlaridan foydalanish ), Qxp (PressiTott; SFE, SSE2 va SS3 buyrug'i, mikroarxitektura xususiyatlari). Bunday holda, bunday variantlardan foydalangan kod protsessor liniyasining boshqa vakillari uchun ishlamasligi mumkin (masalan, -QXW kodi Intel Pentium-ii protsessor tizimida o'qimasa), nomaqbul buyruqqa olib kelishi mumkin. Yoki maksimal samaradorlik bilan ishlash uchun emas (masalan, - Pentium 4 protsessoridagi mikroarxitekturaning farqlari tufayli 4 protsessor). Bunday variantlar bilan bu buyruq tizimidan foydalangan holda aniq protsessor uchun optimallashtirilgan bajarilish vaqtini qo'llashi mumkin. Kod maqsadli protsessorda haqiqiy bo'lganligini boshqarish uchun, dispetcherlik mexanizmi (CPU-dischetchining) amalga oshiriladi: dastur ijrosi davomida protsessorni tekshirish. Turli vaziyatlarda ushbu mexanizmni jalb qilish yoki yo'q. Jo'natish har doim ishlatiladi, agar variantlar o'zgarishi-variantlari qo'llaniladi. (KWNP) qo'llaniladi. Bunday holda, kodning ikkita versiyasi yaratiladi: aniq protsessor va "Umumiy" (umumiy) uchun optimallashtirilgan, tanlov dasturni bajarish paytida amalga oshiriladi. Shunday qilib, Kodeks hajmining ko'payishi tufayli dasturning barcha protsessorlarida va maqsadli protsessorda maqbul ijro etish bo'yicha amalga oshirilishi mumkin. Yana bir variant - oldingi vakili bo'yicha kodni optimallashtirish va ushbu kodni ushbu va keyingi protsessorlar yordamida ishlatish. Masalan, -QXN kodi Pentium 4-da, Shimoliy Yadro va Preskott bilan o'qilishi mumkin. Kod hajmi o'zgarmaydi. Ushbu yondashuv bilan, yaxshisini olish mumkin, ammo Necott protsessori bilan tizimda maqbul chiqish mumkin (SDE3), shimoliy yo'lning maqbul chiqishlari bilan eng maqbul chiqish bilan. IA-64 arxitektura protsessorlari ham o'xshash variantlar mavjud. Hozirgi kunda ikki kishi: -g1 (ITAANIUIY) va -G2 (ITANIYA 2; SUCAUTPLE variant).

    Quyidagi grafik (5-rasm) tezlashuvni ko'rsatadi (ma'lumotning boshlanishi - har qanday tezlashuvning bir qismini - har qanday tezlashtirish_Use_USFPROF_USFPROF_USF_USSROP_USF_US)) Standart sozlamalar bilan taqqoslaganda Prettet protsessori. Ishdan foydalanish -Qasp ba'zi hollarda -QXN bilan taqqoslaganda tezlashuvga yordam beradi. Eng katta tezlashishi 168-ilovada, oldingi qismida qayd etilgan (SFE3 buyruqlari yordamida murakkab arifmetikani sezgir optimallashtirish tufayli).


    5-rasm.


    6-rasmda kodning tezligi (qiymatlar) nisbati ko'rsatilgan optimal sozlamalar Pentium bo'lmaganlar va ITANII protsessorlari bilan taqqoslaganda, 2-sonli Itanium 2 optimallashtirish sifatiga bog'liqligini ko'rish mumkin. Bu, ayniqsa, suzuvchi nuqtalarni hisoblash (FP), u erda taxminan 36 marta. Suzuvchi nuqta hisob-kitoblari IA-64 arxitekturasining kuchi, ammo eng samarali kompilyator sozlamalaridan foydalanishni diqqat bilan yondashish kerak. Natijada amalga oshirilayotgan ko'rsatkichlar qidirish uchun mehnat xarajatlarini to'laydi.


    6-rasm. Eng yaxshi optimallik variantlarini qo'llashda tezlashtirish Agar CPU200


    Intel kompilyatori ko'p tarmoqli dasturlarni yaratish uchun sektordagi Openmp spetsifikatsiyasini qo'llab-quvvatlaydilar. Aniq (variant -kopenmp) va avtomatik ravishda (-qparallelelelel) parallellashuv rejimi tomonidan qo'llab-quvvatlanadi. Aniq rejimda, dasturchi OpenMP standartidan to'g'ri va samarali foydalanish uchun javobgardir. Avtomatik parallelizatsiya holatida kompilyator dastur kodini tahlil qilish bilan bog'liq qo'shimcha yukni qo'yadi. Shu sababli, avtomatik parallellashtirish etarli oddiy kodlar ustida samarali ishlamoqda.

    7-rasmdagi grafika Intel Pentium 4 protsessoriga (Pressicott) tomonidan intel Pentium 4 protsessoriga (Pressicott) asosida aniq parallellashuvni tezlashtirishda tezkor ravishda, Kesh, 512k l2-kesh. SPESPM2001 sinov sinovi sifatida ishlatiladi. Ushbu to'plam kichik va o'rta SMP tizimlariga yo'naltirilgan, xotira iste'moli ikki gigabaytga bog'liq. Ilovalar Intel 8.0 C / C ++ va Variantlar bilan formati: -Qopenmp -qipo -Qippo -Qippo -Qippo -Qipenmp - -Qippo -Qippo -Qippo -Qxp, har biri yoqilgan va o'chirilgan. Torlash texnologiyasi. Gerper-interaktiv texnologiyani o'chirilganda sxemani tezlashtirishning qadriyatlari bir-biridan iborat versiyaning bajarilishini normallashtiradi.


    7-rasm: Prettet protsessoriga kiritilgan spmm2001-ning ilovalari


    Ko'rinib turibdiki, 11 ta holatda 3 ta holatda, ochiq parallellashuvdan foydalanib, OpenMP-dan foydalanib, ochiq parallellashuvni qo'llash natijalari yoqilganda. Ilovalardan birida (312. shveytsariya) juda sekinlashadi. Bu mashhur haqiqat: ushbu dastur yuqori darajadagi qaramlik bilan tavsiflanadi kuchli Xotira. Shuningdek, CPU2000 xususiyatiga ko'ra, Preskott (-qxp) optimallashtirishdan foydalanib, Vuppise arizasi sezilarli darajada g'alaba qozonadi.


    1.2 Manba matnidagi o'zgarishlar bilan dasturlarni optimallashtirish va kompilyator diagnostika qilish


    Oldingi bo'limlarda biz kompilyator (va uning sozlamalari) dastur kodining tezligiga ta'sir ko'rsatdik. Shu bilan birga, Intel kompilyatori sozlamalardagi o'zgarishlardan ko'ra kodni optimallashtirish uchun ko'proq imkoniyatlarni taqdim etadilar. Xususan, kompilyatorlar dastur kodini "maslahatlar" dasturini ishga tushirish uchun samaraliroq kodni yaratishga imkon beradi. Quyida C / C ++ tilida ba'zi misollar (format tili uchun shunga o'xshash vositalar mavjud, shunga o'xshash vositalar faqat sintaksis tomonidan farq qiladigan).

    #PRAGMA IVDEP (IVDEP Vektorli bog'liqliklarni e'tiborsiz qoldiradigan degani, kompilyatorni ma'lumotlarga bog'liq bo'lmagan holda xabardor qilish uchun dasturiy ta'minot tsikllariga nisbatan qo'llaniladi. Ushbu uchta korporativ (tahlilga) asoslangan holda, bunday bog'liqlik bo'lishi mumkinligini inobatga olgan holda, konservativ tarzda amalga oshirilgan holatlarda ishlaydi (agar kompilyator ushbu qarama-fan tahsilat bo'lsa, unda "maslahat" hech qanday harakat yo'q. , Kodeksning muallifi bunday bog'liqlik paydo bo'lishi mumkinligini bilmaydi. Ushbu maslahatdan foydalanib, kompilyator samaraliroq kodni yaratishi mumkin: IA-32 uchun avtomatik vektorizatsiya (MMX \\ SSE2 \\ SSE2 \\ SSE2 \\ SSBE3 \\ SSBE3 to'plamlaridan C / C ++ SSE3-ss3 \\ SSBE3 to'plamlaridan C / C ++ SSBE3-sonli SUSS3 \\ SSBE retsents3 to'plamlari uchun C / C ++ SSBE3 to'plamlari) Ushbu uslub bilan batafsilroq, masalan, quyidagilarda intel texnologiya jurnalidagi maqola), IA-64 uchun dasturiy ta'minot konveyizatsiyasi (SWP).

    #PRARMA vektor har doim tsikl vektorizatsiyasining samarasizligini (IA-64 avtomatik ravishda IA-64 uchun ham, IM-64 uchun ham, IM-64 uchun ham, IM-64 uchun ham, IM-64 uchun ham, IM-64 uchun ham, IM-64 uchun ham, IM-64 uchun ham, IM-64 uchun ham, IM-64 uchun ham, IM-64 uchun ham, IM-64 uchun ham, IM-64 uchun ham, IM-64 uchun ham, IM-64 uchun ham, IM-64 uchun ham, IM-64 uchun ham, IM-64 uchun ham, IM-64 uchun ham avtomatik) har bir iteratsiyada ishlashni tahlil qilish uchun foydalaniladi. .

    #PRAGMA NOKORT ASOSIY ASOSIY ASOSIY ASOSIY ASOSIY ASOSIY ASOSIY ASOSIYA HARAKATI Har doim.

    #PRARMA VORT ALATKENT ILVALANMASI, Tsiklda ishlatiladigan ma'lumotlar chegarada 16 baytda tekislanganligini xabar qilish uchun ishlatiladi. Bu sizga yanada samaraliroq va / yoki ixchamni yaratishga imkon beradi (ijro etish paytida tekshiruvlar yo'qligi sababli) kodi.

    #PRARMA VTUCT UNULT harakatsiz #pragma hizalandi. Bu holatda ishlashda g'alaba haqida gapirish qiyin, ammo siz ko'proq ixcham kodga hisoblashingiz mumkin.

    #PRARAMASMAS ball punkti dastur tsiklida ishlatiladi, shunda kompilyator tsiklni (ko'cha taqsimlanishi) bir oz kichikroq bo'ladi. Masalan, kompilyator manbaning tsiklini avtomatik vektorizatsiyani amalga oshira olmaganida, bunday "maslahat" ishlatilishi mumkin (masalan, #pragma IVDPP bo'lsa ham, ma'lumotlarga qarama-qarshilik tufayli), hollarda (yoki qisman) yangi shakllangan tsikllardan samarali bo'lishi mumkin.

    #Pragma Loop hisoblash (n) kompilyatorni xabardor qilish uchun ishlatiladi, bu ma'lumot N. Ushbu ma'lumotni ushbu tsikl uchun eng samarali optimallashtirish to'g'risida qaror qabul qilishga yordam beradi (masalan, qilish kerakmi skanerlash, siz SWP yoki avtomatik vektorizatsiyani qilishingiz kerak, siz ma'lumotlar dasturidan oldingi xabarlar dasturidan oldingi xabarlardan foydalanishingiz kerak, ...) ...)

    "Maslahat" _assumume_altle (P, bazasi) (p, bazasi) kompilyatorni pagone bilan bog'liq bo'lgan xotira maydoni chegaraga to'g'ri keladi \u003d 2 ^ n bayt.

    Bu juda uzoq to'liq ro'yxat Turli kodning samaradorligiga sezilarli darajada ta'sir qilishi mumkin bo'lgan turli "maslahatlar" kompilyatoridir. Agar kompilyatorning ishoralarini talab qilishini aniqlash mumkin.

    Birinchidan, siz kompilyatorning tashxisidan siz dasturni taqdim etgan hisobot shaklida foydalanishingiz mumkin. Masalan, avtomatik vektorizatsiya to'g'risidagi hisobotni olishingiz mumkin bo'lgan xabarni olishingiz mumkin bo'lgan hisobotni olishingiz mumkin bo'lgan xabarni olishingiz mumkin bo'lgan xabarni olishingiz mumkin. Masalan, diskvec_report darajasidan foydalanishingiz mumkin. Dasturchi mavjud tsikllar haqida ma'lumot bo'lib, ular emas. SHASHDA BOSHQARUVCHI, kompilyator vektorizatsiya amalga oshmaganligini ko'rsatadi. Aytaylik, sabab ma'lumotlarga konservativ bog'liqlikdir. Bunday holda, agar dasturchiga qarama-qarshiliklar ro'y bermasligiga amin bo'lsa, unda #pragma IVDEP-dan foydalanish mumkin. Shunga o'xshash (IAA-32 uchun qvec_reportn bilan taqqoslaganda) Mumkin bo'lgan kompilyator IA-64 IA-64-da SWPning mavjudligi va samaradorligini boshqarish uchun taqdim etadi. Umuman olganda, Intel kompilyatori optimallashtirishni aniqlash uchun keng imkoniyatlarga ega.

    Ikkinchidan, boshqa dasturiy mahsulotlar (masalan, Intel Vtune Profiler), Kodeksda ishlash nuqtai nazaridan "Bottlenecks" ni qidirish uchun ishlatilishi mumkin. Tahlil natijalari dasturchiga kerakli o'zgarishlarni amalga oshirishga yordam beradi.

    Siz kompilyator tomonidan yaratilgan majlislar ro'yxatini ishlatishingiz mumkin.


    8-rasm.


    8-rasmda IA-64 me'morchiligi uchun asosiy kompilyator (va boshqa dasturiy mahsulotlar) Intel Intel Intel Intel Intel Intel-ni qo'llash bo'yicha bosqichma-bosqich dasturiy ta'minotni optimallashtirish jarayoni ko'rsatilgan. Masalan, 48 soatlik nordonatik prognoz sxemasi hisoblanadi (masalan, bu haqda, masalan, ushbu maqolada o'qishingiz mumkin. Maqolada taxminan 25 minut hisoblash vaqtini anglatadi yozganidan beri sodir bo'ldi. Tozalashning bir nuqtasi sifatida, kran-ymp tizimidagi kod spektakllari (-O2) Intel Itaniumga asoslangan to'rt protsessor tizimida ishlov berishning sezilarli kodini 20% ni tashkil etdi 2 900 MGts protsessori. Ko'proq tajovuzkor optimallashtirish (-O3) asosan kodni o'zgartirmasdan, kodni diagnostika qilish va Intel Vtoune profileridan foydalanishni tahlil qiladi. ". Masalan, kompilyator bir nechta muhim tsikllarni konveyashga kiritmagan, bu ma'lumotlarga ko'ra, hisobotda ma'lumot berilmagan. Kichik kodlar (IVDP Awaytiv) Effenga erishishga yordam berdi Kivny konveyerizatsiya. VTUNT profilerining yordami bilan uni aniqlash mumkin edi (va kompilyatorning hisobotini tasdiqladi), kompilyator rezs xotirasidan yanada samarali foydalanish uchun (ko'cha almashinuvi) ni o'zgartirmaganligini tasdiqladi. Buning sababi yana ma'lumotlarga bog'liqlik to'g'risida yana bir konservativ taxminlar edi. Dasturning manbai matnida o'zgarishlar kiritildi. Natijada dastlabki versiyaga nisbatan 4 marta tezlashishga erishish mumkin edi. OpenMP Standart ko'rsatmalaridan foydalanib, aniq parallelizatsiyani, keyinchalik tizimga o'tishni 8 minutdan kamrog'ini qisqartirishga imkon berdi, bu esa dastlabki versiya bilan taqqoslaganda 16 marta tezlashdi.

    Intel Vizual Forran

    Intel Vizual Forran 8.0 old tomondan foydalanadi (dasturni matndan dasturni kompilyatorning ichki vakilligiga o'tkazish uchun mas'ul bo'lgan kompilyatorning bir qismi, shuningdek dasturlash tiliga va undan ham bog'liq emas Maqsadli mashina) CVF kompilymi va Intel kompilyatorning tarkibiy qismlari, shuningdek optimallashtirish va kodni yaratish uchun javobgardir.


    9-rasm.




    10-rasm.


    9 va 10-moddalarda Intel Vizual Fortran 8.0 ishlashi grafikasi Intel Forran 7.1 va sanoatdagi boshqa sohalarda Windows va Linux oilasining asosiy versiyasi mavjud. Taqqoslash uchun, testlar ishlatilgan, F77 va F90 standartlari mavjud bo'lgan manbalari http://www.polyhedenron.com/ saytida F90 standartlari mavjud. Taqqoslash kompilyatsiyasini taqqoslash bo'yicha batafsil ma'lumot shu saytda (Win32 kompilyitiv taqqoslashlari -\u003e Forran (77, 90) bajarish muddati -\u003e Forrana (77, 90) bajarish vaqtini taqqoslash Va geometrik o'rtacha o'rtacha har bir sinovning individual natijalari bilan birgalikda beriladi.

    Siz qul emassiz!
    Bolalar uchun yopiq o'quv kurslari Elite: "Dunyoning haqiqiy tartibi".
    http://noslav.org.

    Vikipediya materiallari - bepul entsiklopediya

    Intel C ++ kompilyatori
    Lua xatosi Moduldagi xato: Wikidata 170 satrida: "Vikikibe" indeks maydoniga (nilma qiymat) urinish.
    Bir tur
    Muallif

    Lua xatosi Moduldagi xato: Wikidata 170 satrida: "Vikikibe" indeks maydoniga (nilma qiymat) urinish.

    Ishlab chiqaruvchi
    Ishlab chiquvchilar

    Lua xatosi Moduldagi xato: Wikidata 170 satrida: "Vikikibe" indeks maydoniga (nilma qiymat) urinish.

    Yozma ravishda

    Lua xatosi Moduldagi xato: Wikidata 170 satrida: "Vikikibe" indeks maydoniga (nilma qiymat) urinish.

    Interfeys

    Lua xatosi Moduldagi xato: Wikidata 170 satrida: "Vikikibe" indeks maydoniga (nilma qiymat) urinish.

    Operatsion tizim
    Tillar interfeysi

    Lua xatosi Moduldagi xato: Wikidata 170 satrida: "Vikikibe" indeks maydoniga (nilma qiymat) urinish.

    Birinchi nashr

    Lua xatosi Moduldagi xato: Wikidata 170 satrida: "Vikikibe" indeks maydoniga (nilma qiymat) urinish.

    Apparat platformasi
    So'nggi versiya
    Nopok nomzodi

    Lua xatosi Moduldagi xato: Wikidata 170 satrida: "Vikikibe" indeks maydoniga (nilma qiymat) urinish.

    Beta-versiya

    Lua xatosi Moduldagi xato: Wikidata 170 satrida: "Vikikibe" indeks maydoniga (nilma qiymat) urinish.

    Alpha versiyasi

    Lua xatosi Moduldagi xato: Wikidata 170 satrida: "Vikikibe" indeks maydoniga (nilma qiymat) urinish.

    Sinov versiyasi

    Lua xatosi Moduldagi xato: Wikidata 170 satrida: "Vikikibe" indeks maydoniga (nilma qiymat) urinish.

    O'qish mumkin bo'lgan fayl formatlari

    Lua xatosi Moduldagi xato: Wikidata 170 satrida: "Vikikibe" indeks maydoniga (nilma qiymat) urinish.

    Fayl formatlari yaratildi

    Lua xatosi Moduldagi xato: Wikidata 170 satrida: "Vikikibe" indeks maydoniga (nilma qiymat) urinish.

    shart

    Lua xatosi Moduldagi xato: Wikidata 170 satrida: "Vikikibe" indeks maydoniga (nilma qiymat) urinish.

    Litsenziya

    Asosiy xususiyatlar:

    • Slig, SSE2, SS3, SSE3 uchun vektorizatsiya

    Kompiltor parallel dasturlarni yozish uchun 3,0 standartini qo'llab-quvvatlaydi. Shuningdek, unda MPI-dan foydalanib yozgan OPENMP-likpeksiyada yozma ravishda yozma arizalarni ishga tushirishingiz mumkin.

    Intel C ++ kompilyatori Balandlik (kompilyatorning bir qismi Edison dizayn guruhidan sintaktik tahlil bilan shug'ullanadigan qismi). Xuddi shu chegara SGI Mippro kompilyatorlari, C ++, Portlend guruhidan foydalaniladi.

    Ushbu kompilyator TEPES CHPUCichmarklarni kompilyatsiya qilish uchun keng qo'llaniladi.

    Intel tarkibidagi 4 qator mahsulotlar mavjud:

    • Intel C ++ kompilyator professional nashri
    • Intel klaster yordamida (kompilyator tahriri)

    Kompilerning Linux versiyasining kamchiliklari ba'zi dasturlarni tuzishda muammolarga olib kelishi mumkin bo'lgan SI tilining GNU-kengaytmalariga mutlaqo nomuvofiqlik kiradi (GCC kompilyatori).

    Eksperimental parametrlar

    Quyidagi eksperimental kompilyator parametrlari nashr etildi:

    • 2007 yil 17 sentyabrda Intel STM kompilyiteri nashri. Dasturiy ta'minotning operatsion xotirasini (STM) qo'llab-quvvatlash. Linux va derazalar uchun chiqarilgan, faqat IA-32 (x86 protsessorlari) uchun;
    • 2008 yil sentyabr oyidan boshlab C / C ++ 0.3 uchun Intel Content Closy to'plamlari. Parallel C ++ dasturlarini yozishni osonlashtiradigan mexanizmlarni o'z ichiga oladi.

    Asosiy bayroqlar

    Derazalar Linux, Maksx Tavsif
    / Od. -O0 Optimallashtirishni o'chirish
    / O1. -O1. Bajariladigan fayl hajmini minimallashtirish uchun optimallashtiring
    / O2. -O2. Tezlikni oshirish uchun optimallashtiring. Ba'zi optimallashtirish kiritilgan
    / O3. -O3 Barcha optimallashtirishni O2-dan yarating. Shuningdek, intensiv tsiklni optimallashtirish
    / OIP. - Ip. Yukloqchilik Interpostozli optimallashtirishni o'z ichiga oladi
    / Oipo. - haipo. Global interrange optimallashtirishni yoqing
    / Qxo. -xo. SF3, SSE2 va SSE Uzbekistan-dan foydalanish har qanday kompaniyalarni ishlab chiqarish protsessorlari uchun foydalanishga ruxsat bering
    / Tez. - Noshir. « Tez rejim" Linux-da Windows va "-O3 -Po -Po -To -static -Postatial -Sto -static-DhHost -No -static-Dining" ga teng. Eslatma, "-Xost" bayrog'i kompilyator ishlayotgan protsessor uchun optimallashtirish degani.
    / Qprof-gen -Prof_gen. Prote profilini to'playdigan dasturning instrumental versiyasini yarating
    / Qprof-foydalanish -Prof_Use Prof_Gen bayrog'i bilan to'plangan dastur boshidan profil ma'lumotlaridan foydalaning.

    "Intel C ++ kompilyator" maqolasi haqida sharh yozing

    Qaydlar

    Shuningdek qarang

    Martaba

    Intel C ++ kompilyatorini tavsiflovchi parcha

    Va u qaytib keldi oxirgi marta Oq migal tilini ko'ring ... Siz hech qachon unutolmaydigan turmush o'rtog'ingiz va sodiq do'stingizni ko'ring. U yuragida u uni kechirdi. Ammo uning afsuslanishiga qaramay, unga Magalladan kechirim berolmadim .... Shunday qilib, Isidor, "Hamjiha" afsonasi, "hamma so'z", ularni yaratishga ruxsat berish uchun oddiy imonlilar uchun yagona bolalar yolg'onidir Qanday yomonlik, nima qilishini bilib, oxir oqibat kechiriladi. Ammo siz faqat chinakam kechirim nimadan kechirishingiz mumkin. Biror kishi, har qanday yomonlik bilan javob berishini tushunishi kerak ... ba'zi sirli Xudo oldida emas, balki uning oldida azob chekishga majburlash. Magdalalik Vladalo kechirmadi, garchi u chuqur hurmat va uni chin dildan sevdi. U bizni va barchamizni kechirganimizda, Radomomning dahshatli o'limi uchun. Axir, uning hamma narsasi yaxshi tushunilgan - biz unga yordam berishimiz, uni shafqatsiz o'limdan saqlab qolishimiz mumkin ... lekin xohlamadik. Oq Uilning aybini inobatga olgan holda, u uni bu ayb bilan yashash uchun qoldirdi, uni bir daqiqaga unutishga imkon bermaydi ... u unga biroz kechirim berishni xohlamadi. Biz uni boshqa hech qachon ko'rmadik. Qanday qilib ularning farzandlarini ko'rmagan. Ma'badning ritsarlaridan biri orqali - bizning maggdalamiz bizga qaytish uchun Vladykaga javob berdi: "Quyosh bir kun ichida sizning dunyoning quvonchini ikki marta ko'taradi (radomir) hech qachon sizga qaytib kelmaydi Men sizga qaytib kelmayman ... Men imonimni va haqiqatimni topdim, ular tirikligingizni, o'zing tirikdir, o'lik ... o'g'illaringizni qiling - ular sizni yaxshi ko'rishadi. Men tirikligingizda ularning o'limi sizni hech qachon kechirmayman. Va vinolaringiz siz bilan qoladi. Ehtimol, bir kun kelib u sizga engil va kechirimga olib keladi ... lekin mendan emas. " Yuhannoning malayanining boshlig'i xuddi shu sababga ko'ra otaga olib kelmadi - hech biri AQShga qaytib kelmadi ... Biz ularni yo'qotishni va qurbonlarimizni olib ketishni xohlamadik. ... siz bilan birga bo'lganingiz bilan, bizni qoraladi.
    Menda boshim bor edi!. - Chanqagan kabi, men shimolda saxiylikni ochib berdim. .. men hamma narsani bilmoqchi edim oxiri. Bu kuydirilgan og'riq va muammolardagi toza suv edi! Va men hech qanday tarzda mast bo'lolmadim ...
    - Menda minglab savollar bor! Ammo vaqt qolmadi ... nima qilishim kerak, shimol? ..
    - so'rang, isidor! .. so'rang, men sizga javob berishga harakat qilaman ...
    - Ayting-chi, shimolda menga bu hikoyada, hayotning ikki hikoyalari birlashgan, shunga o'xshash voqealarni keltirib chiqarishi va ular taqdim etilgani, qanday qilib bir kishining hayoti qanday? Yoki men adashyapmanmi?
    - Siz mutlaqo to'g'ri, isidorsiz. Sizga aytganimdek, «bu insoniyatning soxta tarixini yaratgan», «Insonning haqiqiy hayotini» «Yuriya) ning haqiqiy hayotiga" Yangiliklar "ning haqiqiy hayotiga" kiygan " yarim yil oldin (shimol voqealari). Va nafaqat o'z oilasi, balki uning oilasi va yaqinlari, do'stlari va izdoshlari. Oxir oqibat, bu yahudiylar Meri Maryamning xotini, onasining singlisi Mariya Yoqub va boshqa hech qachon Radomir va Magdalina yaqinida bo'lgan birodarlar va boshqa odamlar bor edi. Bu ularning yonida emas, boshqa odamlar "havoriylari" - Pavlus, Matto, Butrus, Luqo va qolganlari ...
    Yarim ming yil oldin Yunon shahridagi Massia (hozirgi Marsel) bo'lgan "Goul (Transpirin Goul) bo'lgan" Janoza "ning oilasi edi. va Osiyo va bu quvg'in va muammolardan qochish uchun barcha "ta'qib qilingan" uchun eng oson yo'li edi.