TOTO HARYANTO

Sedikit goresan menebar manfaat …..

Archive for the 'Ilmu Komputer' Category

Sekelumit tentang computer science

GPU : Antara Games dan Kebutuhan Komputasi

Posted by totoharyanto on 30th April 2018

GPU adalah singkatan dari Graphic Processing Unit tentu sekarang sudah bukan menjadi barang yang asing lagi terutama bagi para penggemar games. Kehadiran GPU yang dimotori oleh beberapa vendor ternama sekelas NVIDIA atau AMD menjadikan para pencinta games semakin betah di depan komputernya. Mengapa tidak ? Dengan perkembangan kualitas resolusi yang tinggi, para pencinta game dimanjakan dan larut dengan permainannya.

Di sisi vendor, baik NVIDIA maupun AMD misalnya terus melakukan pengembangan produknya dengan berbagai keunggulan yang ditawarkan. Tapi di sini saya tidak akan banyak membicarakan produk-produk terbaru mereka. Silahkan bisa site sendiri di official web-nya ya (http://www.nvidia.com/) atau (https://www.amd.com).

Namun demikian, yang akan sedikit ceritakan adalah bahwa GPU kalau dilihat dari namanya, sebenarnya tidak hanya untuk kebutuhan games atau rendering saja, tetapi dapat digunakan untuk melakukan pemrosesan atau komputasi.

Arsitektur GPU

Untuk memudahkan pemahaman, sekarang kita lihat bagaimana arsitektur GPU. Perhatikan gambar di bawah ini:

gpu_arch

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

(sumber : https://www.nvidia.com/content/dam/en-zz/Solutions/Data-Center/documents/NVIDIA-Kepler-GK110-GK210-Architecture-Whitepaper.pdf)

Jika dibandingkn antara CPU dan GPU. Kira-kira ilustrasi mudahnya adalah sebagai berikut:

gpu-cpu

 

 

 

 

 

 

 

 

 

 

 

Secara umum, GPU memiliki Single Multiprocessor (SM). Setiap SM terdiri atas ratusan cores. secara logic, GPU dapat dibagi menjadi Grid, Blok dan thread. Satu Grid bisa terdiri atas beberapa Blok. Di dalam blok terdapat thread yang masing-masing masing memiliki Id untuk pendanda suatu proses. Perhatikan ilustrasi di bawah ini.

blok-grid-thread

 

 

 

 

 

 

 

 

 

 

Proses dalam GPU diidentifikasi dengan Id thread. Oleh karena itu, biasanya pemrograman di dalam GPU harus didefinisikan Id dari prosessnya seperti apa sehingga program kita dapat berjalan secara parallel.

(Bersambung …………………………)


Posted in GPU | No Comments »

Paper dengan author banyak

Posted by totoharyanto on 22nd February 2018

Membaca paper dengan penulis 5 s. 10 orang masih sering. Tetapi membaca paper dengan penulis yang berjumlah lebih dari 70 orang adalah luar biasa..

Author


Posted in Ilmu Komputer | 2 Comments »

Cuda Programming Tutorial : First

Posted by totoharyanto on 16th February 2018


Posted in Bahasa Pemrograman | No Comments »

Generate id of thread on GPU

Posted by totoharyanto on 16th February 2018

#include <stdio.h>
 #include <cuda.h>

#define LENGTH_OF_ARRAY 500
 #define THREADS 5
 #define BLOCKS 100
 // MAKE KERNEL FUNCTION

__global__ void print_real(int *a){
 int idx = blockIdx.x * blockDim.x + threadIdx.x;
 a[idx] = idx;
 }

__global__ void print_constant(int *a){
 int idx = blockIdx.x * blockDim.x + threadIdx.x;
 a[idx] = 7;
 }

__global__ void print_blockid(int *a){
 int idx = blockIdx.x * blockDim.x + threadIdx.x;
 a[idx] = blockIdx.x;
 }

__global__ void print_threadid(int *a){
 int idx = blockIdx.x * blockDim.x + threadIdx.x;
 a[idx] = threadIdx.x;
 }

int main()
 {
 int size = LENGTH_OF_ARRAY*sizeof(int); //DEFINE
 int i=0;
 // printf("Print constant\n");
 // printf("Print blockid\n");
 printf("Print threadid\n");
 int *a_h, *a_d;
 //memory allocation on host
 a_h = (int*)malloc(size);
 //memory allocation on device
 cudaMalloc((void**)&a_d, size);
 //call the kernel

// print_constant<<<BLOCKS,THREADS>>>(a_d);
 // print_blockid<<<BLOCKS,THREADS>>>(a_d);
 // print_threadid<<<BLOCKS,THREADS>>>(a_d);
 print_real<<<BLOCKS,THREADS>>>(a_d);

//copy from devie to host
 cudaMemcpy(a_h,a_d,size,cudaMemcpyDeviceToHost);

//print from host
 for(i=0;i<LENGTH_OF_ARRAY;i++)
 printf("%d ", a_h[i]);
 printf("\n\n");

cudaFree(a_d);

}

Posted in Bahasa Pemrograman | No Comments »