Чи боол биш!
Элит бүлгийн хүүхдүүдэд зориулсан хаалттай сургалт: "Дэлхийн жинхэнэ зохицуулалт".
http://noslave.org
Википедиа, чөлөөт нэвтэрхий толь
170-р мөрөнд Module:Wikidata дээрх Луа алдаа: "wikibase" талбарыг индексжүүлэх оролдлого (тэг утга). | ||||||||||||||||||||||||||||||||||||
Төрөл | ||||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Зохиогч |
170-р мөрөнд Module:Wikidata дээрх Луа алдаа: "wikibase" талбарыг индексжүүлэх оролдлого (тэг утга). |
|||||||||||||||||||||||||||||||||||
Хөгжүүлэгч | ||||||||||||||||||||||||||||||||||||
Хөгжүүлэгчид |
170-р мөрөнд Module:Wikidata дээрх Луа алдаа: "wikibase" талбарыг индексжүүлэх оролдлого (тэг утга). |
|||||||||||||||||||||||||||||||||||
Бичсэн |
170-р мөрөнд Module:Wikidata дээрх Луа алдаа: "wikibase" талбарыг индексжүүлэх оролдлого (тэг утга). |
|||||||||||||||||||||||||||||||||||
Интерфэйс |
170-р мөрөнд Module:Wikidata дээрх Луа алдаа: "wikibase" талбарыг индексжүүлэх оролдлого (тэг утга). |
|||||||||||||||||||||||||||||||||||
үйлдлийн систем | ||||||||||||||||||||||||||||||||||||
Интерфейсийн хэлүүд |
170-р мөрөнд Module:Wikidata дээрх Луа алдаа: "wikibase" талбарыг индексжүүлэх оролдлого (тэг утга). |
|||||||||||||||||||||||||||||||||||
Анхны хэвлэл |
170-р мөрөнд Module:Wikidata дээрх Луа алдаа: "wikibase" талбарыг индексжүүлэх оролдлого (тэг утга). |
|||||||||||||||||||||||||||||||||||
Техник хангамжийн платформ | ||||||||||||||||||||||||||||||||||||
Хамгийн сүүлийн үеийн хувилбар | ||||||||||||||||||||||||||||||||||||
нэр дэвшигчийг чөлөөлөх |
170-р мөрөнд Module:Wikidata дээрх Луа алдаа: "wikibase" талбарыг индексжүүлэх оролдлого (тэг утга). |
|||||||||||||||||||||||||||||||||||
бета хувилбар |
170-р мөрөнд Module:Wikidata дээрх Луа алдаа: "wikibase" талбарыг индексжүүлэх оролдлого (тэг утга). |
|||||||||||||||||||||||||||||||||||
альфа хувилбар |
170-р мөрөнд Module:Wikidata дээрх Луа алдаа: "wikibase" талбарыг индексжүүлэх оролдлого (тэг утга). |
|||||||||||||||||||||||||||||||||||
Туршилтын хувилбар |
170-р мөрөнд Module:Wikidata дээрх Луа алдаа: "wikibase" талбарыг индексжүүлэх оролдлого (тэг утга). |
|||||||||||||||||||||||||||||||||||
Унших боломжтой файлын форматууд |
170-р мөрөнд Module:Wikidata дээрх Луа алдаа: "wikibase" талбарыг индексжүүлэх оролдлого (тэг утга). |
|||||||||||||||||||||||||||||||||||
Үүсгэсэн файлын форматууд |
170-р мөрөнд Module:Wikidata дээрх Луа алдаа: "wikibase" талбарыг индексжүүлэх оролдлого (тэг утга). |
|||||||||||||||||||||||||||||||||||
муж |
170-р мөрөнд Module:Wikidata дээрх Луа алдаа: "wikibase" талбарыг индексжүүлэх оролдлого (тэг утга). |
|||||||||||||||||||||||||||||||||||
Тусгай зөвшөөрөл |
Гол онцлог:
Хөрвүүлэгч нь зэрэгцээ програм бичих OpenMP 3.0 стандартыг дэмждэг. Энэ нь мөн OpenMP-ийн Cluster OpenMP нэртэй өөрчлөлтийг агуулсан бөгөөд үүний тусламжтайгаар та OpenMP-ийн дагуу бичсэн програмуудыг MPI ашиглан кластерууд дээр ажиллуулж болно. Intel C++ Compiler нь Edison Design Group-ийн урд талын хэсгийг (эмхэтгэж буй програмыг задлан шинжлэх хөрвүүлэгчийн хэсэг) ашигладаг. Үүнтэй ижил урд хэсгийг SGI MIPSpro, Comeau C++, Portland Group хөрвүүлэгчид ашигладаг. Энэхүү хөрвүүлэгч нь SPEC CPU-ийн жишиг үзүүлэлтүүдийг эмхэтгэхийн тулд өргөн хэрэглэгддэг. Intel-ээс хөрвүүлэгч агуулсан 4 цуврал бүтээгдэхүүн байдаг:
Хөрвүүлэгчийн Линукс хувилбарын сул тал нь C хэлний GNU өргөтгөлүүдтэй хэсэгчлэн үл нийцэх (GCC хөрвүүлэгчээр дэмжигддэг) бөгөөд энэ нь зарим програмыг хөрвүүлэхэд асуудал үүсгэдэг.
Туршилтын хувилбаруудХөрвүүлэгчийн дараах туршилтын хувилбаруудыг нийтлэв.
Гол тугнууд
"Intel C++ хөрвүүлэгч" нийтлэлд сэтгэгдэл бичээрэйТэмдэглэлбас үзнэ үүХолбоосууд
Intel C++ хөрвүүлэгчийг тодорхойлсон ишлэлГэсэн хэдий ч тэр Цагаан шидтэнг сүүлчийн удаа харахын тулд буцаж ирэв ... Түүний нөхөр, хэзээ ч мартаж чадахгүй байсан хамгийн үнэнч найз. Зүрх сэтгэлдээ тэр түүнийг уучилсан. Гэвч тэрээр түүнд Магдалын өршөөлийг авчирч чадаагүйдээ харамсаж байна .... Тэгэхээр, Исидора, таны харж байгаагаар "уучлал" хэмээх Христийн шашны агуу үлгэр нь гэнэн итгэгчдийн хувьд ямар ч зүйлийг хийхийг зөвшөөрөх гэсэн хүүхэд шиг худал зүйл юм. Хилэнцүүд, тэд юу ч хийсэн, эцэст нь уучлагдах болно гэдгийг мэддэг. Гэхдээ та үнэхээр өршөөгдөх ёстой зүйлийг л уучилж чадна. Хүн ямар ч муу үйлдсэнийхээ төлөө хариулах ёстой гэдгээ ойлгох ёстой... Мөн ямар нэгэн нууцлаг Бурханы өмнө биш, харин өөрийгөө хэрцгийгээр зовоодог. Магдалена Владикаг маш их хүндэлж, чин сэтгэлээсээ хайрладаг байсан ч уучлаагүй. Яг л тэр Радомирын аймшигт үхлийн төлөө бид бүгдийг уучилж чадаагүй шиг. Эцсийн эцэст, ТЭР нь хамгийн сайн ойлгосон - бид түүнд тусалж, түүнийг харгис хэрцгий үхлээс аварч чадна ... Гэхдээ бид хүсээгүй. Цагаан шидтэний гэм бурууг дэндүү харгис гэж үзээд түүнийг хоромхон зуур ч мартсангүй, энэ гэм буруутайгаа хамт амьдрахаар орхив... Тэр түүнд амархан уучлал үзүүлэхийг хүссэнгүй. Бид түүнийг дахиж хэзээ ч хараагүй. Тэдний хүүхдүүдийг хэзээ ч харж байгаагүй. Ариун сүмийнхээ баатруудын нэг болох манай илбэчин Магдалена бидэн рүү буцах хүсэлтийнхээ хариуг Их Эзэнд дамжуулж: "Нар нэг өдөрт хоёр удаа манддаггүй ... Таны ертөнцийн баяр баясгалан (Радомир) хэзээ ч гарахгүй. Чамдаа эргэж ирээрэй, яг л би чам руу буцахгүй, би ч гэсэн... ИТГЭЛ, ҮНЭНЭЭ олсон, тэд АМЬД, чинийх ҮХСЭН... Хөвгүүдээ гашуудал - тэд чамд хайртай байсан. Тэдний үхлийг би амьд байгаа цагт чинь хэзээ ч уучлахгүй. Мөн таны гэм буруу чамтай хамт үлдэх болтугай. Хэзээ нэгэн цагт тэр танд гэрэл, уучлалыг авчрах байх ... Гэхдээ надаас биш. Магус Жонны толгойг ижил шалтгаанаар Метеора руу авчирсангүй - Ариун сүмийн баатруудын хэн нь ч бидэн рүү буцаж ирэхийг хүсээгүй ... Бид тэднийг ойлгохыг хүсээгүй олон хүнийг нэг бус удаа алдсан тул бид тэднийг алдсан. Хохирогчдыг маань хүлээж аваарай ... Яг чам шиг хэн бэ - тэд биднийг буруушааж орхив.Би толгой эргэх шиг боллоо!.. Цангаж, мэдлэгээр мөнхийн өлсгөлөнгөө дарж, Умардын өгөөмрөөр өгсөн гайхалтай мэдээллийн урсгалыг шунахайн сэтгэлээр шингээж авлаа... Тэгээд би илүү ихийг хүсч байна!.. Би бүх зүйлийг эцсээ хүртэл мэдэхийг хүссэн. . Өвдөлт, золгүй явдалд шатсан цөлийн цэнгэг усны амьсгал байв! Тэгээд би хангалттай ууж чадаагүй ... Надад мянган асуулт байна! Гэхдээ цаг хугацаа үлдсэнгүй ... Би яах ёстой вэ, Север? .. - Асуу, Исидора!.. Асуу, би чамд хариулахыг хичээх болно... -Сэвер, надад хэлээч, яагаад энэ өгүүллэгт ижил төстэй үйл явдлуудтай нийлсэн амьдралын хоёр түүхийг холбож, нэг хүний амьдрал мэт харуулсан юм шиг санагдаж байна вэ? Эсвэл миний буруу байна уу? - Чиний зөв, Исидора. Би түрүүн хэлсэнчлэн хүн төрөлхтний хуурамч түүхийг бүтээсэн “энэ ертөнцийн хүчирхэг хүмүүс” нэг жил хагасын өмнө амьдарч байсан еврей зөнч Иошуагийн харь гаригийн амьдралыг Христийн жинхэнэ амьдралд “өмссөн”. (Хойд зүгийн түүхээс хойш). Зөвхөн өөрөө ч биш, гэр бүл, хамаатан садан, найз нөхөд, найз нөхөд, дагалдагчид нь. Эцсийн эцэст, энэ бол бошиглогч Иошуагийн эхнэр, еврей Мариа Марта, ах Лазар, ээжийнх нь эгч Мария Якоби болон бусад хүмүүс Радомир, Магдалена хоёрын ойролцоо байгаагүй юм. Тэдний хажууд Паул, Матай, Петр, Лук болон бусад "элч нар" байхгүй байсан шиг ... Энэ бол нэг хагас мянган жилийн өмнө Бошиглогч Иошуагийн гэр бүл байсан бөгөөд тэр үед Массалиа нь Грекийн Массалиа (одоогийн Марсель) хот байсан тул Прованс руу (тэр үед Галл (Гаул Галли) гэж нэрлэдэг байсан) нүүсэн юм. Европ, Азийг холбосон "гарц" байсан бөгөөд энэ нь бүх "хавчлагдсан" хүмүүсийн хавчлага, золгүй байдлаас зайлсхийх хамгийн хялбар арга байв.
|
Танилцуулга 2003 оны сүүлээр Intel компани хөрвүүлэгч цуглуулгынхаа 8.0 хувилбарыг танилцуулсан. Шинэ хөрвүүлэгч нь сервер, ширээний компьютер дээр ажиллаж байгаа програмуудын гүйцэтгэлийг сайжруулах зорилготой юм хөдөлгөөнт системүүд(зөөврийн компьютер, гар утас болон PDA) дээр суурилсан Intel процессорууд. Энэхүү бүтээгдэхүүнийг Нижний Новгородын Intel програм хангамж хөгжүүлэх төвийн ажилтнууд болон Саровын Intel-ийн мэргэжилтнүүдийн идэвхтэй оролцоотойгоор бүтээснийг тэмдэглэхэд таатай байна.
Шинэ цувралд Windows болон Linux-д зориулсан C++ болон Fortran-д зориулсан Intel хөрвүүлэгч, мөн Windows CE .NET-д зориулсан C++-д зориулсан Intel хөрвүүлэгч багтсан болно. Эмхэтгэгчид нь Intel Itanium 2, Intel Xeon, Intel Pentium 4, гар утас болон PDA-д зориулсан Intel Personal Internet Client Architecture процессорууд, гар утасны компьютерт зориулсан Intel Pentium M процессор (Intel Centrino технологийн бүрэлдэхүүн хэсэг) зэрэг Intel процессорууд дээр суурилсан системийг хөрвүүлэгчид чиглүүлдэг. гар утсанд). PC).
Windows-д зориулсан Intel Visual Fortran Compiler нь өндөр хүчин чадалтай тооцоолох шинэ үеийн эмхэтгэлийн технологиор хангадаг. Энэ нь Compaq Visual Fortran (CVF) хэлний функцийг Intel-ийн эмхэтгэх, код үүсгэх оновчлолын технологийн ачаар гүйцэтгэлийн сайжруулалттай хослуулж, зөөвөрлөх ажлыг хялбаршуулдаг. эх код, CVF-тэй хамтран Intel Visual Fortran орчинд хөгжүүлсэн. Энэхүү хөрвүүлэгч нь Intel Itanium процессорын гэр бүлд суурилсан 32 битийн Intel систем болон системүүдийн аль алинд нь CVF функцийг хэрэгжүүлсэн анхных юм. Windows орчин. Нэмж дурдахад энэхүү хөрвүүлэгч нь 32 битийн Intel процессор болон Intel Itanium процессорын гэр бүлд суурилсан Линукс систем дээр CVF хэлний функцийг хэрэгжүүлэх боломжийг олгодог. 2004 онд энэхүү хөрвүүлэгчийн өргөтгөсөн хувилбар болох Windows-д зориулсан Intel Visual Fortran Compiler Professional Edition хөрвүүлэгчийг гаргахаар төлөвлөж байгаа бөгөөд үүнд Visual Numerics, Inc-ийн боловсруулсан IMSL Fortran 5.0 номын сан багтах болно.
"Шинэ хөрвүүлэгчид нь график болон видео гүйцэтгэлийг сайжруулах шинэ командуудыг өгдөг Prescott код нэртэй Intel-ийн удахгүй гарах процессоруудыг дэмждэг. Мөн бусад гүйцэтгэлийг сайжруулдаг. Тэд мөн дэмждэг. шинэ технологи Mobile MMX(tm) нь гар утас болон PDA-д зориулсан график, дуу, видео програмуудын гүйцэтгэлийг мөн адил сайжруулдаг гэж Нижний Новгород дахь Intel програм хангамж хөгжүүлэх төвийн захирал Алексей Одиноков хэлэв. - Эдгээр хөрвүүлэгчид програм хөгжүүлэгчдэд шинэ програм бүтээх нэг багц хэрэгслээр хангадаг утасгүй сүлжээнүүд Intel архитектур дээр суурилсан. Intel-ийн шинэ хөрвүүлэгчид мөн Intel-ийн Hyper-Threading технологи болон удирдамжийн хэрэглээг тодорхойлдог OpenMP 2.0 салбарын тодорхойлолтыг дэмждэг. өндөр түвшинпрограмууд дахь зааврын урсгалыг хянах".
Хөрвүүлэгчид багтсан шинэ хэрэгслүүдийн дунд Intel Code Coverage болон Intel Test Prioritization хэрэгслүүд орно. Эдгээр хэрэгслүүд хамтдаа туршилтын процессыг сайжруулснаар програмын хөгжлийг хурдасгаж, хэрэглээний чанарыг сайжруулахад тусалдаг. програм хангамж.
Кодын хамрах хэрэгсэл нь програмыг туршихдаа програмын логик ашиглалт болон програмын эх кодонд ашигласан хэсгүүдийн байршлын талаарх бүрэн мэдээллийг өгдөг. Хэрэв програмд өөрчлөлт оруулсан эсвэл энэ туршилт нь програмын хөгжүүлэгчийн сонирхсон хэсгийг шалгахыг зөвшөөрөхгүй бол Туршилтын тэргүүлэх чиглэлийн хэрэгсэл нь сонгосон хэсгийн ажиллагааг шалгах боломжийг танд олгоно. програмын код.
Intel-ийн шинэ хөрвүүлэгчид 399 доллараас 1499 долларын хооронд янз бүрийн тохиргоотой. Тэдгээрийг өнөөдөр Intel корпорациас эсвэл дэлхийн өнцөг булан бүрт байгаа борлуулагчдаас худалдаж авах боломжтой бөгөөд тэдгээрийн жагсаалтыг сайт дээр байрлуулсан болно. http://www.intel.com/software/products/reseller.htm#Russia.
Prescott процессоруудын дэмжлэг
Хөрвүүлэгчийн найм дахь хувилбарт Intel Pentium 4 (Prescott) процессорыг дэмжих нь дараах байдалтай байна.1. SSE3 командуудыг дэмжих (эсвэл PNI, Prescott New Instructions). Энд онцлох гурван арга бий:
А. Ассемблерийн оруулга (Inline угсралт). Жишээлбэл, хөрвүүлэгч _asm(addsubpd xmm0, xmm1) SSE3 командын дараах хэрэглээг таних болно. Тиймээс доод түвшний оновчлолыг сонирхож буй хэрэглэгчид ассемблер командуудад шууд хандах боломжтой.
б. C/C++ хөрвүүлэгчид ассемблерийн оруулга ашиглахаас илүү өндөр түвшний шинэ зааварчилгааг авах боломжтой. Тухайлбал, суурилагдсан функцээр дамжуулан (дотоод функцууд):
Суулгасан функцууд
суурилуулсан функц | Үүсгэсэн тушаал |
---|---|
_мм_addsub_ps | Нэмэлт нэмэлтүүд |
_мм_хадд_ps | Хадпс |
_mm_hsub_ps | Msubps |
_mm_moveldup_ps | Movsldup |
_mm_movehdup_ps | Мовшдуп |
_mm_addsub_pd | Addsubpd |
_мм_хадд_pd | Хаддпд |
_mm_hsub_pd | hsubpd |
_mm_loaddup_pd | movddup xmm, m64 |
_мм_шилжсэн_pd | movddup reg, reg |
_mm_lddqu_si128 | Lddqu |
Хүснэгтэнд SSE3 багцаас суулгасан функцууд болон холбогдох ассемблерийн зааврыг харуулав. MMX\SSE\SSE2 багцын командуудад ижил дэмжлэг байдаг. Энэ нь программистад ассемблер хэлний програмчлалыг ашиглахгүйгээр доод түвшний кодын оновчлолыг хийх боломжийг олгодог: хөрвүүлэгч өөрөө суулгасан функцуудыг процессорын холбогдох зааварт буулгах ("e" зураглал) болон регистрүүдийн оновчтой ашиглалтыг хариуцдаг. шинэ зааврын багцыг үр дүнтэй ашиглах алгоритмыг бий болгоход анхаарлаа төвлөрүүл.
В. Хөрвүүлэгчийн шинэ командуудыг автоматаар үүсгэх. Өмнөх хоёр арга нь програмист шинэ командуудыг ашиглах явдал юм. Гэхдээ хөрвүүлэгч нь C/C++ болон Fortran кодын SSE3 багцаас шинэ зааварчилгааг автоматаар үүсгэх боломжтой (зохих сонголтуудыг ашиглан - доорх 3-р хэсгийг үзнэ үү). Жишээлбэл, оновчтой тохируулаагүй ачаалах тушаал (lddqu), энэ нь танд 40% хүртэл гүйцэтгэлийн өсөлтийг авах боломжийг олгодог (жишээлбэл, видео болон аудио кодчилолд). SSE3 багцын бусад командууд нь 3D графикийн даалгавар эсвэл нарийн төвөгтэй тоо ашиглан тооцоолох даалгавруудыг ихээхэн хурдасгах боломжийг танд олгоно. Жишээлбэл, SPEC CPU2000 FP багцын 168.wupwise програмын хувьд SSE3 зааврыг автоматаар үүсгэснээр хурдассан хурд ~25% байсныг доорх 3.1-р хэсгийн графикаас харж болно. Энэ програмын гүйцэтгэл нь комплекс тооны арифметикийн хурдаас ихээхэн хамаардаг.
2. Прескотт процессорын бичил архитектурын давуу талыг ашиглах. Код үүсгэх үед хөрвүүлэгч нь шинэ процессорын бичил архитектурын өөрчлөлтийг харгалзан үздэг. Жишээлбэл, зарим үйлдлүүд (бүхэл тоо шилжүүлэх, бүхэл тоог үржүүлэх, эсвэл SSE2 дахь өөр өөр хөвөгч цэгийн форматуудын хооронд тоо хөрвүүлэх гэх мэт) өмнөх хувилбаруудтай харьцуулахад шинэ процессор дээр илүү хурдан байдаг (жишээ нь, бүхэл тоо шилжүүлэх нь одоо нэг процессорын циклийг дөрвөн процессор хийдэг. өмнөх хувилбар).Intel Pentium 4 процессор). Ийм командыг илүү эрчимтэй ашиглах нь програмуудыг ихээхэн хурдасгах боломжийг олгодог.
Микроархитектурын өөрчлөлтийн өөр нэг жишээ бол дэлгүүр дамжуулах механизмыг сайжруулсан (урьд нь санах ойд хадгалагдсан өгөгдлийг хурдан ачаалах); Бодит хадгаламж нь кэш санах ойд ч явагдахгүй, харин завсрын хадгалах буферт явагддаг бөгөөд энэ нь өгөгдөлд маш хурдан нэвтрэх боломжийг олгодог. Архитектурын ийм онцлог нь жишээлбэл, програмын кодын автомат векторжуулалтыг илүү түрэмгий хийх боломжийг олгодог.
Хөрвүүлэгч нь эхний болон хоёрдугаар түвшний кэш санах ойн хэмжээг ихэсгэдэг.
3. Hyper-Threading технологийн дэмжлэгийг сайжруулсан. Энэ зүйл нь өмнөхтэй нь холбоотой байж магадгүй юм - бичил архитектурын өөрчлөлтүүд, тэдгээрийг эмхэтгэгчид ашиглах. Жишээлбэл, OpenMP салбарын тодорхойлолтыг дэмждэг ажиллах цагийн номын санг шинэ процессор дээр ажиллуулахаар оновчтой болгосон.
Гүйцэтгэл
Хөрвүүлэгчийг ашиглах нь Intel процессорын архитектурын давуу талыг ашиглах хялбар бөгөөд үр дүнтэй арга юм. Доор, хөрвүүлэгчийг ашиглах хоёр аргыг нөхцөлт (маш) онцлон тэмдэглэв: a) програмуудыг дахин эмхэтгэх. боломжит өөрчлөлтхөрвүүлэгчийн тохиргоо, б) хөрвүүлэгчийн тохиргоо болон эх бичвэрийн аль алиныг нь өөрчилснөөр дахин эмхэтгэх, түүнчлэн байнгын оновчлолд зориулж хөрвүүлэгчийн оношилгоог ашиглах болон бусад боломжит ашиглах боломжтой. програм хангамжийн хэрэгслүүд(жишээлбэл, профайлчид).1.1 Хөрвүүлэгчийн тохиргоог дахин эмхэтгэх, өөрчлөх замаар программуудыг оновчтой болгох
Ихэнхдээ шинэ оновчтой хөрвүүлэгч рүү шилжих эхний алхам бол үүнийг анхдагч тохиргоотой ашиглах явдал юм. Дараагийн логик алхам бол илүү түрэмгий оновчтой болгох сонголтуудыг ашиглах явдал юм. 1, 2, 3, 4-р зурагт Intel хөрвүүлэгчийн 8.0 хувилбар руу шилжих нь бусад салбарт тэргүүлэгч бүтээгдэхүүнүүдтэй харьцуулахад үр нөлөөг харуулж байна (-O2 - хөрвүүлэгчийн анхдагч тохиргоо, суурь - тохиргоо хамгийн их гүйцэтгэл). Харьцуулалтыг 32 ба 64 битийн Intel архитектурууд дээр хийсэн. SPEC CPU2000 программуудыг туршилтын багц болгон ашигладаг.
Зураг 1
Зураг 2
Зураг 3
Зураг 4
Зарим сонголтуудыг доор жагсаав (цаашид Windows үйлдлийн системийн гэр бүлийн сонголтууд; Linux үйлдлийн системийн гэр бүлийн хувьд ижил нөлөөтэй сонголтууд байдаг боловч нэр нь өөр байж болно; жишээлбэл, Windows-д зориулсан -Od эсвэл QxK нь Linux-д зориулсан -O0 эсвэл -xK-тэй төстэй нөлөө, илүү их дэлгэрэнгүй мэдээлэл Intel хөрвүүлэгчээр дэмжигдсэн хөрвүүлэгчийн гарын авлагаас олж болно.
Оновчлолын түвшний хяналт: Сонголтууд -Od (оновчлол байхгүй; дибаг хийх програмуудад ашигладаг), -O1 (кодын хэмжээг багасгахын тулд хамгийн их хурд), -O2 (кодын гүйцэтгэлийн хурдыг оновчтой болгох; анхдагчаар ашигладаг), -O3 (кодын гүйцэтгэлд хамгийн түрэмгий оновчлолыг идэвхжүүлдэг. хурд; зарим тохиолдолд энэ нь эсрэг нөлөө, өөрөөр хэлбэл удаашрахад хүргэдэг; IA-64 дээр -O3 ашиглах нь ихэнх тохиолдолд хурдатгалд хүргэдэг бол IA-32-д эерэг нөлөө бага ажиглагддаг гэдгийг тэмдэглэх нь зүйтэй. ). -O3-ээр идэвхжүүлсэн оновчлолын жишээ бол давталтын солилцоо, давталтын хайлуулах, давталтын хуваарилалт (урвуу давталт хайлуулах оновчлол), өгөгдлийн программ хангамжийг урьдчилан татах явдал юм. -O3 ашиглах үед удаашралтай байх шалтгаан нь хөрвүүлэгч нь түрэмгий оновчлолыг сонгохдоо эвристик аргыг ашигласантай холбоотой байж болох юм. тодорхой тохиолдол, програмын талаар хангалттай мэдээлэлгүй байх (жишээлбэл, давталтад ашигласан өгөгдлийн урьдчилсан зааварчилгааг үүсгэсэн, уг давталт нь цөөн хэдэн давталттай байхад олон удаа гүйцэтгэсэн гэж үздэг). Процедур хоорондын профайлыг оновчтой болгох, түүнчлэн программистуудын төрөл бүрийн "зөвлөгөөнүүд" (3.2-р хэсгийг үзнэ үү) нь энэ нөхцөлд тусалж чадна.
Процедур хоорондын оновчлол: -Qip (нэг файл дотор) болон -Qipo (хэд хэдэн эсвэл бүх төслийн файл дотор). Байнга хэрэглэгддэг кодыг шугамаар солих (функц/процедурыг дуудах зардлыг бууруулах) гэх мэт оновчлолуудыг багтаасан болно. Оновчлолын бусад үе шатуудын мэдээллийг төлөөлдөг - жишээлбэл, давталтын дээд хязгаарын тухай мэдээлэл (хэрэв энэ нь нэг файлд тодорхойлогдсон эмхэтгэх хугацааны тогтмол бөгөөд олон файлд ашиглагддаг бол) эсвэл санах ой дахь өгөгдлийн зэрэгцүүлэх тухай мэдээлэл (олон MMX) \SSE\SSE2\SSE3 командууд операндуудыг санах ойд 8 эсвэл 16 байтын хязгаарт зэрэгцүүлсэн тохиолдолд илүү хурдан ажиллана). Санах ойг хуваарилах процедурын дүн шинжилгээ (төслийн файлуудын аль нэгэнд хэрэгжсэн/дуудагдсан) нь энэ санах ойг ашигладаг функц/процедурууд руу шилждэг (энэ нь хөрвүүлэгчид өгөгдлийг санах ойд зөв тохируулаагүй гэсэн консерватив таамаглалаас татгалзахад тусална; нэмэлт мэдээлэл байхгүй үед таамаглал нь консерватив байх ёстой). Хоёрдмол утгагүй, өгөгдлийг өөрчилсөн дүн шинжилгээ нь өөр нэг жишээ болж чадна: нэмэлт мэдээлэл байхгүй, огтлолцол байхгүй гэдгийг нотлох боломжгүй тохиолдолд хөрвүүлэгч нь огтлолцол байдаг гэсэн консерватив таамаглалаас гардаг. Ийм шийдвэр нь жишээлбэл, IA-32 дээрх автомат векторжуулалт эсвэл IA-64 дээрх програм хангамжийн дамжуулах хоолой (програм хангамжийн дамжуулах хоолой эсвэл SWP) гэх мэт оновчлолын чанарт сөргөөр нөлөөлж болно. Процедур хоорондын оновчлол нь санах ойн огтлолцол байгаа эсэхийг шинжлэхэд тусална.
Профайлыг оновчтой болгох: Гурван үе шаттай. 1) -Qprof_gen сонголтыг ашиглан багажжсан код үүсгэх. 2) үүссэн кодыг төлөөллийн өгөгдөл дээр ажиллуулж, ажиллаж байх үед кодын гүйцэтгэлийн янз бүрийн шинж чанаруудын талаар мэдээлэл цуглуулдаг (жишээлбэл, шилжилтийн магадлал эсвэл давталтын давталтын тооны ердийн утга). 3) -Qprof_use сонголтоор дахин эмхэтгэх бөгөөд энэ нь хөрвүүлэгч өмнөх алхамд цуглуулсан мэдээллийг ашиглахыг баталгаажуулдаг. Тиймээс хөрвүүлэгч нь зөвхөн програмын чухал шинж чанаруудын статик тооцоог төдийгүй програмыг бодитоор ажиллуулах явцад олж авсан өгөгдлийг ашиглах чадвартай байдаг. Энэ нь тодорхой оновчлолын дараагийн сонголтод тусалж чадна (жишээлбэл, аль салбарыг ямар давтамжтайгаар гүйцэтгэсэн тухай мэдээлэлд үндэслэн програмын янз бүрийн салбаруудын санах ойд илүү үр дүнтэй зохион байгуулалт хийх; эсвэл мэдээлэлд үндэслэн давталт дээр оновчлол хийх гэх мэт). доторх давталтын ердийн тоо). Профайлыг оновчлох нь програмын ирээдүйн хэрэглээний хамгийн энгийн тохиолдлуудыг сайн харуулсан жижиг боловч төлөөлөх өгөгдлийн багцыг (2-р алхамын хувьд) сонгох боломжтой үед ялангуяа ашигтай байдаг. Зарим сэдвээр ийм төлөөлөгчийн багцыг сонгох нь нэлээд боломжтой юм. Жишээлбэл, DBMS хөгжүүлэгчид профайлын оновчлолыг ашигладаг.
Дээр дурдсан оновчлолууд нь ерөнхий төрлийнх, өөрөөр хэлбэл. үүсгэсэн код нь гэр бүлийн бүх өөр өөр процессорууд дээр ажиллах болно (32 битийн архитектурын хувьд дараах бүх процессорууд дээр: Intel Pentium-III, Pentium 4, түүний дотор Prescott цөм, Intel Pentium M). Тодорхой процессорын оновчлолууд бас байдаг.
Процессорын тусгай оновчлол: -QxK (Pentium-III; SSE командын хэрэглээ, микроархитектурын онцлог), -QxW ба -QxN (Pentium 4; SSE болон SSE2 командын хэрэглээ, бичил архитектурын онцлог), -QxB (Pentium M; SSE болон SSE2 командуудыг ашиглах, microarchitecture specifics) ), QxP (Prescott; SSE, SSE2, SSE3 командуудыг ашиглах, микроархитектурын онцлог). Энэ тохиолдолд эдгээр тохируулгуудыг ашиглан үүсгэсэн код нь процессорын гэр бүлийн бусад төлөөлөгчдөд ажиллахгүй байж болно (жишээлбэл, -QxW код нь Intel Pentium-III дээр суурилсан систем дээр хэрэгжсэн тохиолдолд хүчингүй тушаалыг гүйцэтгэхэд хүргэж болно. процессор). Эсвэл хамгийн их үр ашигтай ажиллахгүй (жишээлбэл, бичил архитектурын ялгаатай байдлаас шалтгаалан Pentium 4 процессор дээрх -QxB код). Эдгээр сонголтуудын тусламжтайгаар тодорхой процессорын зааварчилгааг ашиглан оновчтой ажиллах цагийн санг ашиглах боломжтой. Зорилтот процессор дээр код бодитоор хэрэгжиж байгаа эсэхийг хянахын тулд диспетчерийн механизм (cpu-dispatch) хэрэгждэг: програмыг гүйцэтгэх явцад процессорыг шалгах. Янз бүрийн нөхцөлд энэ механизмыг идэвхжүүлж болно, үгүй ч болно. -Qax(KWNP) сонголтын хувилбарыг ашигласан тохиолдолд Dispatch-ийг үргэлж ашигладаг. Энэ тохиолдолд кодын хоёр хувилбар үүсдэг: тодорхой процессор болон "ерөнхий" (ерөнхий) оновчтой хувилбарууд, сонголт нь програмыг гүйцэтгэх явцад тохиолддог. Тиймээс кодын хэмжээг нэмэгдүүлснээр шугамын бүх процессор дээр програмын гүйцэтгэл, зорилтот процессор дээр оновчтой гүйцэтгэлд хүрэх боломжтой. Өөр нэг сонголт бол шугамын өмнөх төлөөлөгчийн кодын оновчлолыг ашиглах бөгөөд энэ кодыг энэ болон дараагийн процессоруудад ашиглах явдал юм. Жишээлбэл, -QxN код нь Northwood болон Prescott цөмтэй Pentium 4 дээр ажиллах боломжтой. Кодын хэмжээ нэмэгдэхгүй. Энэ аргын тусламжтайгаар та Нортвүүд дээр оновчтой гүйцэтгэлтэй Prescott процессортой систем дээр сайн боловч оновчтой бус гүйцэтгэлийг олж авах боломжтой (Учир нь SSE3 ашиглагдаагүй бөгөөд бичил архитектурын ялгааг тооцдоггүй). Үүнтэй төстэй сонголтууд IA-64 архитектурын процессоруудад бас байдаг. Асаалттай Энэ мөчтэдгээрийн хоёр нь байдаг: -G1 (Itanium) ба -G2 (Itanium 2; анхдагч сонголт).
Доорх график (Зураг 5) нь дээр дурдсан зарим оновчлолыг (тухайлбал -O3 -Qipo -Qprof_use -Qx(N,P)) Prescott процессор дээр анхдагч тохиргоотой харьцуулахад ашиглах хурдыг (нэг дээр суурилсан - хурдасгахгүй) харуулж байна. (-O2). -QxP-ийг ашиглах нь зарим тохиолдолд -QxN-тэй харьцуулахад хурдыг нэмэгдүүлэхэд тусалдаг. Өмнөх хэсэгт дурдсан 168.wupwise програмд хамгийн их хурдыг олж авсан (SSE3 зааврыг ашиглан нарийн төвөгтэй арифметикийг эрчимтэй оновчтой болгосны улмаас).
Зураг 5
Доорх 6-р зурагт кодын хурдны харьцааг (хугацаагаар) харуулав оновчтой тохиргоо Pentium 4 болон Itanium 2 процессорууд дээрх бүрэн оновчгүй кодтой (-Od) харьцуулбал Itanium 2 нь оновчлолын чанараас илүү хамааралтай болохыг харж болно. Энэ нь ялангуяа хөвөгч цэгийн (FP) тооцоололд тод илэрдэг бөгөөд харьцаа нь ойролцоогоор 36 дахин их байдаг. Хөвөгч цэгийн тооцоо нь хүчтэй цэг IA-64 архитектур, гэхдээ хамгийн үр дүнтэй хөрвүүлэгчийн тохиргоог ашиглахад анхаарах хэрэгтэй. Үүний үр дүнд бүтээмжийн өсөлт нь тэдгээрийг олоход зарцуулсан хөдөлмөрийн хөлсийг төлдөг.
Зураг 6. SPEC CPU200 оновчтой хувилбаруудыг ашиглах үед хурдатгал
Intel хөрвүүлэгчид олон урсгалтай програмуудыг бүтээхэд зориулсан OpenMP салбарын тодорхойлолтыг дэмждэг. Тодорхой (сонголт -Qopenmp) болон автомат (-Qparallel) зэрэгцүүлэлтийг дэмждэг. Тодорхой горимын хувьд програмист нь OpenMP стандартыг зөв, үр ашигтай ашиглах үүрэгтэй. Автомат параллелчлалын хувьд хөрвүүлэгч нь програмын кодыг шинжлэхтэй холбоотой нэмэлт ачаалалтай байдаг. Ийм учраас одоогийн байдлаар автомат параллелчлал нь зөвхөн энгийн кодууд дээр үр дүнтэй ажилладаг.
Зураг 7-д байгаа график нь Hyper-Threading технологийн дэмжлэгтэй Intel Pentium 4 процессор (Prescott) дээр суурилсан инженерийн (үйлдвэрлэлийн өмнөх) загвар систем дээр тодорхой параллелчлалыг ашиглах хурдатгалыг харуулж байна: 2.8GHz, 2GB RAM, 8K L1-Cache, 512K L2-кэш. SPEC OMPM2001-ийг туршилтын багц болгон ашигладаг. Энэхүү багц нь жижиг, дунд SMP системүүдэд зориулагдсан бөгөөд санах ойн хэрэглээ хоёр гигабайт хүртэл байдаг. Аппликейшнүүдийг Intel 8.0 C/C++ болон Fortran ашиглан -Qopenmp -Qipo -O3 -QxN ба -Qopenmp -Qipo -O3 -QxP гэсэн хоёр багц сонголттойгоор эмхэтгэсэн бөгөөд тус бүр нь Hyper-Threading-ийг идэвхжүүлж, идэвхгүй болгосон. . График дээрх хурдатгалын утгыг Hyper-Threading идэвхгүй болгосон нэг урсгалтай хувилбарын гүйцэтгэлд тохируулсан болно.
Зураг 7: Prescott процессор дээрх SPEC OMPM2001 багцын програмууд
11 тохиолдлын 9-д нь Hyper-Threading технологи идэвхжсэн үед OpenMP ашиглан илэрхий параллелчлалыг ашиглах нь гүйцэтгэлийг нэмэгдүүлдэг болохыг харж болно. Нэг аппликешн (312.swim) удаашралтай байна. Энэхүү програм нь өндөр хамааралтай гэдгээрээ алдартай байдаг нь мэдэгдэж байна зурвасын өргөнсанах ой. SPEC CPU2000-ийн нэгэн адил wupwise Prescott оновчлолоос (-QxP) ихээхэн ашиг хүртдэг.
1.2 Эх кодын өөрчлөлт бүхий программуудыг оновчтой болгох, хөрвүүлэгчийн оношлогоог ашиглах
Өмнөх хэсгүүдэд бид хөрвүүлэгчийн (болон түүний тохиргоо) кодын гүйцэтгэлийн хурдад үзүүлэх нөлөөг авч үзсэн. Үүний зэрэгцээ Intel хөрвүүлэгчид зөвхөн тохиргоог өөрчлөхөөс илүү кодыг оновчтой болгох боломжийг олгодог. Ялангуяа хөрвүүлэгчид программист программист программ кодонд "санамж" өгөх боломжийг олгодог бөгөөд энэ нь гүйцэтгэлийн хувьд илүү үр дүнтэй код үүсгэх боломжийг олгодог. C/C++ хэлний зарим жишээг доор харуулав (Fortran хэлний ижил төстэй хэрэгслүүд байдаг бөгөөд зөвхөн синтаксаар ялгаатай).
#pragma ivdep (үүнд ivdep гэдэг нь вектор хамаарлыг үл тоомсорлох гэсэн үг) програмын давталтаас өмнө хөрвүүлэгчид өгөгдлийн хамаарал байхгүй гэдгийг хэлэхийн тулд ашигладаг. Энэхүү зөвлөмж нь хөрвүүлэгч (шинжилгээнд үндэслэн) ийм хамаарал байж болно гэж консерватив байдлаар (хэрэв хөрвүүлэгч нь шинжилгээний үр дүнд хамаарал байгааг нотолж чадвал "санамж" ямар ч нөлөө үзүүлэхгүй), харин код зохиогч нь ажилладаг. ийм хамаарал үүсэх боломжгүй гэдгийг мэддэг. Энэхүү зөвлөмжийг ашиглан хөрвүүлэгч илүү үр дүнтэй код үүсгэж чадна: IA-32-д автомат векторжуулалт (C/C++ болон Fortran програмын гогцоонд зориулсан MMX\SSE\SSE2\SSE3 багцын вектор зааврыг ашиглан; та энэ аргын талаар илүү ихийг мэдэх боломжтой. жишээ нь, дараагийн Intel Technology Journal-д гарсан нийтлэл), IA-64-ийн програм хангамжийн шугам хоолой (SWP).
#прагма векторыг ажлын тоон болон чанарын шинж чанарт дүн шинжилгээ хийсний үндсэн дээр (IA-32-д автомат, IA-64-ийн SWP хоёулаа) давталтын векторчлолын үр ашиггүй байдлын талаарх шийдвэрийг өөрчлөхөд хөрвүүлэгчийг албадах зорилгоор үргэлж ашигладаг. давталт.
#pragma novector үргэлж #прагма векторын эсрэгээр хийдэг.
#pragma vector aligned нь давталтанд ашигласан өгөгдөл нь 16 байт хил дээр зэрэгцэж байгааг хөрвүүлэгчид хэлэхийн тулд ашигладаг. Энэ нь танд илүү үр ашигтай ба/эсвэл авсаархан (ажиллах хугацааны шалгалт байхгүйгээс) код үүсгэх боломжийг олгодог.
#pragma вектор unaligned нь #pragma aligned-ийн эсрэг үйлдлийг гүйцэтгэдэг. Энэ тохиолдолд гүйцэтгэлийн өсөлтийн талаар ярихад хэцүү байдаг, гэхдээ та илүү авсаархан код дээр найдаж болно.
#pragma түгээх цэгийг программын гогцоонд ашигладаг бөгөөд хөрвүүлэгч энэ цэг дэх түгээлтийн давталтыг хэд хэдэн жижиг хэсгүүдэд хувааж болно. Жишээлбэл, хөрвүүлэгч эх гогцоог автоматаар векторчлох боломжгүй үед (жишээ нь, #pragma ivdep-тэй ч үл тоомсорлох боломжгүй өгөгдлийн хамаарлын улмаас) ийм "санамж"-ийг ашиглаж болно. үүссэн циклүүдийг үр дүнтэй векторчлох боломжтой.
#pragma loop count (N) нь давталтын давталтын тооны хамгийн их магадлалтай утга нь N байх болно гэдгийг хөрвүүлэгчид хэлэхийн тулд ашигладаг. Энэ мэдээлэл нь энэ давталтын хамгийн үр дүнтэй оновчлолыг (жишээлбэл, задлах эсэх) шийдэхэд тусална. , SWP эсвэл автомат векторжуулалт хийх эсэх, програм хангамжийн өгөгдлийг урьдчилан татах командуудыг ашиглах эсэх, ...)
"Хинт" _assume_aligned(p, base) нь p заагчтай холбоотой санах ойн муж нь суурь = 2^n байт хил дээр зэрэгцэж байгааг хөрвүүлэгчид хэлэхийн тулд ашигладаг.
Энэ нь хол байна бүрэн жагсаалтхөрвүүлэгчийн янз бүрийн "санамжууд" нь үүсгэсэн кодын үр ашигт ихээхэн нөлөөлдөг. Хөрвүүлэгчид зөвлөгөө хэрэгтэй гэдгийг хэрхэн тодорхойлох вэ гэсэн асуулт гарч ирж магадгүй юм.
Нэгдүгээрт, та хөрвүүлэгчийн оношлогоог программист өгсөн тайлан хэлбэрээр ашиглаж болно. Жишээлбэл, -Qvec_reportN сонголтыг ашиглан (n нь 0-ээс 3 хооронд хэлбэлзэж, нарийвчилсан түвшнийг илэрхийлнэ) та автомат векторжуулалтын тайланг авч болно. Программист ямар гогцоо векторжуулсан, аль нь хийгээгүй талаарх мэдээллийг авах боломжтой болно. Үгүй бол хөрвүүлэгч векторжуулалт амжилтгүй болсон шалтгааныг мэдээлдэг. Үүний шалтгаан нь өгөгдлөөс хамааралтай байсан гэж бодъё. Энэ тохиолдолд хэрэв програмист хамаарал үүсэх боломжгүй гэдэгт итгэлтэй байвал #pragma ivdep ашиглаж болно. Хөрвүүлэгч нь IA-64 дээр ижил төстэй (IA-32-ийн Qvec_reportN-тэй харьцуулах) SWP-ийн оршихуй, үр нөлөөг хянах боломжийг олгодог. Ерөнхийдөө Intel хөрвүүлэгчид оновчлолыг оношлох өргөн боломжийг олгодог.
Хоёрдугаарт, бусад програм хангамжийн бүтээгдэхүүнүүд (жишээ нь Intel VTune profiler) код дахь гүйцэтгэлийн саатлыг олоход ашиглаж болно. Шинжилгээний үр дүн нь программист шаардлагатай өөрчлөлтийг хийхэд тусална.
Та мөн хөрвүүлэгчийн үүсгэсэн ассемблер кодын жагсаалтыг шинжилгээнд ашиглаж болно.
Зураг 8
Дээрх зураг 8 нь хөрвүүлэгч (болон бусад) ашиглан програмыг оновчтой болгох алхам алхмаар үйл явцыг харуулж байна програм хангамжийн бүтээгдэхүүн) IA-64 архитектурт зориулсан Fortran хэл дээрх Intel. Жишээлбэл, Рогидрометцентрийн 48 цагийн адиабат бус бүс нутгийн урьдчилсан мэдээний схемийг авч үзэх болно (жишээлбэл, та энэ нийтлэлээс энэ талаар уншиж болно. Нийтлэлд тооцоолох хугацаа 25 минут орчим байдаг боловч мэдэгдэхүйц өөрчлөлт гарсан байна. Энэ нь бичигдсэнээс хойш. Cray-YMP систем дээр кодын гүйцэтгэлийг эхлэлийн цэг болгон авдаг Өгөгдмөл хөрвүүлэгчийн сонголттой (-O2) өөрчлөгдөөгүй код нь Intel Itanium 2 900 MHz дээр суурилсан 4 талын систем дээр гүйцэтгэлийн 20%-ийн өсөлтийг харуулсан. процессор Илүү түрэмгий оновчлолыг (-O3) ашигласнаар SWP болон өгөгдлийг урьдчилан татаж авах зэргээс шалтгаалан кодыг өөрчлөхгүйгээр ~2.5 дахин хурдасгасан. Хөрвүүлэгчийн оношлогоо, Intel VTune профайлыг ашиглан хийсэн шинжилгээ нь зарим саад бэрхшээлийг илрүүлсэн Жишээ нь, хөрвүүлэгч хэд хэдэн гүйцэтгэлийг программчлаагүй эгзэгтэй гогцоонууд, тайланд өгөгдлийн хамаарлыг санал болгож байна гэж тайлагнаж байна. Кодын жижиг өөрчлөлтүүд (ivdep удирдамж) үр дүнд хүрэхэд тусалсан. идэвхтэй дамжуулах. VTune профайлыг ашигласнаар хөрвүүлэгч нь кэш санах ойг илүү үр дүнтэй ашиглахын тулд үүрлэсэн гогцоонуудын дарааллыг (давталтын солилцоо) өөрчлөөгүй болохыг олж мэдсэн (мөн хөрвүүлэгчийн тайлан үүнийг баталсан). Үүний шалтгаан нь өгөгдлөөс хамааралтай байдлын талаархи консерватив таамаглал байв. Програмын эх кодонд өөрчлөлт оруулсан. Үүний үр дүнд бид анхны хувилбартай харьцуулахад 4 дахин хурдасгаж чадсан. OpenMP удирдамжтай тодорхой параллелчлалыг ашиглаж, дараа нь түүнээс дээш систем рүү шилжих өндөр давтамжтайТооцооллын хугацааг 8 минутаас бага болгон багасгах боломжийг олгосон нь анхны хувилбартай харьцуулахад 16 дахин их хурдыг өгсөн.
Intel Visual Fortran
Intel Visual Fortran 8.0 нь урд талын төгсгөлийг (програмчлалын хэл эсвэл зорилтот машинаас үл хамааран программыг хөрвүүлэгчийн дотоод дүрслэл болгон програмчлалын хэл дээрх текстээс хөрвүүлэх үүрэгтэй хөрвүүлэгчийн хэсэг) CVF хөрвүүлэгчийг ашигладаг. технологи, Intel хөрвүүлэгчийн бүрэлдэхүүн хэсгүүд нь олон тооны оновчлол, код үүсгэх үүрэгтэй.Зураг 9
Зураг 10
9 ба 10-р зурагт харьцуулсан графикуудыг харуулав Intel-ийн гүйцэтгэл Visual Fortran 8.0 нь Intel Fortran 7.1-ийн өмнөх хувилбар болон үйлдлийн систем дээр ажилладаг энэ хэл дээрх салбарт алдартай бусад хөрвүүлэгчидтэй. Windows гэр бүлүүдболон Linux. Харьцуулахын тулд F77 ба F90 стандартад нийцсэн эх бичвэрийг http://www.polyhedron.com/ сайтаас авах боломжтой тестүүдийг ашигласан. Нэг сайт дээр хөрвүүлэгчийн гүйцэтгэлийг харьцуулах талаар илүү нарийвчилсан мэдээллийг авах боломжтой (Win32 Хөрвүүлэгчийн харьцуулалт -> Fortran (77, 90) Гүйцэтгэлийн цагийн жишиг ба Linux хөрвүүлэгчийн харьцуулалт -> Fortran (77, 90) Гүйцэтгэлийн цагийн жишиг): өөр өөр хөрвүүлэгчид байдаг. харуулсан ба геометрийн дундаж утгыг туршилт бүрийн үр дүнтэй хослуулан өгсөн болно.
Сэтгүүлийн өмнөх дугаарт бид Intel VTune Performance Analyzer-ийн гэр бүлийн бүтээгдэхүүнүүдийн талаар ярилцсан - програм хөгжүүлэгчдийн дунд маш их алдартай бөгөөд кодыг илрүүлэх боломжийг олгодог гүйцэтгэлийн шинжилгээний хэрэгслүүдийн талаар. багийн програмууд, энэ нь процессорын хэт их нөөцийг зарцуулдаг бөгөөд энэ нь хөгжүүлэгчдэд кодын ийм хэсгүүдтэй холбоотой болзошгүй саад бэрхшээлийг тодорхойлох, арилгах боломжийг олгодог бөгөөд ингэснээр програм боловсруулах үйл явцыг хурдасгадаг. Гэсэн хэдий ч програмын гүйцэтгэл нь тэдгээрийг боловсруулахдаа ашигласан хөрвүүлэгчид хэр үр ашигтай байх, машины код үүсгэх үед ямар техник хангамжийн функцуудыг ашиглахаас ихээхэн хамаардаг гэдгийг анхаарна уу.
Windows болон Linux-д зориулсан хамгийн сүүлийн үеийн Intel C++ болон Intel Fortran хөрвүүлэгч нь Intel Itanium 2, Intel Xeon, болон Intel Pentium 4 процессорууд дээр суурилсан системүүдийн програмын гүйцэтгэлийн гүйцэтгэлийг бусад үйлдвэрлэгчдийн одоо байгаа хөрвүүлэгчээс 40% хүртэл нэмэгдүүлэх боломжийг олгодог. Hyper-Threading технологи зэрэг процессорууд.
Энэхүү хөрвүүлэгчийн гэр бүлийн кодын оновчлолтой холбоотой ялгаа нь хөвөгч цэгийн үйлдлийг гүйцэтгэхэд стек ашиглах, процедур хоорондын оновчлол (Interprocedural Optimization, IPO), програмын профайлын дагуу оновчтой болгох (Profile Guided Optimization, PGO), өгөгдлийг урьдчилан ачаалах зэрэг орно. санах ойн хандалттай холбоотой саатлаас сэргийлдэг кэш (өгөгдлийн урьдчилан татаж авах), Intel процессоруудын онцлог шинж чанаруудыг дэмжих (жишээлбэл, Intel Pentium 4-т зориулагдсан Intel Streaming SIMD Extensions 2 өгөгдөл дамжуулах өргөтгөлүүд), кодын автомат параллель байдал. , програм үүсгэх, олон дээр ажиллах янз бүрийн төрөлтэдгээрийн аль нэгийг нь оновчтой болгох процессорууд, дараагийн кодын "урьдчилан таамаглах" хэрэгсэл (салбарын таамаглал), гүйцэтгэлийн хэлхээтэй ажиллахад зориулсан өргөтгөсөн дэмжлэг.
Intel хөрвүүлэгчийг Alias/Wavefront, Oracle, Fujitsu Siemens, ABAQUS, Silicon Graphics, IBM зэрэг алдартай компаниудад ашигладаг болохыг анхаарна уу. Хэд хэдэн компаниудын бие даасан туршилтын үр дүнд үндэслэн Intel хөрвүүлэгчийн гүйцэтгэл нь бусад үйлдвэрлэгчдийн хөрвүүлэгчдээс хамаагүй илүү байдаг (жишээлбэл, http://intel.com/software/products/compilers/techtopics/compiler_gnu_perf.pdf-г үзнэ үү).
Доор бид зарим онцлог шинж чанаруудыг авч үзэх болно хамгийн сүүлийн үеийн хувилбаруудДесктоп болон серверт зориулсан Intel хөрвүүлэгч үйлдлийн системүүд.
Microsoft Windows платформд зориулсан хөрвүүлэгч
Windows-д зориулсан Intel 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++ стандартуудыг дэмждэг.
Windows-д зориулсан Intel Fortran Compiler 7.1
Энэ оны эхээр гарсан Windows-д зориулсан 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 хөгжүүлэлтийн хэрэгслүүдтэй бүрэн нийцдэг, өөрөөр хэлбэл түүнийг холбогдох хөгжүүлэлтийн орчинд нэгтгэх боломжтой. Нэмж дурдахад энэхүү хөрвүүлэгч нь Itanium / Itanium 2 процессор дээр ажилладаг үйлдлийн системд зориулсан 64 битийн програмуудыг боловсруулах боломжийг олгодог. Microsoft-ын тусламж 64 битийн Intel Fortran хөрвүүлэгчийг ашиглан 32 битийн Pentium процессор дээр Visual Studio. Кодыг дибаг хийх үед энэ хөрвүүлэгч нь Microsoft .NET платформд дибаглагчийг ашиглах боломжийг олгодог.
Хэрэв танд Compaq Visual Fortran 6.6 суулгасан бол эдгээр хөрвүүлэгч нь эх кодын түвшинд нийцтэй байдаг тул та анхны хөрвүүлэгчийн оронд Intel Fortran Compiler 7.1-ийг ашиглаж болно.
Windows-д зориулсан Intel Fortran Compiler 7.1 нь ISO Fortran 95 стандартад бүрэн нийцдэг бөгөөд C болон Fortran хоёр хэл дээрх програмуудыг бүтээх, дибаг хийхийг дэмждэг.
Линукс платформд зориулсан хөрвүүлэгч
Linux-д зориулсан Intel C++ Compiler 7.1
Оны эхээр гарсан өөр нэг хөрвүүлэгч болох Linux-д зориулсан Intel C++ Compiler 7.1 нь Intel Itanium, Intel Itanium 2, Intel Pentium 4, Intel Pentium M процессоруудад зориулсан кодын оновчлолыг өндөр түвшинд гаргах боломжийг олгодог. Энэхүү хөрвүүлэгч нь бүрэн боломжтой. GNU C хөрвүүлэгчийн түвшний эх код болон объектын модулиудад нийцэж байгаа нь GNU C-ээр бүтээгдсэн програмуудыг нэмэлт зардалгүйгээр түүн рүү шилжүүлэх боломжийг олгодог. үйлдлийн системүүд SCO, Sun Solaris-ийн анхны хувилбарууд гэх мэт) нь бүрэн нийцтэй гэсэн үг юм. хоёртын түвшний gcc 3.2 хөрвүүлэгч. Эцэст нь Linux-д зориулсан Intel C++ Compiler 7.1-ийн тусламжтайгаар та Линуксийн цөмийг эх кодод нь цөөн хэдэн өөрчлөлт оруулан дахин эмхэтгэх боломжтой.
Linux-д зориулсан Intel Fortran Compiler 7.1
Linux-д зориулсан Intel Fortran Compiler 7.1 хөрвүүлэгч нь Intel Itanium, Intel Itanium 2, Intel Pentium 4, Intel Pentium M процессоруудад оновчтой код үүсгэх боломжийг олгодог. Энэхүү хөрвүүлэгч нь эх кодын түвшинд Compaq Visual Fortran 6.6 хөрвүүлэгчтэй бүрэн нийцдэг. Та Compaq Visual Fortran-аар үүсгэсэн программуудыг дахин эмхэтгэж, гүйцэтгэлийг нь сайжруулна.
Нэмж дурдахад, заасан хөрвүүлэгч нь emacs засварлагч, gdb дибаглагч, make application бүтээх хэрэгсэл зэрэг хөгжүүлэгчдийн ашигладаг хэрэгслүүдтэй нийцдэг.
Энэхүү хөрвүүлэгчийн Windows хувилбарын нэгэн адил Linux-д зориулсан Intel Fortran Compiler 7.1 нь ISO Fortran 95 стандарттай бүрэн нийцдэг бөгөөд C болон Fortran хоёр хэл дээр код агуулсан програмуудыг үүсгэх, дибаг хийхийг дэмждэг.
Жагсаалтад орсон Intel хөрвүүлэгчийг бий болгоход мэргэжилтнүүд ихээхэн хувь нэмэр оруулсан гэдгийг онцлон тэмдэглэх нь зүйтэй Оросын төвНижний Новгород дахь програм хангамж боловсруулахад зориулсан Intel. Intel хөрвүүлэгчийн талаарх дэлгэрэнгүй мэдээллийг Intel вэб сайтаас авах боломжтой: www.intel.com/software/products/ .
Энэ нийтлэлийн хоёр дахь хэсэг нь гар утасны төхөөрөмжид зориулсан програмуудыг бий болгодог Intel хөрвүүлэгчид зориулагдсан болно.