Welcome to CUDA: WEEK IN REVIEW, a news summary for the worldwide CUDA, GPGPU and parallel programming community.

CUDA TECH TIP: Have you ever wondered how GPU hardware assigns multi-dimensional thread indexes to physical threads and warps? Answer: The index of a thread and its thread ID relate to each other in a straightforward way. For a 1-dimensional block, they are the same; for a 2-dimensional block of size (Dx, Dy), the thread ID of a thread of index (x, y) is (x + y Dx); for a 3-dimensional block of size (Dx, Dy, Dz), the thread ID of a thread of index (x, y, z) is (x + y Dx + z Dx Dy). See example below.

CUDA SPOTLIGHT

"GPUs provide a way for complex visualization and analysis tasks to be performed quickly and with easily-attainable hardware," says Supratik. "This translates into faster and more readily-available diagnostic tools which allow doctors to spend more time on patient care." Read our interview here.

CUDA NEWS

GTC 2013 Call for Submissions is Open!The upcoming GPU Technology Conference (GTC 2013) will be better than ever, showcasing GPU technology innovations across a range of fields. NVIDIA is now soliciting submissions in four categories: GPU Computing; Cloud Computing; Computer Graphics; Game Development. Submit your ideas here. We look forward to seeing you in March.

NVIDIA Quadro K5000 for Mac
Based on the Kepler architecture, the new Quadro K5000 for Mac is the most powerful professional-class GPU ever for Macintosh designers and digital content creators. Key features include Cinema 4K display support (4096x2160 resolution) and a new display engine that can drive up to four displays simultaneously. See: http://bit.ly/U0www8

MATLAB Adds GPU Support for Additional Toolboxes
MATLAB R2012b provides new GPU computing capabilities for a number of toolboxes, including Signal Processing Toolbox; Phased Array System Toolbox; Communications System Toolbox; and Neural Network Toolbox. More GPU-enabled MATLAB functions and performance improvements have been added to Parallel Computing Toolbox.
• More info on GPU computing in MATLAB
• Desktop Engineering article on GPU computing in MATLAB

CUDA TECH TIP EXAMPLE

Question: For a 3-dimensional thread block of size (5, 4, 3), how are the threads assigned to warps on a device with a compute capability of 2.x?Answer: First map the thread index to a thread ID, a single integer. In this case, for thread index (x, y, z): threadID = x + (y * 5) + (z * 5 * 4). This will give us threadIDs in the range {0, 1, …, 59}. Since a warp consists of 32 threads, and we have 60 threads total, two warps will be needed:warp0 = threadIDs {0,1,…,31}warp1 = threadIDs {32,33,…,59}