GigaThread Thread Scheduler
Kapitoly článků
Krátce ještě k novému plánovači. Dvouúrovňový distribuovaný plánovač ve Fermi je další klíčovou částí návrhu GPU. Na úrovni křemíku plánuje globální distribuční engine přidělování jednotlivých bloků threadů na různé SM jednotky, na úrovni SM pak každý warp plánovač distribuuje warpy 32 threadů na své vykonávací jednotky (stream procesory) uvnitř svého SM. První generace GigaThread engine uvedená na G80 zvládala spravovat až 12 288 threadů v reálném čase. Fermi staví na tomto základě poskytováním nejen vyšší "hrubé síly", ale také dramaticky rychlejším přepínáním obsahu, souběžným vykonáváním kernelů a vylepšeným plánováním bloků threadů.
10× rychlejší přepínání aplikačního obsahu
Multitasking je pochopitelně nezbytný i na GPU a i zde se, stejně jako na CPU, řeší přepínáním obsahu. Jde o to udělat vše co nejrychleji, aby ztráty z této režie byly minimální. Fermi pipeline je optimalizována za takovým účelem, přepnutí obsahu umí v časovém intervalu 10 až 20 µs. Díky tomu mohou programátoři využívat ve větší míře jen s minimální ztrátou výkonu GPU mezikernelovou komunikaci jako třeba kooperaci mezi grafickou a PhysX částí aplikace.
Souběžné vykonávání kernelů
Fermi podporuje souběžné vykonávání kernelů v tom smyslu, že v daném časovém úseku lze s jedním kernelem počítat hned další (a další a další &hellip) a je tak využita plná výpočetní kapacita, tedy vytíženo celé GPU na maximum. Například ve fyzice lze počítat kernely řešící chování kapaliny a současně i interakci pevných těles, které by, pokud by byly vykonávány až po sobě, využily jen polovinu volných thread procesorů. Na architektuře Fermi mohou být různé kernely téhož CUDA obsahu vykonávány společně. Kernely z různých aplikačních obsahů mohou nadále běžet sekvenčně, ale i ty pochopitelně těží z rychlejšího přepínání obsahu.