GPU NVIDIA sú pripravené na Vulkan API. Moderné grafické API

  • 28.06.2019

funkcie, štruktúry a konštanty poskytované aplikáciou (knižnicou, službou) alebo operačným systémom na použitie v externých softvérových produktoch. Používajú ho programátori pri písaní všetkých druhov aplikácií.

Collegiate YouTube

  • 1 / 5

    API definuje funkcionalitu, ktorú program (modul, knižnica) poskytuje, pričom API umožňuje abstrahovať od toho, ako presne je táto funkcionalita implementovaná.

    Ak sa program (modul, knižnica) považuje za čiernu skrinku, potom API je súbor „knobov“, ktoré má používateľ tejto skrinky k dispozícii a ktoré môže krútiť a ťahať.

    Softvérové ​​komponenty navzájom spolupracujú prostredníctvom rozhraní API. V tomto prípade komponenty zvyčajne tvoria hierarchiu - komponenty na vysokej úrovni používajú API komponentov nižšej úrovne a tie zase používajú API komponentov ešte nižšej úrovne.

    Podľa tohto princípu sú postavené protokoly na prenos dát cez internet. Štandardný zásobník protokolov (model siete OSI) obsahuje 7 vrstiev (od fyzickej vrstvy prenosu bitov po vrstvu aplikačných protokolov ako HTTP a IMAP). Každá vrstva využíva funkčnosť predchádzajúcej („nižšej“) vrstvy prenosu dát a následne poskytuje potrebnú funkčnosť ďalšej („vyššej“) vrstve.

    Je dôležité poznamenať, že pojem protokol je svojím významom blízky pojmu API. Obidve sú abstrakcie funkčnosti, iba v prvom prípade hovoríme o prenose údajov av druhom o interakcii aplikácií.

    Rozhranie API knižnice funkcií a tried obsahuje popis podpisov a sémantika funkcie.

    Podpis funkcie

    Niekedy rozlišovať volací podpis a implementačný podpis funkcie. Signatúra volania sa zvyčajne vytvára zo syntaktickej štruktúry volania funkcie, pričom sa berie do úvahy podpis rozsahu danej funkcie, názov funkcie, postupnosť skutočných typov argumentov vo volaní a typ volania. výsledok. Podpis implementácie zvyčajne obsahuje niektoré prvky zo syntaktickej konštrukcie deklarácie funkcie: špecifikátor rozsahu funkcie, jej názov a postupnosť formálnych typov argumentov.

    Napríklad v programovacom jazyku C++ je jednoduchá funkcia jednoznačne rozpoznaná kompilátorom podľa jej názvu a postupnosti typov jej argumentov, čo tvorí podpis funkcie v tomto jazyku. Ak je funkcia metódou nejakej triedy, potom sa na podpise bude podieľať aj názov triedy.

    V softvérovom priemysle majú bežné štandardné API pre štandardnú funkčnosť dôležitú úlohu, pretože zabezpečujú, že všetky programy, ktoré používajú spoločné API, budú fungovať rovnako dobre, alebo aspoň typickým známym spôsobom. V prípade GUI API to znamená, že programy budú mať podobné používateľské rozhranie, čo uľahčí učenie sa nových softvérových produktov.

    Na druhej strane rozdiely API medzi operačnými systémami značne sťažujú prenos aplikácií medzi platformami. Existujú rôzne metódy, ako túto zložitosť obísť – písanie „stredne pokročilých“ API (grafické API wxWidgets,, GTK atď.), písanie knižníc, ktoré mapujú systémové volania z jedného OS na systémové volania z iného OS (behové prostredia ako Wine, cygwin atď.), zavedenie štandardov kódovania v programovacích jazykoch (napríklad štandardná knižnica jazyka C), písanie interpretovaných jazykov, ktoré sú implementované na rôznych platformách (, python, perl, php, tcl, Java atď.).

    Treba tiež poznamenať, že programátor má často k dispozícii niekoľko rôznych API, ktoré umožňujú dosiahnuť rovnaký výsledok. Každé API je však zvyčajne implementované pomocou API softvérových komponentov nižšej úrovne abstrakcie.

    Napríklad: aby ste videli riadok „Ahoj, svet! », Stačí vytvoriť HTML dokument s minimálnou hlavičkou a jednoduchým telom obsahujúcim daný reťazec. Keď prehliadač otvorí tento dokument, program prehliadača odovzdá názov súboru (alebo už otvorený deskriptor súboru) knižnici, ktorá spracováva dokumenty HTML, ktorá zase pomocou rozhrania API operačného systému prečíta tento súbor a pochopí jeho zariadenie. , potom ho zavolajte postupne cez API knižnice štandardných operácií grafických primitív, ako napríklad "vyčistiť okno", "napísať" Ahoj, svet! "Vo vybranom písme". Počas vykonávania týchto operácií bude knižnica grafických primitív odkazovať na knižnicu rozhrania okna s príslušnými požiadavkami, táto knižnica už bude odkazovať na API operačného systému na zapisovanie údajov do vyrovnávacej pamäte grafickej karty.

    Zároveň prakticky na každej z úrovní je vlastne niekoľko možných alternatívnych API. Napríklad: pôvodný dokument by sme mohli napísať nie v HTML, ale v LaTeX-e, na zobrazenie by sme mohli použiť akýkoľvek prehliadač. Rôzne prehliadače vo všeobecnosti používajú rôzne knižnice HTML a navyše to všetko môže byť zostavené pomocou rôznych primitívnych knižníc a na rôznych operačných systémoch.

    Hlavné výzvy existujúcich vrstvených systémov API sú teda:

    • Zložitosť prenosu programového kódu z jedného systému API do druhého (napríklad pri zmene OS);
    • Strata funkčnosti pri prechode z nižšej úrovne na vyššiu. Zhruba povedané, každá „vrstva“ API je vytvorená na uľahčenie niektorých štandardných operácií. Zároveň sa však skutočne sťažuje, prípadne sa stáva zásadne nemožným vykonávať niektoré ďalšie operácie, ktoré poskytuje nižšia úroveň API.

    Najznámejšie API

    Operačné systémy

    API definuje funkcionalitu, ktorú program (modul, knižnica) poskytuje, pričom API umožňuje abstrahovať od toho, ako presne je táto funkcionalita implementovaná.

    Ak sa program (modul, knižnica) považuje za čiernu skrinku, potom API je súbor „knobov“, ktoré má používateľ tejto skrinky k dispozícii a ktoré môže krútiť a ťahať.

    Softvérové ​​komponenty navzájom spolupracujú prostredníctvom rozhraní API. V tomto prípade komponenty zvyčajne tvoria hierarchiu - komponenty na vysokej úrovni používajú API komponentov nižšej úrovne a tie zase používajú API komponentov ešte nižšej úrovne.

    Podľa tohto princípu sú postavené protokoly prenosu údajov. Štandardný internetový protokol (model siete OSI) obsahuje 7 vrstiev (od fyzickej vrstvy prenosu bitových paketov po vrstvu aplikačných protokolov ako HTTP a IMAP). Každá vrstva využíva funkčnosť predchádzajúcej vrstvy prenosu údajov a následne poskytuje požadovanú funkčnosť ďalšej vrstve.

    Je dôležité poznamenať, že pojem protokol je svojím významom blízky pojmu API. Obidve sú abstrakcie funkčnosti, iba v prvom prípade hovoríme o prenose údajov av druhom o vytváraní počítačových aplikácií.

    Rozhranie API knižnice funkcií a tried obsahuje popis podpisov a sémantika funkcie.

    Application Programming Interface (API) je programovacie rozhranie pre interakciu medzi systémami, ktoré umožňuje:

    • Prístup k podnikovým obchodným službám
    • Výmena informácií medzi systémami a aplikáciami
    • Zjednodušte interakcie medzi spoločnosťami, partnermi, vývojármi a zákazníkmi

    Otvorená stratégia API

    Stratégia API zahŕňa:

    • Vývoj obchodných produktov založených na existujúcich API
    • Poskytovanie interných služieb vývojárom
    • Modely monetizácie API na vytváranie viackanálových interakcií a zvyšovanie ziskov

    Implementácia konceptu Open API pomáha transformovať podnikanie, zakotviť ho do flexibilného projektového ekosystému hráčov na trhu, vytvárať podmienky pre neustále generovanie nových nápadov a vytváranie pridanej hodnoty pri správe firemných dátových polí.

    Trh s integračnými riešeniami sa rozvíja v kontexte evolúcie API – od EDI a SOAP po Web 2.0, ktorý začal éru verejných API. Počet takýchto rozhraní môže v nasledujúcich 3 rokoch vzrásť viac ako 50-krát a dosiahnuť 1 milión. Je to kvôli viackanálovému: kanály interakcie so zákazníkmi sa musia meniť s nimi. Neustály rast počtu spotrebiteľov a objemu údajov viedol k vzniku API ekonomiky, ktorá pomáha vytvárať inovatívne obchodné modely pre využívanie podnikových aktív a služieb založených na otvorených rozhraniach.

    Podpis funkcie

    Podpis funkcie- časť deklarácie všeobecnej funkcie, ktorá umožňuje vysielateľom identifikovať funkciu medzi ostatnými. Rôzne programovacie jazyky majú rôzne predstavy o podpise funkcie, čo tiež úzko súvisí s možnosťami preťaženia funkcií v týchto jazykoch.

    Niekedy rozlišovať volací podpis a implementačný podpis funkcie. Signatúra volania sa zvyčajne vytvára zo syntaktickej štruktúry volania funkcie, pričom sa berie do úvahy podpis rozsahu danej funkcie, názov funkcie, postupnosť skutočných typov argumentov vo volaní a typ volania. výsledok. Podpis implementácie zvyčajne obsahuje niektoré prvky zo syntaktickej konštrukcie deklarácie funkcie: špecifikátor rozsahu funkcie, jej názov a postupnosť formálnych typov argumentov.

    Napríklad v programovacom jazyku C++ je jednoduchá funkcia jednoznačne rozpoznaná kompilátorom podľa jej názvu a postupnosti typov jej argumentov, čo tvorí podpis funkcie v tomto jazyku. Ak je funkcia metódou nejakej triedy, potom bude v podpise zahrnutý aj názov triedy.

    Treba tiež poznamenať, že programátor má často k dispozícii niekoľko rôznych API, ktoré umožňujú dosiahnuť rovnaký výsledok. Každé API je však zvyčajne implementované pomocou API softvérových komponentov nižšej úrovne abstrakcie.

    Napríklad: aby ste videli riadok "Ahoj, svet!" všetko, čo musíte urobiť, je vytvoriť HTML dokument s minimálnou hlavičkou a jednoduchým telom obsahujúcim daný reťazec. Čo sa stane, keď prehliadač otvorí tento dokument? Program prehliadača prenesie názov súboru (alebo už otvorený deskriptor súboru) do knižnice, ktorá spracováva dokumenty HTML, ktorá následne pomocou rozhrania API operačného systému prečíta tento súbor a pochopí jeho zariadenie, zavolá operácie ako „Vymazať okno“, „píšte vybraným písmom Hello, world!“ toto“.

    Zároveň prakticky na každej z úrovní je vlastne niekoľko možných alternatívnych API. Napríklad: pôvodný dokument by sme mohli napísať nie v HTML, ale v LaTeX-e, na zobrazenie by sme mohli použiť akýkoľvek prehliadač. Rôzne prehliadače vo všeobecnosti používajú rôzne knižnice HTML a navyše to všetko možno (všeobecne povedané) skompilovať pomocou rôznych primitívnych knižníc a na rôznych operačných systémoch.

    Hlavné výzvy existujúcich vrstvených systémov API sú teda:

    • Zložitosť prenosu programového kódu z jedného systému API do druhého (napríklad pri zmene OS);
    • Strata funkčnosti pri prechode z nižšej úrovne na vyššiu. Zhruba povedané, každá „vrstva“ API je vytvorená na uľahčenie niektorých štandardných operácií. Zároveň sa však skutočne sťažuje, prípadne sa stáva zásadne nemožným vykonávať niektoré ďalšie operácie, ktoré poskytuje nižšia úroveň API.

    Základné typy API

    Interné API

    • Prístup k API je poskytovaný iba interným vývojárom
    • Aplikácie zamerané na zamestnancov podniku

    Obchodné vodiče:

    • Dôslednosť vývoja
    • Znížené náklady
    • Zlepšenie efektívnosti vývoja

    Partnerské API

    • Rozhrania API sú dostupné iba pre obmedzený počet obchodných partnerov
    • Aplikácie sú určené pre koncových spotrebiteľov a firemných používateľov

    Obchodné vodiče:

    • Automatizácia vývojového procesu
    • Rozvoj partnerských vzťahov
    • Optimalizácia procesu interakcie s partnermi

    Verejné API

    Prístup je poskytovaný akémukoľvek externému vývojárovi Aplikácie sú zamerané na koncových používateľov

    Obchodné vodiče:

    • Vývoj nových služieb
    • Vývoj ekosystému
    • Viackanálová interakcia

    Najznámejšie API

    API operačných systémov

    GUI API

    • Direct3D (časť DirectX)
    • DirectDraw (časť DirectX)

    Predstavili sme nové programovacie rozhranie Vulkan GUI. Majitelia GPU GeForce už majú to, čo je potrebné, aby mohli využívať výhody rozhrania Vulkan API. Nový nástroj poskytne vývojárom lepšiu kontrolu nad vykonávaním grafických príkazov a lepší výkon pre širšiu škálu zariadení.

    Podpora NVIDIA pre Vulkan od jeho vydania, a to nielen naprieč platformami, ale aj v moderných hrách, ako je The Talos Principle, si získala pozornosť niektorých z najrenomovanejších odborníkov v tomto odvetví.

    „Možnosť hrať The Talos Principle v deň vydania API je neuveriteľný úspech,“ povedal Jon Peddie, prezident Jon Peddie Research. "Multiplatformová kompatibilita NVIDIA a plná podpora ovládačov pre rôzne operačné systémy potvrdzuje vedúce postavenie spoločnosti vo vývoji Vulkan API."

    čo je Vulkan?

    Vulkan je nízkoúrovňové API, ktoré poskytuje vývojárom priamy prístup k GPU, aby mali úplnú kontrolu nad tým, ako funguje. Vďaka jednoduchším a ľahším ovládačom Vulkan vykazuje nižšiu latenciu a menšiu grafickú réžiu ako tradičné API OpenGL a Direct3D. Vulkan tiež ponúka efektívnu podporu multithreadingu a umožňuje viacjadrovým procesorom efektívnejšie načítať grafické potrubie, čím pozdvihne existujúci výkon hardvéru na ďalšiu úroveň.

    Vulkan je prvá generácia nízkoúrovňového API novej generácie, ktorá je multiplatformová. Vývojári môžu vytvárať aplikácie pre počítače, mobilné telefóny a vstavané zariadenia, ktoré fungujú na rôznych operačných systémoch. Podobne ako OpenGL, aj Vulkan je otvorený, bezplatný štandard dostupný pre akúkoľvek platformu. NVIDIA však bude naďalej pracovať na OpenGL a OpenGL ES, aby podporila vývojárov, ktorí sa rozhodnú používať tradičné API.

    Kto stojí za Vulkanom?

    Vulkan bol vytvorený skupinou Khronos Group, ktorá spája širokú škálu rôznych spoločností v softvérovom a hardvérovom priemysle, vrátane NVIDIA, s cieľom vytvoriť open source, bezplatné API na vytváranie a prehrávanie rôzneho obsahu na širokej škále platformy a zariadenia. Sme hrdí na to, že sme zohrali kľúčovú úlohu pri vytváraní Vulkan API. A máme v úmysle aktívne pomáhať vývojárom aplikácií spolupracovať s Vulkanom, aby mohli z GPU NVIDIA vyťažiť maximum.

    Výhody Vulkan pre používateľov

    Vulkan je skvelé riešenie pre vývojárov. Nové API znižuje náklady na prenos hier a otvára nové trhové príležitosti pre aplikácie na viacerých platformách. Dôležité je, že ovládače NVIDIA pre Windows, Linux a Android sú už k dispozícii, aby ste z Vulkanu vyťažili maximum. Podrobnosti nájdete na stránke ovládačov Vulkan.

    Výhody pre vlastníkov GPU GeForce pre hráčov:

    · Nízka latencia a vysoká účinnosť Vulkan umožňuje vývojárom pridať do hier viac detailov a špeciálnych efektov pri zachovaní vynikajúceho výkonu. Keďže ovládač Vulkan je ľahší a má menšiu réžiu CPU, vývojári budú mať menej prekvapení, pokiaľ ide o náklady na výkon, čo zase umožňuje, aby aplikácie fungovali plynulejšie a pohotovejšie.

    · NVIDIA poskytuje ovládače Vulkan pre všetky grafické karty GeForce založené na Kepler a Maxwell so systémom Windows (Windows 7 a vyššie) a Linux.

    · Majitelia GeForce budú prví, ktorí si zahrajú vulkanskú verziu The Talos Principle, logickej hry od Croteamu, ktorá vyšla včera. „S tímom NVIDIA sme už predtým mali veľký úspech, pokiaľ ide o podporu ovládačov, ale ich práca na Vulkan na mňa urobila dojem,“ hovorí Dean Sekuliuc, senior programátor v Croteame. Nové API v Serious Engine a vytvorenie princípu Talos jedna z prvých hier na podporu Vulkana. Skvelá práca!“

    Výhody pre profesionálnych vývojárov aplikácií pre Quadro:
    · Naše ovládače Vulkan a OpenGL používajú binárnu architektúru na aktiváciu shaderov GLSL vo Vulkan. Vývojári môžu buď zostať na OpenGL, alebo prejsť z OpenGL na Vulkan, aby využili výhody Vulkan. Napríklad vďaka viacvláknovej architektúre Vulkan dokážu jadrá CPU pripravovať dáta pre GPU rýchlejšie ako doteraz. Pre dizajnové aplikácie a aplikácie na tvorbu digitálneho obsahu to znamená vyššiu mieru interaktivity pri práci s veľkými modelmi.

    Na WWDC 2014 nás všetkých čakalo prekvapenie: oznámenie nového 3D grafického API s názvom Metal. Tentoraz však nemáme do činenia s novým vysokoúrovňovým API nad OpenGL ES (ako to bolo v prípade Scene Kit), ale s novým nízkoúrovňovým API pre vykresľovanie a výpočty, ktoré môže slúžiť ako náhrada za OpenGL v hrách. Podľa Apple môže byť Metal až 10x rýchlejší ako OpenGL ES (presnejšie dokáže generovať draw call [ kresliť hovory; GPU Transfer] 10x rýchlejší) a je k dispozícii iba na zariadeniach so systémom iOS s najnovšou generáciou procesora A7.

    Toto oznámenie vyvolalo novú vlnu diskusií a polemík o potrebe nových grafických API, ktoré by mali (alebo by nemali – ktovie) nahradiť OpenGL. Tento príspevok nemá v úmysle zúčastniť sa tejto diskusie - jeho účelom je objasniť, ako sa Metal líši od OpenGL ES, ktorého je náhradou. Aby sme pochopili, čo je na Metal API také špeciálne (alebo naopak nič výnimočné), budeme musieť nahliadnuť trochu pod „kapotu“ grafického API a GPU.

    Ako fungujú GPU a grafické rozhrania API
    Naivný čitateľ by mohol predpokladať, že volanie API priamo robí niečo na GPU, alebo umožňuje, aby sa niečo stalo vo vnútri GPU. Ešte naivnejší čitateľ predpokladá, že GPU skončí spracovaním tohto volania, keď API vráti výsledok. Obe tieto tvrdenia sú ďaleko od reality. Ak by ovládač vykonával príkazy vykresľovania v tom istom momente, keď boli vytvorené, a čakal na dokončenie procesu vykresľovania pred vrátením výsledku do volania API, potom by CPU ani GPU nemohli fungovať efektívne, pretože jeden z procesorov by vždy byť zablokované v záujme iného.

    Pre jednoduché zlepšenie výkonu GPU by tento proces mal prebiehať asynchrónne; potom GPU nebude blokovať CPU a volania API vrátia výsledky takmer okamžite. V tomto prípade nemusí byť GPU vyťažené na 100 %, pretože môže čakať na nové vykresľovacie volania (= spustenie snímky) z CPU, zatiaľ čo ostatné príkazy budú čakať na dokončenie predchádzajúcich. To je dôvod, prečo väčšina grafických ovládačov zbiera všetky kresliť hovory(a ďalšie úlohy, ktoré bude potrebné vykonať na GPU – napríklad zmena stavov) na vykreslenie celého rámca pred jeho odoslaním do GPU. Tieto príkazy vo vyrovnávacej pamäti sa potom po prijatí príkazu odošlú späť, aby sa nakreslila ďalšia snímka, aby sa GPU využil čo najefektívnejšie. To samozrejme pridá jeden rámec latencie: zatiaľ čo CPU vytvára úlohu pre aktuálny rámec, predchádzajúci rámec sa vykreslí na GPU. V skutočnosti je možné uložiť do vyrovnávacej pamäte viac ako jeden rámec a tak dosiahnuť vyššiu snímkovú frekvenciu – za cenu ešte väčšej latencie.

    Ďalšou chybou v našom naivnom predpoklade je predpokladať, čo robia výzvy na zmenu stavu.

    Dozvedeli sme sa teda aspoň dve dôležité veci o tom, čo sa deje v zákulisí spolupráce OpenGL s modernými GPU: zmena stavov môže byť zložitá, ak je potrebná nová kombinácia stavov a všetky operácie GPU sa oneskorujú o určitý čas. .

    V aplikácii sa vygeneruje jeden prúd skutočných príkazov pre jeden rámec, ktorý je potrebné vykonať na GPU, a odošle sa do GPU naraz (v skutočnosti je všetko trochu komplikovanejšie, ale hlbšie ešte nezachádzame).

    Viac o tom, ako funguje moderná počítačová grafika, si môžete prečítať v sérii článkov od Fabiana Giesense – „Výlet po grafickej línii“.

    Prečo môže mať iný programovací model výhody
    Ako ste už videli, pred programátorom sa skrýva obrovské množstvo zložitostí a ošemetných trikov (je ich zrejme ešte viac, ako som spomínal), ktoré skrývajú to, čo sa priamo deje. Niektoré z nich uľahčujú život jednoduchému vývojárovi, iné ho nútia hľadať spôsoby, ako prekabátiť vodiča alebo sa „hrabať“ vo vedľajších efektoch API volaní.

    Niektoré grafické API sa dnes pokúšajú odstrániť väčšinu týchto trikov, odhaľujúc „zmätok“, ktorý skrývajú – a v niektorých prípadoch ponechávajú riešenie všetkých súvisiacich problémov na vôli programu. Grafické API PS3 išlo týmto smerom, AMD ide so svojím Mantle, chystané DirectX 12 a Apple Metal tam idú.

    čo sa zmenilo
    Príkazové vyrovnávacie pamäte sú teraz otvorené a aplikácia musí tieto vyrovnávacie pamäte naplniť a odoslať do frontu príkazov, ktorý tieto vyrovnávacie pamäte vykoná v zadanom poradí na GPI – takto bude mať aplikácia plnú kontrolu nad úlohou odoslanou na GPU a určí koľko rámcov latencie by sa malo pridať (pridanie latencie pri zvýšení využitia GPU). Ukladanie príkazov do vyrovnávacej pamäte do GPU a ich asynchrónne odosielanie do ďalšieho rámca musí vykonávať samotná aplikácia.

    Keďže je jasné, že tieto vyrovnávacie pamäte nebudú spustené hneď (to znamená počas vytvárania) a že je možné vytvoriť viacero vyrovnávacích pamätí a zaradiť ich do frontu na vykonanie v špecifickom poradí, aplikácia si môže dovoliť zostaviť ich na viacerých vláknach paralelne. Programátorovi bude tiež jasnejšie, ktoré z výsledkov výpočtov sú už dostupné a ktoré nie.

    Zmeny stavu sú teraz organizované do stavových objektov, ktoré možno jednoducho prepínať, pričom náklady na vytvorenie týchto objektov budú drahšie. Napríklad MTLRenderPipelineState obsahuje shadery a všetky stavy, ktoré sú implementované ich patchovaním.

    Ďalším plusom od nového API je, že nemusí niesť bremeno kompatibility s predchádzajúcimi verziami a teda nebude tak konzervatívny.

    V ostrení pre A7 je nuansa - vďaka nej je Metal zaostrený pre prácu na systémoch so zdieľanou pamäťou, t.j. CPU a GPU môžu priamo pristupovať k rovnakým údajom bez toho, aby ich museli preklápať cez zbernicu PCI. Metal dáva programu priamy prístup do vyrovnávacích pamätí z CPU a zodpovednosť za to, že tieto dáta nie sú súčasne využívané GPU, padá na plecia programátora. Táto užitočná funkcia vám umožňuje kombinovať výpočty GPU a CPU.

    A ako je to 10x rýchlejšie?
    Každý hovor žrebovania stojí nejaký čas na CPU a nejaký čas na GPU. Metal API znižuje čas CPU zjednodušením riadenia stavu a tým znižuje počet kontrol chýb z ovládača pre správne kombinácie stavov. Pomáha aj predbežný výpočet stavov: počas zostavovania môžete nielen vykonávať kontrolu chýb, ale samotná zmena stavu bude vyžadovať menej volaní API. Možnosť paralelného budovania vyrovnávacích pamätí príkazov ďalej zvyšuje počet volaní draw, keď je aplikácia viazaná na CPU.

    Na druhej strane, vykresľovanie na GPU sa nezrýchľuje, čo je aplikácia, ktorá robí len veľmi málo výziev pre veľké siete ( pletivo- časť modelu pozostávajúca z vrcholov objektu] nebude mať prospech z prechodu na Kov.

    Dalo by sa to isté urobiť v OpenGL?
    Na GDC 14 sa konala vynikajúca prezentácia na tému „Približovanie sa k nule vodiča nad hlavou“ od Cass Everitt, John McDonald, Graham Sellers a Tim Foley. Hlavnou myšlienkou bolo zredukovať prácu ovládača v OpenGL zvýšením množstva práce vykonanej volaniami draw a použitím nových objektov GL a menšieho počtu volaní GL na zlepšenie efektivity.

    Tento a ďalšie nápady si budú vyžadovať ďalšie rozšírenie OpenGL a nové verzie tohto API, ale veľa z toho sa dá preniesť do OpenGL ES. Čo strácame, je možnosť priamo spravovať vyrovnávacie pamäte príkazov so všetkými jej kladmi a zápormi.

    Aká je pravdepodobnosť, že to uvidíte v budúcnosti? Vzhľadom na podporu spätnej kompatibility môžeme len dúfať vo vznik sady funkcií, ktoré možno nazvať „moderným jadrom“, no s najväčšou pravdepodobnosťou bude treba urobiť kompatibilitu so všetkým, až po pôvodnú funkciu glBegin (). Toto obmedzenie bude platiť počas celej potenciálnej budúcnosti OpenGL a bude limitom jeho vývoja, vďaka čomu budú alternatívy ako Metal API čoraz viac preferované...

    Značky:

    • Kovové API
    • Apple
    • opengl
    Pridať značky

    Rozhrania API (Application Programming Interface) poskytujú vývojárom hardvéru a softvéru prostriedky na vytváranie ovládačov a programov, ktoré bežia rýchlejšie na veľkom množstve platforiem. Softvérové ​​ovládače sú navrhnuté tak, aby interagovali priamo s rozhraním API a nie s operačným systémom a softvérom.

    V súčasnosti existujú dve grafické API – OpenGL (SGI) a Direct 3D (Microsoft).

    Hoci výrobcovia video adaptérov podporujú štandard OpenGL, Microsoft poskytuje podporu Direct3D pre komplexnejšie API s názvom DirectX.

    DirectX 9 a vyššie sú najnovšie API, ktoré rozširujú podporu 3D a poskytujú vylepšený herný zážitok. Ďalšie informácie o rozhraní DirectX alebo o prevzatí jeho najnovšej verzie nájdete na webovej lokalite DirectX spoločnosti Microsoft na adrese www.microsoft.com/directx.

    CrossFire alebo sli

    V reakcii na vývoj a propagáciu staro-novej technológie SLI (MK # 30 (357) 2005) spoločnosťou NVIDIA, hlavný konkurent na trhu video akcelerátorov, ATI, vyvinul a implementoval svoje vlastné podobné riešenie – technológiu CrossFire. Rovnako ako SLI od NVIDIA vám umožňuje kombinovať zdroje dvoch grafických kariet v jednom počítači navzájom, čím sa zvyšuje výkon video subsystému. Technológia CrossFire je zásadne odlišná od SLI, takže s konkurenciou nemá veľa spoločného. Pri uprednostňovaní určitých výhod tej či onej technológie si používatelia v blízkej budúcnosti budú vyberať medzi NVIDIA a ATI nielen na základe názorov na značky, ktoré sa formovali v priebehu rokov, ale aj na základe faktov o technológiách SLI alebo CrossFire.

    Technická základňa

    Analogicky s NVIDIA, na umiestnenie dvoch grafických kariet ATI v jednom „tíme“ budete potrebovať základnú dosku s čipsetom od rovnakého výrobcu (plánuje sa, že čipset Intel i975X bude podporovať aj CrossFire), s dvoma slotmi PCI Express. Rovnako ako SLI, aj CrossFire je náročný na systémové zdroje, ktoré si vyžadujú kvalitný PSU. Pozrime sa podrobnejšie na systémové požiadavky.

    Základná doska. Matka musí mať čipset ATI Radeon Xpress 200 CrossFire... Tieto dosky sú vyrábané pre procesory AMD Sempron / Athlon 64 aj Intel Pentium 4 / Celeron. ATI teda bude teraz zarábať aj na čipsetoch, ktorých produkcia sa doteraz vo veľkom nedostala.

    Video karty. Aby technológia fungovala, je potrebná hlavná karta CrossFire (viac o tom nižšie) a akákoľvek iná grafická karta založená na čipe z rovnakej rodiny ako hlavná karta. Vedúca karta sa od ostatných líši prítomnosťou konektora DMS-59 (pripojený k DVI na podradenej karte), čipom CrossFire a samozrejme jeho cenou.

    Zdroj. Na udržanie takejto serióznej zostavy budete potrebovať napájací zdroj s minimálnym výkonom 400-450 W, najlepšie výkonnejší.

    Tu je v skutočnosti všetko, čo je potrebné na zostavenie video systému Krížová paľba... Ako ste si všimli, ATI pristupuje k svojim zákazníkom pružnejšie, neviaže ich ako pozemky na JZD k povinnému nákupu dvoch kariet s rovnakým čipom od rovnakého výrobcu. Väzba sa vykonáva iba na rodinu video čipov, na ktorej je založený urýchľovač. To znamená, že si môžete zakúpiť popredný video akcelerátor Radeon X800 a podriadený Radeon X800 XL. Master Radeon X800 bude kompatibilný s kartou akéhokoľvek výrobcu na základe akejkoľvek modifikácie čipu X800. To je bezpodmienečná výhoda oproti konkurencii - ak vezmete jeden akcelerátor s perspektívou ďalšej modernizácie pridaním ďalšej grafickej karty, nebudete musieť hľadať kartu od určitého výrobcu na základe konkrétneho čipu. V súčasnosti technológiu CrossFire podporujú grafické karty založené na X800 a X850, ako aj nové produkty založené na X1xxx.