Monthly Archives: November 2008

CUDA @wscad2008

A few weeks ago, Rodolfo Azevedo and I presented a workshop entitled: High Performance Computing with CUDA. The workshop happened at WSCAD 2008 (Workshop em Sistemas Computacionais de Alto Desempenho), and was hosted at Campo Grande, MS, Brasil. WSCAD is an event in pt_BR, where people discuss in forums about Computer Architecture, High Performance Computing and Distributed Systems.

CUDA is the architecture and programming model created by NVIDIA and can be used in the 8 series, Tesla, Quadro and newer boards. CUDA is the NVIDIA version of “parallel programming language to rule them all”.

The workshop was divided in 2 days (1h30m each day) and covered the following topics:

  • CUDA requirements and install process
  • NVIDIA Serie 8 Architecture (Stream Processors, Multiprocessors, Memory Hierarchy, Internal Thread Management)
  • Programming Model (C extensions, Built-in variables, Runtime API, Driver API)
  • Code examples (Device probe, Event management, Math operations – matrix multiplication, …)

Several code examples were presented and some of them compiled and executed on-the-fly. We were provided with a dual GFORCE 8800 GTX – G80, so there was a way to do the demonstrations.

The videos, notes and slides are available here. There is also a 42 page tutorial.

mips and llvm 2.4

LLVM 2.4 is now available, and like every very active project, a bunch of new stuff has arrived (see the release notes for a detailed description). The same is true for the Mips back-end. I talked about mips+llvm in old posts, they highlighted some of the ABI issues both from EABI and O32 stuff. A lot has changed since those posts, and here is a summary of what has been accomplished:

  • Little endian support
  • EABI is fully implemented
  • Floating point support
  • Support for allegrex core and its intrinsics
  • Improvements to the O32 ABI.

I’m the creator and current Mips back-end mainteiner, and I implemented those feature as a Google Summer Of Code 2008 project. To a more detailed description, here is the svn commit log for the Mips back-end  –  I filtered out all commits not directly related to mips improvement). Although it has grown a lot since June, it still a experimental back-end and there is much to be done.