Multi-core Architectures and Programming (Seminar)

Oliver Reiche, Sascha Roloff, Alexandru Tanase, Frank Hannig University of Erlangen-Nuremberg, Chair for Hardware/Software Co-Design

Administrative Trivia

● Tutors: ● Oliver Reiche ● Sascha Roloff ● Alexandru Tanase ● Frank Hannig

● Place: Room 02.133-128 Department of Computer Science Cauerstr. 11 91058 Erlangen

● Date/Time for seminar meetings: by arrangement

MAP Seminar | Roloff | FAU 2 GPU Hardware

GPU ● codesigns30 GeForce 8800 GTS 512 ● codesigns42: GeForce GTX 285 ● codesigns43 GeForce GTX 285 ● codesigns46: 2x Tesla C2050 (ssh only)

● AMD GPU ● codesigns44: 1x AMD HD 6970 + 1x AMD Radeon HD 5870

● ARM GPU ● codesignsXX: 1x Arndaleboard (ARM Mali T604 GPU) ● codesignsXX: 1x Arndaleboard (ARM Mali T604 GPU)

MAP Seminar | Roloff | FAU 3 Hardware

● Tilera ● codesigns35: 1x Tilera TILEPro64

● PLAYSTATION 3 ● codesigni187: PS3 (Cell processor) ● codesigni188: PS3 (Cell processor)

● AMD CPU ● codesigns48: AMD Opteron Quad-Core (48 cores)

MAP Seminar | Roloff | FAU 4 Software

● NVIDIA CUDA 5.0 ● OpenCL 1.1

● AMD APP SDK 2.8 ● OpenCL 1.2

● Android Renderscript ● SDK 17 (Android 4.2.2) ● NDK 8e

● Cell SDK 3.1 ● OpenCL 1.1

● Tilera MDE 3.0 ● Threading Building Blocks 3.0

MAP Seminar | Roloff | FAU 5 Environment CUDA

● Set environment for CUDA ● module load cuda ● CUDA SDK (/opt/cuda/sdk) ● Examples (sources) in /opt/cuda/sdk/C/src ● Binaries in /opt/cuda/sdk/C/bin/linux/release ● Link against CUDA SDK ● Add the following to your Makefile:

# set directory for common.mk CUDA_SDK_PATH ?= /opt/cuda/sdk ROOTDIR := $(CUDA_SDK_PATH)/C/src ROOTBINDIR := bin ROOTOBJDIR := obj include $(CUDA_SDK_PATH)/C/common/common.mk tidy clobber clean: @rm -rf bin obj

MAP Seminar | Roloff | FAU 6 Environment OpenCL

● Set environment for OpenCL on NVIDIA GPUs ● module load cuda ● CUDA SDK (/opt/cuda/sdk) ● Examples (sources) in /opt/cuda/sdk/OpenCL/src ● Binaries in /opt/cuda/sdk/OpenCL/bin/linux/release ● Link against CUDA SDK ● Add the following to your Makefile:

# set directory for common.mk CUDA_SDK_PATH ?= /opt/cuda/sdk ROOTDIR := $(CUDA_SDK_PATH) ROOTBINDIR := bin ROOTOBJDIR := obj include $(CUDA_SDK_PATH)/OpenCL/common/common_opencl.mk tidy clobber clean: @rm -rf bin obj

MAP Seminar | Roloff | FAU 7 Environment Tilera

● Set environment for Tilera ● module load tilera

● Tilera MDE: ● /opt/tilera

MAP Seminar | Roloff | FAU 8 Login

● Each group gets one account (ssh + svn)

● External login only via gateway (codesigns14)

● For svn account, mail me your ssh pubkey

MAP Seminar | Roloff | FAU 9 Tentative Schedule

● Status meetings every two weeks

● Project presentations ● CW 29: 15.07.13 – 19.07.13 ● CW 30: 22.07.13 – 26.07.13

● Project: up to 2 students form a group

● Project presentation: ● Duration: (20+5) min ● Group presentation

● Language: English or German, as you like

MAP Seminar | Roloff | FAU 10 Available Topics Projects

● Each group selects and implements one application: ● Mathematical problems ● N-Queens ● Image processing ● Harris corner detection ● Optical flow calculation ● Viola Jones object detection ● Bilateral grid filter ● Local Laplacian ● ● JPEG, JPEG 2000 (complex) ● Partial differential equation (PDE) solver

● Suggest own topic, e.g. ● Neural networks, Ant simulation, Pattern matching ● Computational fluid dynamics (CFD)

MAP Seminar | Roloff | FAU 12 Projects

● Free choice of target architecture and programming environment: ● GPU / embedded GPU / Tilera / Cell B.E. / 48-core CPU ● CUDA / OpenCL / Renderscript / TBB / pthreads / Web programming

● Tell us your choice until Wednesday next week (29 May 2013)

MAP Seminar | Roloff | FAU 13