Welcome to the GPU assignment of 5kk73 Embedded Computer Architecture! The purpose of this assignment is to get familiar with the modern GPU architecture and its programming model. Considering the availability of hardware and documentation, the NVIDIA GPU and the CUDA language will be supported in this assignment.

If you have the latest TU/e student notebook with an ATI GPU, you can choose to do the assignment using the ATI GPU and the OpenCL language. However, we can not provide supporting materials and code samples for ATI GPU and OpenCL language. You are on your own to set up the ATI Stream SDK environment on your machine and to study the OpenCL code samples. In this case, you have to look for resources outside this website. In the learning materials page, there are a few pointers to the ATI GPU and the OpenCL language. If you find it difficult to go through these procedures on your own, it is recommended to use the server with NVIDIA GPU.

You can get an account at the secretary's office (PT 9.24) to use the CUDA PC we provide . The user name starts with "5kk73gpu". Make sure you get the right one!

Important: Please frequently backup your data on the CUDA PC to your own machine. We do not make any back up of the hard disk.

If you are new to CUDA, go to preparation page and see how to get started.

Some learning materials are available here. After learning these materials, you should understand the essentials of GPU programming using CUDA and be able to write some GPU programs.

When porting the serial code to GPU, you may find that the performance is not as good as you expected. That's because the architecture and programming model of the GPU is very different from common CPU and it requires extra effort to write a good GPU program. The example page contains examples that show you several important optimization techniques for GPU programming. Please read it carefully.

  • (2010-11-22) The deadline for this assignment is extended to Dec. 20, 2010.
  • (2010-11-22) The system on the CUDA PC has been upgraded and now you can run the CUDA visual profiler, which is a useful tool for analyzing you GPU kernels. The path of the profiler is /usr/local/cuda/computeprof/bin/computeprof
  • (2010-11-16) Upload a "" package to the assignment page. It contains pure C/C++ code. It works for both Windows and Linux. This package is handy for people who want to work on ATI GPU and OpenCL.
  • (2010-11-16) Codes and Makefile in the "" package in the assignment page are modified for computability with Visual C++. A visual studio project file is also added. If you are working only on Linux, and have no plan to port your code to Windows, you can stick to the old package. Otherwise it is recommended to write your code based on the new "" package.
  • (2010-11-15) Add visual studio project file to the "" package in the example page.

Guidelines for the assignment

This assignment is an individal assignment, 
  1. Set up the CUDA environment, and try some examples to get familiar with the programming model.
  2. Learn the CUDA learning materials carefully and read the example page, and try it yourself to understand how to write an efficient GPU application.
  3. Finish the assignment on the  assignment page, and hand in a small report.
The deadline for this assignment is Dec 13.

If you have any question, please feel free to contact Dongrui She, at PT 9.19, email: d.she _at_