gpu_contestx - Amano Lab

reelingripehalfSoftware and s/w Development

Dec 14, 2013 (3 years and 8 months ago)

155 views

2012/06/22

Email:
nomura@am.ics.keio.ac.jp

Contents


GPU (Graphic Processing Unit)


CUDA Programming


Target: Clustering with
Kmeans


How to use toolkit1.0


Towards the fastest program



GPU
(Graphic Processing Unit)


Multicore processor


Several
handreds

cores


SP: Core in GPU


SM: Composed of SPs


High memory bandwidth

GPU

SM

Global Memory

SM

SM

SM

SP

SP

240

SM

30

(Each of them has 8 SP)

Memory

Bandwidth

141.7 GB/s

SP

SP

SP

SP

SP

SP

SP

SP: Streaming Processor

SM: Streaming
MultiProcessor



Table: Specification of GeForce280

Flow of CUDA Program

1.
Allocate GPU memory


cudaMalloc
()

2.
Transfer input data


cudaMemcpy
()

3.
Execute kernel

4.
Transfer result data

5.
Free GPU memory


cudaFree
()

Host

Device (GPU)

SP

CPU

Main
Memory

Global Memory

SP

Kernel

Kernel

SP

Kernel



input 1

input 2





input

N

Array





Array

input 1

input 2

input N

Data Transfer

output 1

output 2

output N

output 1

output 2

output N

Data Transfer

Target application

clustering
with
Kmeans


A famous method for clustering



A program with
kmeans

method for a
host processor is given. Modify it so that
it works on GPU as fast as possible.


GeForce Tesla (GTX280) in Amano Lab.
can be used for this contest.

Kmeans

method(1/5)

Initial state


Nodes in a certain color is distributed
randomly.

(Here, 100nodes with 5 colors

are
shown)

STEP1:

Centre of gravity is computed for


each colored node set.

(X in the figure is each centre)

Reference URL:

http://d.hatena.ne.jp/nitoyon/20090409/kmeans_visualise

Kmeans

method(2/5)

STEP2

The color of each node is
changed into that of the nearest
centre.

STEP1:

Again, the centre of gravity is
computer in node set with the
same color.

Kmeans

method(3/5)

STEP2:

Again, the color of each node is
changed into that of the nearest
centre.

STEP1:

Again, the centre of gravity is
computer in node set with the
same color.



Kmeans

method(4/5)

STEP2:

Again, the color of each node is
changed into that of the nearest
centre.



STEP1:

Again, the centre of gravity is
computer in node set with the
same color.



Kmeans

method(5/5)

STEP2:

Again and again, the color of
each node is changed into that of
the nearest centre.

Terminate Condition


The color of all nodes are the
same as the color of the centre,
thus, there is no need to change
the color.


Terminate.

How to start


ssh


131.113.69.98 for login.


Your account has been available. If you have not
received mail about account, please send mail to
nomura@am.ics.keio.ac.jp

.


Download
kmeans.tar.gz

and
ungip
.


There are useful sample codes in
kmeans
.


Mission
1:
Make GPU version based on CPU
version.


Describe
gpuKMeans

in kmeans.cu

cpuKMeans

in main.cu is a CPU version for reference.


Mission
2:
Optimize the CPU code so that it
runs as fast as possible.

Toolkit1.0


kmeans.cu


To describe K
-
means program for GPU


Please modify this file


main.cu


To read input data, describe CPU program


Modification forbidden


check.c


To visualize output data by
OpenCV


gen.c


T
o generate input data


Makefile


data/


Input data


result/


Output data

How to use Toolkit1.0


$ make


Compile


$ make
gpu


Execute GPU Program


$ make
cpu


Execute CPU Program


$ ./gen SEED (SEED = 0,1,2,…)


Generate input data

Sample Code


Vector addition program for GPU


$ make : Compile


$ ./main : Program run


Point


Memory allocation on GPU


cudaMalloc
(),
cudaFree
()


Data transfer between CPU and GPU


cudaMemcpy
()


Format of GPU kernel function


Towards the fastest program


Minimum

requirement


Implementation K
-
means program on GPU


Parallelizing STEP1 or STEP2

in K
-
means


How to optimize program


Parallelizing both of STEP1 and STEP2


S
hared memory, Constant memory


Coalesced Memory Access

etc


Web Site


NVIDIA GPU
Computing
Document:
http
://developer.nvidia.com/nvidia
-
gpu
-
computing
-
documentation


Fixstars

CUDA
Infromation

Site:
http://
gpu.fixstars.com
/
index.php
/



Announcement:


If you have not an account mail to
nomura
@am.ics.keio.ac.jp



Your name should be included in the mail.


Deadline

㜯㈲

⡆物(

㈴㨰2


Copy follows in ~/
comparch


Source code and simple report


Please check the web site. Additional
information will be on it.


If you have any question about the contest,
please send mail to:

nomura@am.ics.keio.ac.jp