What would you do with an XDK or XMP-64?

XCore Project reviews, ideas, videos and proposals.
User avatar
jason
XCore Expert
Posts: 577
Joined: Tue Sep 08, 2009 5:15 pm

What would you do with an XDK or XMP-64?

Post by jason »

I am interested to find out, if given the chance, what people here would make with one of XMOS's XDK's or XMP-64's! Go wild! Share your thoughts with us.

For those of you who do not know what these kits are, check out these links:

XDK

XMP-64
User avatar
Berni
Respected Member
Posts: 363
Joined: Thu Dec 10, 2009 10:17 pm

Post by Berni »

Well already in another post i had the idea of rendering a simple 3D scene in real time on it or draw those beutiful looking fractal images (google chaoscope) and use one of the ethernet ports on it to host a website and display it on it. What would be totally sweet is if it would raytrace render a simple scene.

In my opinion it would be a killer program to have it run out of the box to wow the user when he first powers it on.
User avatar
jason
XCore Expert
Posts: 577
Joined: Tue Sep 08, 2009 5:15 pm

Post by jason »

That would indeed be cool, and you could split all the chunks to process over all the cores, which would be nice. Certainly would make for a great demo as you said!
User avatar
Juhizo
Member
Posts: 11
Joined: Thu Dec 10, 2009 10:16 pm
Location: Finland

Post by Juhizo »

Berni wrote:Well already in another post i had the idea of rendering a simple 3D scene in real time on it or draw those beutiful looking fractal images (google chaoscope) and use one of the ethernet ports on it to host a website and display it on it. What would be totally sweet is if it would raytrace render a simple scene.

In my opinion it would be a killer program to have it run out of the box to wow the user when he first powers it on.
I'm just same line with Berni about this. And there would be veery nice audio syntheziser, vocoders, analog style synthezisers, digital style, guitar effects chain, anything. Even speech generators, singers, voice recognition, video signal processing (effects and so on, maybe some scalers and inverse telecinetics, lots of filters and image enchancement processes), and maybe 1080p digital high speed video camera (hundrets or thousands FPS). Can't see the limit of possibilities on XMP-64 :D
Heater
Respected Member
Posts: 296
Joined: Thu Dec 10, 2009 10:33 pm

Post by Heater »

Back in the day the company I worked for was analysing Radar returns for target identification with arrays of Transputers they would have loved a stack of XMP-64 board to do the job in one tenth the space. Similarly with sonar echo analysis.
User avatar
Berni
Respected Member
Posts: 363
Joined: Thu Dec 10, 2009 10:17 pm

Post by Berni »

You could already so some nice audio processing on one 4 core device. Oh and that sonar is a great possible commercial application for this.

The demo it ships with should be so that its very easy to get running. I liked the webserver demo that comes on the XC-2 out of the box as you simply plugged in power and ethernet, then just fired up your browser and your in. Doing the same thing on this XMP-64 would be nice since it has ethernet on it.

Oh and raytrace rendering is easily distributed over a lot of threads, because in raytrace its the number of pixels that determines the cpu load not so much the polygon count as in the traditional 3D rendering methods.(But you need enough memory to store all the polygons) So you could just split the whole picture in to small sqares and have each thread work on its own square.So then each thread is rendering a image just a few pixels in size so it should take the thread a very short time to finish.Displaying a realtime rendered raytrace image at like 25fps on the website hosted on it would be like omfg amazing. I see it as pretty possible considering you have massive cpu power on it. While raytrace rendering is quite a difficult job for PCs.
Heater
Respected Member
Posts: 296
Joined: Thu Dec 10, 2009 10:33 pm

Post by Heater »

Berni: I'm not so familiar with ray tracing but doesn't following the multiple reflections of a single ray require info on all the surfaces in the scene to be available to the processor doing it?

Whilst we have many processors following many rays in parallel sharing all the scene data between them all may be tricky.

Or is there something about ray tracing I am unaware of?
User avatar
Berni
Respected Member
Posts: 363
Joined: Thu Dec 10, 2009 10:17 pm

Post by Berni »

Yes that is why i talked about memory being important in raytraceing. The scene would have to be limited to about 40KB to fit in to each of the cores or to about 160KB if you get the 4 cores to share ram.

Still 40KB of ram for polygons still means like a few thousand polygons and thats the equivalent of a old 3D PC game.So you could still make something impressive with it, but if we want to render realy big scenes theres still the traditional 3D rendering method of calculating each polygon on its own. You coudl also distribute that by making each thread crunch its own group of polygons.But what would be harder is to distribute is the polygon fill step.Texture filling might be a problem because lots of ram is needed for that but i guess you could get it to fill small 32x32 8bit textures.Thats about as far you would probably want to go.There are still a lot of extra steps you can do to inprove graphics like bumpmaps, antialisaing,postprocessing (bloom and such).

Dose the XMP-64 have a large flash chip or similar on it? Since it would help a lot if you get to steps after polygon fill.

Still i think you could render a few 100 polygon wireframe scene on a single 4 core chip without too much hassle. Its the later steps that are harder.
User avatar
jason
XCore Expert
Posts: 577
Joined: Tue Sep 08, 2009 5:15 pm

Post by jason »

This is really interesting to read. As most people have pointed out it would seem the memory is the limiting factor here. Forgive me for asking (although I work at XMOS I am not involved in designing hardware/making apps), what is the issue with adding external memory to the processor? Or is everything too slow for this?

I feel a new group coming on!
User avatar
Berni
Respected Member
Posts: 363
Joined: Thu Dec 10, 2009 10:17 pm

Post by Berni »

Well yeah main problem is speed with external memory.The chips don't have a external memory bus.So so write read from external memory you need to toggle pins in your program to interface the memory chip properly. So you cant just define a variable in your program and have it in external ram. Alto having a external RAM chip can still be very useful since you could have one thread fetching the data from it while the other thread is processing that data. So external memory is great for temporary storage of very large piles of data but the chip can not run the program from it and it can not use it as its own ram to store variables.For 3D rendering such a external ram chip would be very useful for storing 3D models and possibly textures.

Meaby a external memory bus on a xmos could be very useful to solve its RAM size problem.But you would need 4 of them in a 4 core chip and that would mean way too many pins for it, unless they come up with a way for the 4 cores to share one big memory bus(making the core wait a cycle if another core is using it it)

Well all the possible uses for xmos chips have yet to be discovered.