PCIexpress er problemet

10 okt. 2009
Tags: Computer

For å avklare om PCIe hastigheten er korrelert med ytelsestapet, måtte jeg finne en måte å tvinge det sekundære kortet på 4x hastighet til å rendre. Jeg prøvde først å fjerne crossfire og plugge skjermen på sekundærkortet, men det funket ikke. GPUz rapporterte fortsatt at primærkortet fikk all lasten.

Løsningen var da enkel. La bare sekundærkortet stå i. Maskinen kom seg fint opp, og grafikk-kortet stod i 4x hastighet. Jeg kjørte så opp Call of Duty4, og sannelig var ytelsen langt lavere enn med 16x!



3 tester senere med forskjellig konfigurasjon. Vi ser at crossfire legger seg midt mellom ytelsen til enkeltkortene på henholdsvis 4x og 16x. Tegnet opp for FPS de første 31 sekundene.

Delta frametime plottet opp for de første 31 bildene. "Microstutter" er klart tilstede. Interessant å se hvordan crossfire legger seg "midt mellom" de to andre oppsettene.
Rart at crossfire oppsettet får (16x+4x/2) i stedet for (16x+4x) som ville være mer naturlig. Her er rådata:

callofduty4_720p_4xAA_all-max16xPCIe
size 1.7 MiB
sha256: 80aa052214...ea83a11601

Årsaken, sett i etterkant, er at ATI nesten uten unntak bruker Alternate Frame Render metoden for å fordele arbeid mellom kortene. Da må systemet stadig vente på svakeste ledd. Jeg trodde at ATI ville bytte til en annen metode i slike tilfeller der skjermen deles inn i mange kvadrater, der mengden kvadrater belastet hver GPU kan være ulike. Flest til raskeste GPU...