PDA

View Full Version : CTM


mhouston
03-Oct-2006, 10:39
Heading off topic, so a new thread can be created at Mod's desire.

If two fragments (threads) scatter to the same location, last writer wins, just like normal threads. There is not synchronization, so it's up to the user to get this right. Performance of scatter will depend on the coherence of the writes. You will take a performance hit over a normal 1:1 write as the cache gets bypassed. (Bypassing the caches can be interesting in its own right...). Scatter also has an interesting format and modes.

Hopefully CTM will be fully public soon. It is really low-level, in fact you have access to raw ISA, so it's not for the casual programmer, but people already doing GPGPU should be pretty comfortable. But languages like Brook can ride on-top of CTM to ease the transition. It's unclear how well we can expose the more interesting parts of CTM like the memory formats and scatter, as their use takes more direct control from the programmer, but it's a start.

RacingPHT
04-Oct-2006, 03:59
Heading off topic, so a new thread can be created at Mod's desire.
If two fragments (threads) scatter to the same location, ...


Thanks :smile:
A GPU GI paper has to use stencil to select a pixel location, when building its data structure; CTM may benefit such operation.

RacingPHT
05-Oct-2006, 05:21
Sorry for late, but finally I read these(and the ATI papers):
http://www.gpgpu.org/forums/viewtopic.php?t=2996&postdays=0&postorder=asc&start=0

I think read-modify-write is even more amazing...
Also ATI said they can run DPVM and Graphics APIs simultaneity. Does it mean I use DPVM to do same graphics stuff? I dont know if the memory is visible to each other.

Jawed
14-Nov-2006, 16:20
I don't know if this document has already been notified as "public", but here it is anyway:

http://ati.amd.com/companyinfo/researcher/documents/ati_ctm_guide_beta.pdf

It's the CTM Technical Reference Manual and should provide some general architectural insight...

Jawed

Rufus
14-Nov-2006, 18:06
I don't know if this document has already been notified as "public", but here it is anyway:
Page is gone, so I guess it wasn't really public...

Anarchist4000
14-Nov-2006, 18:33
Is all the documentation on CTM just not public? They said it was officially released today but I can't find anything. I've been trying to find a SDK or some technical documentation but haven't seen a thing posted on the site other than that it was officially released.

One of those things might be really fun to have in a game server.

Also I just about died laughing when I saw this. That picture at the top is classic.
http://ati.amd.com/products/streamprocessor/index.html


Edit: If you google "CTM AMD" you can find a cached page that has the beta guide Jawed was refering to

oeLangOetan
14-Nov-2006, 23:50
http://www.yousendit.com/transfer.php?action=download&ufid=249C27BA12E39C57
=> the beta guide, it was online for a few hours they seem to have pulled it now

//edit
the final guide is now available
http://ati.amd.com/companyinfo/researcher/Documents.html

Anarchist4000
15-Nov-2006, 00:59
Thanks. Much easier to read than the cached HTML.

Any idea when they plan to actually release the documentation? I'm guessing they pulled the 'beta' documentation to update it and release a final version. They announced CTM and their Stream Processors but they don't have crap for information posted anywhere on the site that I can find.

Jawed
17-Nov-2006, 17:34
It's back! In a new version which doesn't appear to have any substantive differences (just layout and AMD identity instead of ATI)

http://www.beyond3d.com/forum/showpost.php?p=875273&postcount=14

Jawed

DemoCoder
17-Nov-2006, 23:42
I read the CTM document a few days ago, and I must say, it is not for the weak of heart. You'd actually have to be quite insane to write CTM code by hand, and it seems to me that the real use of CTM is as a target for backend of compilers.

Geo
17-Nov-2006, 23:47
I read the CTM document a few days ago, and I must say, it is not for the weak of heart. You'd actually have to be quite insane to write CTM code by hand, and it seems to me that the real use of CTM is as a target for backend of compilers.


Well, wasn't that the point of getting Close to the Metal? Tho that's my sense as well --calling all middleware. . .

Anarchist4000
18-Nov-2006, 01:00
I read the CTM document a few days ago, and I must say, it is not for the weak of heart. You'd actually have to be quite insane to write CTM code by hand, and it seems to me that the real use of CTM is as a target for backend of compilers.

Doesn't seem like it'd be that much more than writing parts of C code in assembly to optimize them. I'd imagine it was geared mainly towards running a horde of relatively simple programs a ton of times. I would definitely agree that a higher level language might be useful. Seems more likely someone would write a program in C that would just start inserting CTM code chunks into a buffer and then pass it to the GPU with any required data to be ran. Utilizing all the ALUs could be tricky.

Any idea if CTM can compile HLSL shaders or at least something really similar?

mhouston
18-Nov-2006, 02:10
Yes it can. It can take in PS3, so you can run HLSL/Cg through fxc/cgc to generate PS3 and go from there.

Rufus
19-Nov-2006, 07:03
Yes it can. It can take in PS3, so you can run HLSL/Cg through fxc/cgc to generate PS3 and go from there.
From what I understand the point of CTM and CUDA are to free developers from having to know anything about graphics, letting them program as if it was just a very-parallel CPU.

If I understand correctly the only thing available for CTM are an assembler and a PS3 compiler. So either you write native assembly, or you're still programing in a graphics language? So by using CTM you can bypass the driver giving more consistent results, but you're still inherently doing graphics, right?

mhouston
19-Nov-2006, 17:44
In a way, yes as memory is refered to as texture. Past having to do memory refererences through texture fetch calls instead of array syntax, it's similar to any other asm programming. But, you aren't submitting triangles and the like to start computation.