Project Discussion Multi-Core Architectures and Programming Oliver Reiche, Christian Schmitt, Frank Hannig Hardware/Software Co-Design, University of Erlangen-Nürnberg May 15, 2014
Administrative Trivia Tutors Oliver Reiche Christian Schmitt Sascha Roloff Frank Hannig Place Room 01.255-128 Cauerstr. 11 91058 Erlangen Department of Computer Science Date/Time for seminar meetings: by arrangement May 15, 2014 Oliver Reiche Hardware/Software Co-Design Project Discussion 1
GPU Hardware Nvidia GPUs codesigns30: GeForce 8800 GTS 512 codesigns42: GeForce GTX 285 codesigns43: GeForce GTX 285 codesigns46: Tesla C2050 (SSH only) codesigns46: Tesla K20 (SSH only) AMD GPUs codesignsxx: Radeon HD 5870 codesignsxx: Radeon HD 6970 ARM GPUs codesignsxx: 2x ARM Mali T604 (Arndaleboard/Nexus 10) May 15, 2014 Oliver Reiche Hardware/Software Co-Design Project Discussion 2
Hardware Tilera codesigns35: Tilera TILEPro64 AMD CPU codesigns48: AMD Opteron Quad-Core (48 cores) OpenMPI Cluster all machines in room 02.133-128: 20 Intel Core i7, 4 cores (8 SMT cores), 8GiB RAM Gbit network May 15, 2014 Oliver Reiche Hardware/Software Co-Design Project Discussion 3
Software Nvidia CUDA 6.0 OpenCL 1.1 AMD APP SDK 2.9 OpenCL 1.2 Android Renderscript SDK 17 (Android 4.2.2) NDK 9d Tilera MDE 3.0 MPI Threading Building Blocks 3.0 OpenMPI 1.6 gcc 4.7.2 May 15, 2014 Oliver Reiche Hardware/Software Co-Design Project Discussion 4
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 May 15, 2014 Oliver Reiche Hardware/Software Co-Design Project Discussion 5
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 May 15, 2014 Oliver Reiche Hardware/Software Co-Design Project Discussion 6
Environment Tilera set environment for Tilera module load tilera Tilera MDE / opt / tilera May 15, 2014 Oliver Reiche Hardware/Software Co-Design Project Discussion 7
Environment Renderscript Either use SDK or NDK: SDK simply Eclipse NDK link against native Renderscript (C++) add the following to your CMakeLists.txt find_package ( RenderScript REQUIRED ) file ( GLOB PROJECT_CPP *. cpp ) file ( GLOB PROJECT_RS *. rs *. fs) rs_wrap_scripts ( PROJECT_CPP ${ PROJECT_RS }) rs_definitions () rs_include_directories () rs_link_libraries (${ PROJECT_NAME } stdc ++) rs_add_executable (${ PROJECT_NAME } ${ PROJECT_CPP }) May 15, 2014 Oliver Reiche Hardware/Software Co-Design Project Discussion 8
Environment OpenMPI set environment for OpenMPI: export PATH =/ usr / lib64 / mpi / gcc / openmpi / bin :${ PATH } export LD_LIBRARY_PATH =/ lib64 :/ usr / lib64 :${ LD_LIBRARY_PATH } advice: put this into your shell s config file (e.g..bashrc) execute programs mpirun -np 32 -- machinefile mymachines myprogram A machine file will be provided. May 15, 2014 Oliver Reiche Hardware/Software Co-Design Project Discussion 9
Login Each group gets one account: SSH + (Mercurial Git Subversion) SSH one user account per group: mappraktx external login via gateway codesigns14: ssh mappraktx@codesigns14. informatik. uni - erlangen. de from there all codesignsxx servers are reachable Repositories Mail us your public SSH key and choose a repository type: Mercurial hg clone ssh://mapsvn@codesigns14.informatik.uni-erlangen.de/seminar/map14/mappraktx Git git clone ssh://mapsvn@codesigns14.informatik.uni-erlangen.de/seminar/map14/mappraktx.git Subversion svn co svn+ssh://mapsvn@codesigns14.informatik.uni-erlangen.de/seminar/map14/mappraktx May 15, 2014 Oliver Reiche Hardware/Software Co-Design Project Discussion 10
Tentative Schedule status meetings every two weeks project presentations CW 28: 07.07.14 11.07.14 CW 29: 14.07.14 18.07.14 project: up to 2 students form a group project presentation: duration: (20+5) min group presentation language: English or German, as you like May 15, 2014 Oliver Reiche Hardware/Software Co-Design Project Discussion 11
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 image compression JPEG, JPEG 2000 (complex) partial differential equation (PDE) solver May 15, 2014 Oliver Reiche Hardware/Software Co-Design Project Discussion 12
Projects Suggest own topic, e. g. neural networks, ant simulation, pattern matching computational fluid dynamics (CFD) Free choice of target architecture and programming environment: GPU / embedded GPU / Tilera / 48-core CPU / MPI cluster CUDA / OpenCL / Renderscript / TBB / pthreads / MPI Tell us your choice by Thursday next week (22 May 2014) May 15, 2014 Oliver Reiche Hardware/Software Co-Design Project Discussion 13