PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : nVidia - Verständnisfrage: ALU=Thread Processor?


Fragen-Gast
2008-08-31, 00:27:23
Hi,

Frage steht im Titel.
Aus den Unterlagen von Nvidia werde ich irgendwie nicht schlau.

Danke im Voraus

deekey777
2008-08-31, 01:06:07
Hi,

Frage steht im Titel.
Aus den Unterlagen von Nvidia werde ich irgendwie nicht schlau.

Danke im Voraus
Meinst du die aktuelle NV-Dokumentation zu CUDA?

Hoffentlich ihre ich mich nicht: Die Nomenklatur wurde etwas geändert. Jeder Pixel stellt einen Thread dar, zusammengefasst zu 32 Threads wird das "Gebilde" als Warp bezeichnet. Somit kommt pro SP ein Thread.

http://developer.download.nvidia.com/compute/cuda/2_0/docs/NVIDIA_CUDA_Programming_Guide_2.0.pdf

To manage hundreds of threads running several different programs, the multiprocessor employs a new architecture we call SIMT (single-instruction, multiple-thread). The multiprocessor maps each thread to one scalar processor core, and each scalar thread executes independently with its own instruction address and register state. The multiprocessor SIMT unit creates, manages, schedules, and executes threads in groups of 32 parallel threads called warps. (This term originates from weaving, the first parallel thread technology. A half-warp is either the first or second half of a warp.) Individual threads composing a SIMT warp start together at the same program address but are otherwise free to branch and execute independently.

Gast
2008-08-31, 01:28:20
Meinst du die aktuelle NV-Dokumentation zu CUDA?

Hoffentlich ihre ich mich nicht: Die Nomenklatur wurde etwas geändert. Jeder Pixel stellt einen Thread dar, zusammengefasst zu 32 Threads wird das "Gebilde" als Warp bezeichnet. Somit kommt pro SP ein Thread.

http://developer.download.nvidia.com/compute/cuda/2_0/docs/NVIDIA_CUDA_Programming_Guide_2.0.pdf

Scheisse, es gibt schon 2.0 X-D. Hing hier noch vor der ersten Version.
Die Definition ALU glaube ich jetzt gerallt zu haben:

ALU=Streaming Processor
Thread Processor=Shader Unit (ALU+blablabla)

Zum Pixel=Thread: Letzendlich kann jede Berechnung oder ein Teil von ihr ein Thread sein. An Pixel=Thread glaube ich aber nicht. Das würden selbst die Vollpfosten bei Nvidia nicht bringen, oder? lol
In meinem Fall geht es um CUDA, wo Pixel keine Rolle spielen.
Danke für den Link. ;)

Aquaschaf
2008-08-31, 01:58:13
ALU=Streaming Processor

ALU = Arithmetic logical unit. Das ist ein sehr breiter Begriff.

Gast
2008-08-31, 02:05:33
ALU = Arithmetic logical unit. Das ist ein sehr breiter Begriff.

Es ging nicht um die Abkürzung, sondern um die Funktion.
Da ist nichts breit; alle Funktionen bekannt. ;)

Fallacy
2008-08-31, 12:41:01
Bei CUDA gibst du selbst über den Kernel vor, was ein Thread berechnet. Threads sind dabei wiederum in Blöcke gegliedert, welche wiederum in Grids organisiert werden. Jeweils ein Block läuft auf einem Shader-Cluster, bzw. Texture Processing Cluster, wie es von NV neuerdings genannt wird.
http://ht4u.net/reviews/2008/msi_n280gtx/index2.php

Gast
2008-09-02, 22:16:22
Zum Pixel=Thread: Letzendlich kann jede Berechnung oder ein Teil von ihr ein Thread sein. An Pixel=Thread glaube ich aber nicht.

wenn pixelshading gemacht wird ist es aber so. in den einzelnen threads kann aber natürlich auch was anderes als pixel berechnet werden.

in der hardware werden immer 32 threads zu einem sogenannten warp zusammengefasst. dabei wird ein solcher warp immer für 4 takte hintereinander auf einer Vec8-einheit berechnet. nach diesen 4 takten ist der komplette warp durch und es kann wieder ein neuer warp berechnet werden, oder natürlich auch ein neuer befehl im gleichen warp. gewechselt kann dabei wie gesagt nur alle 4 takte werden, deshalb gibt es auch verschnitt wenn nicht alle 32threads/pixel was zu tun haben.

Coda
2008-09-02, 23:07:32
wenn pixelshading gemacht wird ist es aber so. in den einzelnen threads kann aber natürlich auch was anderes als pixel berechnet werden.
Es ist nicht ein Thread pro Pixel. Es sind 16 oder 32 Pixel pro Thread. Ich weiß es nicht auswendig.

Gast
2008-09-03, 20:12:05
Es ist nicht ein Thread pro Pixel. Es sind 16 oder 32 Pixel pro Thread.

laut nvidia nicht, die bezeichnen einzelne pixel als threads, 32 threads sind 1 warp.

haifisch1896
2008-09-03, 21:11:40
Auf die Gefahr hin, mich mangels Verständnis zu blamieren:

Bei 1280x800 Pixeln, die beispielsweise von einem 15.4"-LCD dargestellt werden müssen, wären das 1.024.000 Threads. Das wäre ja eine extreme Schönrechnerei, damit das Marketing was zu prahlen hat.
Die 32.000 Threads bei 32 Pixeln pro Thread erscheinen mir logischer.

Gast
2008-09-04, 13:13:12
es können sogar noch viel mehr threads/frame sein, es kann durchaus sein dass jedes pixel mehrere threads durchläuft bis es endgültig fertig ist.

natürlich sind nicht alle diese threads gleichzeitig auf dem chip unterwegs, sie kommen erst nacheinander zur ausführung. es sind aber durchaus zu jedem zeitpunkt einige tausend threads auf dem ganzen chip unterwegs, obwohl natürlich immer maximal die anzahl der streamprozessoren in berechnung sein kann. die restlichen befinden sich irgendwo auf dem chip in einem wartezustand.

das ganze ist notwendig um diverse latenzen wie beispielsweise beim textursampling oder irgendwelche speicherzugriffe zu verstecken und eine möglichst hohe auslastung der streamprozessoren zu erreichen.

die ganzen bezeichnungen wie thread, warp etc. kommen übrigens aus der CUDA-dokumentation und haben mit marketing wenig zu tun.

deekey777
2008-09-16, 16:35:49
NVIDIA's GT200: Inside a Parallel Processor (http://www.realworldtech.com/page.cfm?ArticleID=RWT090808195242)
Overview of a GT200 (http://www.realworldtech.com/page.cfm?ArticleID=RWT090808195242&p=6)
At this point, things can be a bit confusing. The CPU and GPU world have somewhat different terminology that can be slightly confusing, especially once NVIDIA or ATI’s marketing departments have been thrown into the mix. NVIDIA and ATI like to call their execution units (ALUs/FPUs) 'cores', so that they can claim to have hundreds of cores (this is complicated by the fact that NVIDIA’s 'cores' run at twice the frequency of ATI’s, making comparisons difficult). In reality, GPUs have more like tens of cores, but are able to provide more computate power by using vectors, which lower the amount of control overhead per computation. NVIDIA’s diagrams of the G80 and GT200 go a bit beyond Figure 4 and subdivide each SM into 8 Thread Processors, Streaming Processors (SP) or Shader Cores (depending on who you are talking to). However, it is clear that Stream Processors in NVIDIA’s terminology are not truly independent processor cores. Each SP has a register file (at least a portion of one) and an independent instruction pointer, but the SPs lack a complete front-end that can fetch and schedule instructions independently. In that regard, the SPs most closely correspond to an issue pipeline in a modern multi-threaded CPU.

deekey777
2008-10-01, 01:36:40
Wie es aussieht, bezeichnet auch AMD einen "5-Way-VLIW-Prozessor" als Thread-Prozessor. Ein RV670 besteht aus 4 SIMD-Engines, jede Engine besteht aus 16 Thread-Prozessoren, jeder Thread-Prozessor aus 5 Stream-Cores.

Ich lese gerade den Stream Computing User Guide, und die "Drecksäcke" haben malwieder an den Bezeichnungen rumgefummelt. Früher war ein Thread etwas, was zB aus 64 Pixeln bestand. Jetzt nennt sich das "Wavefront". Ein Wavefront ist eine Gruppe aus Threads, die parallel ausgeführt werden. Ein Wavefront des RV670 besteht aus 64 Threads, ein Wavefront des RV630 aus 32 und beim RV610 sind es 16 Threads.

Gast
2008-10-01, 14:01:33
Ich lese gerade den Stream Computing User Guide, und die "Drecksäcke" haben malwieder an den Bezeichnungen rumgefummelt. Früher war ein Thread etwas, was zB aus 64 Pixeln bestand. Jetzt nennt sich das "Wavefront". Ein Wavefront ist eine Gruppe aus Threads, die parallel ausgeführt werden. Ein Wavefront des RV670 besteht aus 64 Threads, ein Wavefront des RV630 aus 32 und beim RV610 sind es 16 Threads.

immerhin ist man damit mit NV halbwegs einer meinung, nur das die dinger dort Warps genannt werden.