INF5063 - Cell Broadband Engine Resources & FAQ

 

Page for resources and frequently asked questions for the Cell machines. If you have any other questions, please send an email to inf5063@ifi.uio.no

 The following talbe gives an overview of the status of the Playstation 3 machines in the lab at Simula. Remember that you have to SSH into oslo.simula.no to access the lab-net here at Simula. Username and password has been provided to all groups:

Cell Status
Computer Status
cell-1.ndlab.net Operational
cell-2.ndlab.net Operational
cell-3.ndlab.net Operational
cell-4.ndlab.net Operational
cell-5.ndlab.net Operational
cell-6.ndlab.net Operational
cell-7.ndlab.net Operational
cell-8.ndlab.net Operational

Please note that only one person in a group may reserve a timeslot (max 4 hours) at a time! The reason for this is to allow other user access to the Cell machines as well. We have a reservation system in place for the Playstation 3 machines here at Simula:

https://booking.ndlab.net

The login to open the page is the same you use to access the Home Exams. Remember to log into the calendar with the username and password provided to your group.

 

Cell Resources

Cell Broadband Engine Programming Handbook (IBM)

Cell SPE Runtime Management Library (IBM) 

Cell Programming Primer (Sony)

C/C++ Language Extensions for Cell Broadband Engine™ Architecture (Sony)

Håvard Espeland's bookmarks on Cell related pages

 

Frequently Asked Questions

 

Q: Can I use my own PS3?

A: Yes, you can! However, you have to make sure that your code also compiles and run on the machines here at Simula.

 

Q: What software do I need if I want to run on my own PS3?

A: Here at Simula, we are running Ubuntu 9.04 Server (64-bit) with Cell SDK 3.0 (apt-get install cell-sdk).

 

Q: Linking with libraries on the SPE is not working

A: Try adding the library after the source files on the command line, e.g. spu-gcc test.c -lm -o spu-test

 

Q: How do I debug bus errors?

A: Try wrapping your DMA requests to see the addresses. E.g.:

#define spu_mfcdma32(ls, l, sz, tag, cmd) { \
    printf("spu_mfcdma32(%p, %x, %d, %d, %d) -- Line: %d\n", ls, l, sz, tag, cmd, __LINE__); \
    spu_mfcdma32(ls, l, sz, tag, cmd); \
}

#define spu_mfcdma64(ls, h, l, sz, tag, cmd) { \
    printf("spu_mfcdma64(%p, %x, %x, %d, %d, %d) -- Line: %d\n", ls, h, l, sz, tag, cmd, __LINE__); \
    spu_mfcdma64(ls, h, l, sz, tag, cmd); \
}

 

Q: Do we have to support all kinds of resoultions for the MJPEG-encoder?

A: No, your encoder only need to support resolutions that can be divided by eight (8). 

 

Q: How do I watch the output movie produced by the encoder?

A: All PS3s and GPUs used in this course share a common home directory mount. Your home directory is also available on oslo.ndlab.net, and the easiest way is to use scp to copy the output video from oslo to your local machine. It can then be viewed in mplayer, vlc, or some other player.

 

Q: Can we copy/paste a fast DCT implementation optimized for SPEs we found on the Internet into our code?

A: No, you may not. However, there is nothing stopping you from implementing a different algorithm than what is used in the precode. Fast DCT algorithms is a research topic, and most papers on the subject are for the mathematically minded or hardware designers. A good introduction is the book JPEG: Still Image Data Compression Standard which explains some of the algorithms available, and a preview can be found on Google Books. An interesting paper on JPEG architecture can be found here, and a paper on pipelined DCT can be found here (note that there is a typo in step 1 of the algorithm, should be: b2 = a3 - a4).