PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Vertex und Pixel Shader 2.0 2.x und 3.0 auf cpus, wie habe ich das zu verstehen?


Gast
2003-10-20, 18:44:21
Starting with DirectX 9, multiple processors are supported on AMD platforms! This is a feature
that only gets enabled when the shader vertex virtual machine (VVM) detects more than 1
processor present in the system. It is worth mentioning that SMP and splitting batches involves
a certain amount of overhead and the VVM does not bother utilizing the second processor
unless a certain threshold of work is reached in the batch passed down to it. The threshold is
measured as a function of the size of the individual vertices and the number of vertices in the
batch. When that threshold is exceeded, the batch is split and each sub-batch is sent to aseparate processor. AMD has found that given the typical vertex size, the average number of
minimum vertices needed to take advantage of the second processor is somewhere around 700.
This is another example of why it is good to batch up vertices into a single batch, because
maybe five little batches will not take advantage of the second processor, but one large batch
will.

Wie kann man die 64 bit erweiterung von AMD dazu übereden es auch als uni protz zu berechnen?

Demirug
2003-10-20, 19:06:54
Das hat nichts mit der 64 Bit fähigkeit der neuen AMD prozessoren zu tun. Es geht darum das bisher auch in Dualprozessorsystemen nur gleichzeitig ein Prozessor Vertexshader berechnet. Das ist aber auch nur releavant wenn man die CPU und nicht die GPU dafür benutzt.

tb
2003-10-20, 19:12:24
Also erstmal hat die VVM nix mit 64 Bit zu tun. Es geht hier lediglich um AMD Systeme mit mehreren CPU's. Hier ist auch die Erklärung warum:


Starting with DirectX 9, multiple processors are supported on AMD platforms! This is a feature
that only gets enabled when the shader vertex virtual machine (VVM) detects more than 1
processor present in the system. It is worth mentioning that SMP and splitting batches involves
a certain amount of overhead and the VVM does not bother utilizing the second processor
unless a certain threshold of work is reached in the batch passed down to it. The threshold is
measured as a function of the size of the individual vertices and the number of vertices in the
batch. When that threshold is exceeded, the batch is split and each sub-batch is sent to a separate processor.

Ob diese dieses Feature sinnvoll ist, bleibt zu bezweifeln:

Finally, the performance of software shaders should be important to the shader developer.
Many mid to low range computer solutions have “value” video cards installed in them, and some
of those do not support hardware transformation and lighting. For instance, the GeForce 4 MX
uses software transformation and lighting. Integrated video in unified memory architecture (UMA)
systems may also use software transform and lighting to keep costs down. Also, if a computer
user were to upgrade their processor and keep their video card, it may be that the game will run
faster with the shader executing on the new processor than on the old video card.

Wer hat schon ein Multi-CPU System mit ner GeForce MX!? Es gibt sicher Härtefälle, aber etwas ausgewogen sollte das System schon sein. Die paar Admins, die auf nem Datenbankserver zocken, möchte ich sehen ;)


Nun zu deiner Frage, umgehen kannst du diese Erkennung sicher nur indem du einen modifizierten CPU Treiber für Windows schreibts...

Thomas

Gast
2003-10-22, 13:16:17
Optimizing DirectX 9 Shaders
for
Software Vertex Processing
July 2003


Habt Ihr euch das AMD PDF schonmal angeschaut?

aths
2003-10-22, 13:53:23
Dafür würde ich mir erst die Zeit nehmen, wenn es einen Grund gibt, anzunehmen, dass sich da mehr hinter verbirgt als das Aufspringen auf einen Marketing-Zug.

Gast
2003-10-22, 14:08:20
Use the partial precision instructions for lighting calculations instead of the
full precision instructions.
DirectX provides partial precision exp and log instructions. As defined by the specification, the
expp and logp instructions only require 10-bits of precision instead of 21-bits. This saves a
significant amount of cycles in the software implementations (refer to chart below). If the result
of the instruction is being used to calculate lighting, 10-bits of precision is typically enough. The
naked eye will have a hard time trying to distinguish the difference, especially for fast,
dynamically changing scenes. When compiling shaders with high-level languages, such as
HLSL or Cg, remember that the compilers usually default to full precision instructions. Each
compiler has a way to force itself to generate partial precision instructions either through
command line parameters or individual flags (refer to the documentation included with the
compiler on usage).

Das Fand ich merkwürdig

Be aware that processor hardware does not support 16-bit floating point
numbers natively!
DirectX 9 has introduced a few new data type formats to help developers specify to the DirectX
runtime what type of data they are passing in. These new formats include the float16 data types. This new data type was introduced to help graphics card vendors pass data along the
AGP bus to the card and to reduce register pressure inside the card. A 16-bit float is half the
size of a 32-bit float, so twice the amount of data is available within the hardware registers and it
can dramatically reduce the size of the batch that is being passed to the card, thereby speeding
up AGP transfers. Texture coordinates are usually specified with a 32 bit floating point value
which is overkill for most applications as 16 bits usually provides all the resolution that one
needs. For a video card, minimizing used register space and AGP performance is very
important, but the processor has different concerns.
Modern processors do not have native support for 16 bit floating point numbers, they can only
handle 32 bit floats (or 64 bit doubles). When the shader VVM gets passed a batch containing
16 bit floating point numbers, it has to expand the data to 32 bits before it can process them.
This is not a simple process, and is extra computation that would not otherwise need to be done
for software implementations. This automatic conversion of 16 bit to 32 bit floats nullifies any
register savings the developer gets inside of the VVM, and software implementations do not
care about AGP performance because it gets the data from system memory. The software
VVM would much rather have the bigger batch sizes than the shortened bits, because it will
have to expand the floats back into the original 32 bits to process them anyway.

Und damit komme ich auch nicht ganz zurecht Texture coordinates are usually specified with a 32 bit floating point value es geht mir dabei um die anforderungen die direct x9 minimal und maximal fordert

tb
2003-10-22, 21:56:37
Original geschrieben von Gast
Use the partial precision instructions for lighting calculations instead of the
full precision instructions.
DirectX provides partial precision exp and log instructions. As defined by the specification, the
expp and logp instructions only require 10-bits of precision instead of 21-bits. This saves a
significant amount of cycles in the software implementations (refer to chart below). If the result
of the instruction is being used to calculate lighting, 10-bits of precision is typically enough. The
naked eye will have a hard time trying to distinguish the difference, especially for fast,
dynamically changing scenes. When compiling shaders with high-level languages, such as
HLSL or Cg, remember that the compilers usually default to full precision instructions. Each
compiler has a way to force itself to generate partial precision instructions either through
command line parameters or individual flags (refer to the documentation included with the
compiler on usage).

Das Fand ich merkwürdig

Be aware that processor hardware does not support 16-bit floating point
numbers natively!
DirectX 9 has introduced a few new data type formats to help developers specify to the DirectX
runtime what type of data they are passing in. These new formats include the float16 data types. This new data type was introduced to help graphics card vendors pass data along the
AGP bus to the card and to reduce register pressure inside the card. A 16-bit float is half the
size of a 32-bit float, so twice the amount of data is available within the hardware registers and it
can dramatically reduce the size of the batch that is being passed to the card, thereby speeding
up AGP transfers. Texture coordinates are usually specified with a 32 bit floating point value
which is overkill for most applications as 16 bits usually provides all the resolution that one
needs. For a video card, minimizing used register space and AGP performance is very
important, but the processor has different concerns.
Modern processors do not have native support for 16 bit floating point numbers, they can only
handle 32 bit floats (or 64 bit doubles). When the shader VVM gets passed a batch containing
16 bit floating point numbers, it has to expand the data to 32 bits before it can process them.
This is not a simple process, and is extra computation that would not otherwise need to be done
for software implementations. This automatic conversion of 16 bit to 32 bit floats nullifies any
register savings the developer gets inside of the VVM, and software implementations do not
care about AGP performance because it gets the data from system memory. The software
VVM would much rather have the bigger batch sizes than the shortened bits, because it will
have to expand the floats back into the original 32 bits to process them anyway.

Und damit komme ich auch nicht ganz zurecht Texture coordinates are usually specified with a 32 bit floating point value es geht mir dabei um die anforderungen die direct x9 minimal und maximal fordert

http://www.microsoft.com/korea/events/directx/ppt/Direct3DCore.ppt