Перайсці да змесціва

AVX

Архітэктурны даведнікFeex

AVX, Advanced Vector Extensions, дадае мадэль вектарнага праграмавання з рэгістрамі YMM і інструкцыямі з кадзіраваннем VEX, уключаючы 256-бітныя аперацыі з плаваючай коскай. Патрабуюцца як падтрымка працэсарам, так і кіраванне станам з боку аперацыйнай сістэмы.

Што вам трэба ведаць

AVX, Advanced Vector Extensions, дадае мадэль вектарнага праграмавання з рэгістрамі YMM і інструкцыямі з кадзіраваннем VEX, уключаючы 256-бітныя аперацыі з плаваючай коскай. Патрабуюцца як падтрымка працэсарам, так і кіраванне станам з боку аперацыйнай сістэмы.

Як гэта працуе

AVX пашырае вектарныя рэгістры да 256 бітаў, пры гэтым ніжнія 128 бітаў кожнага рэгістра YMM перакрываюцца з адпаведным рэгістрам XMM. Многія інструкцыі выкарыстоўваюць трохаперандную форму, што дазваляе рэгістру прызначэння адрознівацца ад уваходных аперандаў. 256-бітны вектар можа змяшчаць 8 значэнняў з плаваючай коскай адзінарнай дакладнасці або 4 значэнні падвойнай дакладнасці, але інструкцыі адрозніваюцца па тыпах аперандаў і паводзінах.

Дзе гэта карысна

Лікавы цыкл можа складаць некалькі незалежных значэнняў з плаваючай коскай з дапамогай адной вектарнай інструкцыі. Кампілятар або бібліятэка павінны згенераваць такі код і правільна арганізаваць загрузку, выраўноўванне, апрацоўку рэшткаў цыкла і залежнасці. AVX не распаралельвае адвольную праграму па ядрах аўтаматычна, а цэлалікавыя аперацыі на 256 бітах патрабуюць праверкі адпаведнага пашырэння, а не аўтаматычнага меркавання аб наяўнасці AVX2.

Як праверыць падтрымку і актыўнасць

Праверце CPUID.01H:ECX AVX біт 28, XSAVE біт 26 і OSXSAVE біт 27. Толькі пасля пацверджання OSXSAVE праграмнае забеспячэнне можа выкарыстоўваць XGETBV з ECX=0 і правяраць, што біты 1 і 2 рэгістра XCR0 ўключаюць стан XMM і YMM. Выкарыстоўвайце падтрымліваемы дыспетчар асяроддзя выканання замест выканання AVX у якасці эксперыменту па вызначэнні функцыі.

Праграма павінна як змяшчаць адпаведную рэалізацыю, так і выбіраць яе падчас выканання. Пералічэнне апаратных сродкаў, стан рэгістраў, уключаны АС, і скампіляваны базавы ўзровень бінарнага файла - гэта асобныя праверкі. Віртуальная машына можа наўмысна паказваць менш функцый, чым яе хост, а кантэйнер не дадае інструкцый працэсару хоста.

Чаго гэта функцыя не гарантуе

Падтрымка AVX сама па сабе не азначае наяўнасці AVX2, FMA, F16C, AVX-VNNI або AVX-512. Шырыня вектара не паказвае, колькі тактаў займае інструкцыя. Віртуальная машына можа прадастаўляць меншы набор інструкцый, чым фізічны хост.

Сумяшчальнасць і прадукцыйнасць на практыцы

Вымярайце нагрузку цалкам з рэпрэзентатыўнымі данымі. Больш шырокія вектары могуць паменшыць колькасць інструкцый, але пакінуць нязменнымі трафік памяці, сінхранізацыю або затраты на пераўтварэнне. Затрымка інструкцый, прапускная здольнасць і энергаспажыванне залежаць ад канкрэтнай мікраархітэктуры і ўмоў эксплуатацыі.

Практычны чэк-ліст для праверкі

  1. Зафіксуйце дакладную мадэль працэсара або платформы, а таксама задзейнічаныя версіі праграмы, АС і асяроддзя выканання. Захавайце дакладную фармулёўку памылкі або патрабавання.
  2. Звярніцеся да дакументацыі вытворцы для гэтай канкрэтнай мадэлі, затым праверце фактычныя магчымасці і ўключаны стан у асяроддзі, дзе выконваецца праграма.
  3. Супастаўце кожнае патрабаванне выбранага выканальнага файла або бэкэнда. Аналагічнай назвы функцыі, псеўданіма або агульнай назвы тэхналогіі недастаткова.
  4. Пацвердзіце, што праграма выбрала патрэбную рэалізацыю. Выкарыстоўвайце яе задакументаваныя сродкі дыягностыкі і падтрымліваемы запасны варыянт, калі патрабаванні не выконваюцца.
  5. Уносьце па адным падтрымліваемым змяненні за раз і паўтарайце тую ж нагрузку. Захоўвайце зыходную канфігурацыю і магчымасць адкату.

Калі функцыя пазначана, але праграмнае забеспячэнне не можа яе выкарыстоўваць

Пачніце з канкрэтнага кампанента, які выклікае збой. Апаратная база даных апісвае зафіксаваныя магчымасці; аперацыйная сістэма або гіпервізар могуць прадастаўляць іншае фактычнае асяроддзе. Памылка недапушчальнай інструкцыі (illegal instruction) таксама патрабуе даследавання канкрэтнай інструкцыі, якая выклікала збой, і зборкі бінарнага файла, паколькі пашкоджанне даных або іншая непадтрымліваемая інструкцыя могуць выклікаць аналагічны сімптом.

Усталюйце версію праграмы, драйвера або асяроддзя выканання, якая падтрымліваецца для дадзенай платформы, і пры неабходнасці выкарыстоўвайце задакументаваную вытворцам базавую або запасную зборку. Абнаўленне ПЗ не можа стварыць інструкцыю, якой няма ў працэсары. Змяненні ў мікрапраграме (firmware) і палітыках бяспекі павінны адпавядаць працэдурам вытворцы сістэмы і плану аднаўлення, а не агульным рэцэптам аптымізацыі.

Крыніцы і межы прымянення гэтага тлумачэння

Intel 64 and IA-32 Architectures Software Developer's Manual · Ядро Linux: выкарыстанне функцый XSTATE у прасторы карыстальніка

Гэтыя даведнікі вызначаюць архітэктурныя паводзіны і патрабаванні да праграмнага забеспячэння. Яны не пацвярджаюць незалежна кожнае значэнне функцыі на звязанай старонцы мадэлі абсталявання. Для праверкі падтрымкі мадэллю выкарыстоўвайце даныя вытворцы на адпаведнай старонцы і правярайце фактычную канфігурацыю сістэмы. Гэты артыкул не змяшчае вынікаў тэсціравання (benchmark), сертыфікацыі або даты незалежнага агляду.

Крыніцы і праверка

Рэдакцыйная прыналежнасць: Feex. Дата незалежнай праверкі не зафіксавана. Як мы даследуем.

  • Intel 64 and IA-32 Architectures Software Developer's Manual · Тамы 1 і 2 апісваюць названыя сямействы інструкцый і CPUID; Том 3 апісвае стан, старонкавую арганізацыю памяці, VMX і элементы кіравання абаронай. Архітэктурная дакументацыя не пацвярджае падтрымку канкрэтнай мадэлі.
  • Ядро Linux: выкарыстанне функцый XSTATE у прасторы карыстальніка · Уключаны аперацыйнай сістэмай вектарны стан, дынамічна ўключаны стан плітак, патрабаванні да стэка сігналаў і працэс атрымання дазволаў AMX. Спецыфічныя для Linux паводзіны не гарантуюць таго ж у іншай АС.

Ці быў гэты артыкул карысным?

Дастаткова адказаць "так" або "не". Выберыце прычыну, калі хочаце, або дадайце кароткую нататку.

Ці быў гэты артыкул карысным?