Tugas RK - Open CL

download Tugas RK - Open CL

of 9

description

OpenCL

Transcript of Tugas RK - Open CL

  • 5/25/2018 Tugas RK - Open CL

    1/9

    TUGAS KELOMPOK

    REKAYASA KOMPUTASIONAL

    Disusun Oleh :

    1. Agung Dermawan 504113302. Annisa Indah Ramdhandini 504119593. Diah Intan Sari 524110134. Sonityo Danang Jaya 564118565. Tyasti Wulan Puspita 574112046.

    Yuda Aristian 57411596

    Universitas Gunadarma

    2014

  • 5/25/2018 Tugas RK - Open CL

    2/9

    Tugas Kelompok Rekayasa KomputasionalOpenCL 2

    APA ITU OpenCL?

    OpenCL (Open Computing Library)

    OpenCL (Open Computing Library) merupakan framework untuk menulis

    program yang jalankan di berbagai platform heterogen yang terdiri dari CPU, GPU, dan

    prosesor lainnya. OpenCL mencakup bahasa (berdasarkan C99) untuk menulis kernel

    (fungsi yang dijalankan pada perangkat OpenCL), ditambah API yang digunakan untuk

    mendefinisikan dan kemudian mengontrol platform.

    OpenCL menyediakan komputasi paralel menggunakan paralelisme berdasarkan

    tugas dan data berbasis. Alat ini telah diadopsi ke dalam driver kartu grafis oleh AMD /

    ATI, yang membuatnya sendiri GPGPU penawaran dicap sebagai Streaming SDK, dan

    Nvidia, yang menawarkan OpenCL sebagai pilihan yang sama dengan Arsitektur Unified

    Perangkat Compute (CUDA) dalam driver nya. OpenCLs arsitektur berbagi berbagai

    interface komputasi dengan baik CUDA dan pesaing DirectCompute Microsoft.

  • 5/25/2018 Tugas RK - Open CL

    3/9

    Tugas Kelompok Rekayasa KomputasionalOpenCL 3

    SEJARAH

    OpenCL awalnya dikembangkan olehApple Inc , yang memegangmerek daganghak, dan disempurnakan menjadi sebuah proposal awal bekerja sama dengan tim teknis

    diAMD ,IBM ,Intel , danNvidia . Apel mengajukan proposal awal ini keGrup Khronos

    . Pada tanggal 16 Juni 2008, Khronos Hitung Kelompok Kerja dibentuk dengan

    perwakilan dari CPU, GPU, tertanam-prosesor, dan perusahaan perangkat lunak.

    Kelompok ini bekerja selama lima bulan untuk menyelesaikan rincian teknis dari

    spesifikasi untuk OpenCL 1.0 sebesar 18 November 2008. Spesifikasi teknis ini telah

    diperiksa oleh anggota Khronos dan disetujui untuk rilis publik pada tanggal 8 Desember

    2008.

    OpenCL 1.0OpenCL 1.0 telah dirilis denganMac OS X Snow Leopard . Menurut siaran pers

    Apel :

    Snow Leopard lebih lanjut memperluas dukungan untuk perangkat keras

    modern dengan Open Computing Language (OpenCL), yang memungkinkan aplikasi

    keran ke gigaflops besar daya komputasi GPU sebelumnya hanya tersedia untuk

    aplikasi grafis. OpenCL didasarkan pada bahasa pemrograman C dan telah diusulkan

    sebagai standar terbuka.

    AMD telah memutuskan untuk mendukung OpenCL (danDirectX 11) bukan

    sekarang usang Dekat Logam dalam Surat kerangka Streaming . RapidMind

    mengumumkan adopsi mereka OpenCL bawah platform pengembangan untuk

    mendukung GPU dari beberapa vendor dengan satu antarmuka. Pada tanggal 9

    Desember 2008, Nvidia mengumumkan niatnya untuk menambahkan dukungan

    penuh untuk OpenCL 1.0 spesifikasi untuk perusahaan Computing Toolkit GPU. Pada

    tanggal 30 Oktober 2009, IBM merilis implementasi OpenCL pertama sebagai bagian

    darikompiler XL .

    http://translate.google.com/translate?hl=en&prev=_t&sl=en&tl=id&u=http://en.wikipedia.org/wiki/Apple_Inc.http://translate.google.com/translate?hl=en&prev=_t&sl=en&tl=id&u=http://en.wikipedia.org/wiki/Trademarkhttp://translate.google.com/translate?hl=en&prev=_t&sl=en&tl=id&u=http://en.wikipedia.org/wiki/Advanced_Micro_Deviceshttp://translate.google.com/translate?hl=en&prev=_t&sl=en&tl=id&u=http://en.wikipedia.org/wiki/IBMhttp://translate.google.com/translate?hl=en&prev=_t&sl=en&tl=id&u=http://en.wikipedia.org/wiki/Intel_Corporationhttp://translate.google.com/translate?hl=en&prev=_t&sl=en&tl=id&u=http://en.wikipedia.org/wiki/Nvidiahttp://translate.google.com/translate?hl=en&prev=_t&sl=en&tl=id&u=http://en.wikipedia.org/wiki/Khronos_Grouphttp://translate.google.com/translate?hl=en&prev=_t&sl=en&tl=id&u=http://en.wikipedia.org/wiki/Mac_OS_X_Snow_Leopardhttp://translate.google.com/translate?hl=en&prev=_t&sl=en&tl=id&u=http://en.wikipedia.org/wiki/DirectXhttp://translate.google.com/translate?hl=en&prev=_t&sl=en&tl=id&u=http://en.wikipedia.org/wiki/Close_to_Metalhttp://translate.google.com/translate?hl=en&prev=_t&sl=en&tl=id&u=http://en.wikipedia.org/wiki/AMD_FireStream%23Software_Development_Kit#Software_Development_Kithttp://translate.google.com/translate?hl=en&prev=_t&sl=en&tl=id&u=http://en.wikipedia.org/wiki/RapidMindhttp://translate.google.com/translate?hl=en&prev=_t&sl=en&tl=id&u=http://en.wikipedia.org/w/index.php%3Ftitle%3DXL_compilers%26action%3Dedit%26redlink%3D1http://translate.google.com/translate?hl=en&prev=_t&sl=en&tl=id&u=http://en.wikipedia.org/w/index.php%3Ftitle%3DXL_compilers%26action%3Dedit%26redlink%3D1http://translate.google.com/translate?hl=en&prev=_t&sl=en&tl=id&u=http://en.wikipedia.org/wiki/RapidMindhttp://translate.google.com/translate?hl=en&prev=_t&sl=en&tl=id&u=http://en.wikipedia.org/wiki/AMD_FireStream%23Software_Development_Kit#Software_Development_Kithttp://translate.google.com/translate?hl=en&prev=_t&sl=en&tl=id&u=http://en.wikipedia.org/wiki/Close_to_Metalhttp://translate.google.com/translate?hl=en&prev=_t&sl=en&tl=id&u=http://en.wikipedia.org/wiki/DirectXhttp://translate.google.com/translate?hl=en&prev=_t&sl=en&tl=id&u=http://en.wikipedia.org/wiki/Mac_OS_X_Snow_Leopardhttp://translate.google.com/translate?hl=en&prev=_t&sl=en&tl=id&u=http://en.wikipedia.org/wiki/Khronos_Grouphttp://translate.google.com/translate?hl=en&prev=_t&sl=en&tl=id&u=http://en.wikipedia.org/wiki/Nvidiahttp://translate.google.com/translate?hl=en&prev=_t&sl=en&tl=id&u=http://en.wikipedia.org/wiki/Intel_Corporationhttp://translate.google.com/translate?hl=en&prev=_t&sl=en&tl=id&u=http://en.wikipedia.org/wiki/IBMhttp://translate.google.com/translate?hl=en&prev=_t&sl=en&tl=id&u=http://en.wikipedia.org/wiki/Advanced_Micro_Deviceshttp://translate.google.com/translate?hl=en&prev=_t&sl=en&tl=id&u=http://en.wikipedia.org/wiki/Trademarkhttp://translate.google.com/translate?hl=en&prev=_t&sl=en&tl=id&u=http://en.wikipedia.org/wiki/Apple_Inc.
  • 5/25/2018 Tugas RK - Open CL

    4/9

    Tugas Kelompok Rekayasa KomputasionalOpenCL 4

    OpenCL 1.1OpenCL 1.1 disahkan oleh Khronos Group on 14 Juni 2010 dan menambahkan

    fungsionalitas yang signifikan untuk meningkatkan fleksibilitas pemrograman

    paralel, fungsionalitas, dan kinerja termasuk:

    Tipe data baru termasuk vektor 3-komponen dan format gambar tambahan; Penanganan perintah dari beberapa benang host dan pengolahan buffer di

    beberapa perangkat;

    Operasi pada daerah penyangga termasuk membaca, menulis dan menyalin dari1D, 2D, atau wilayah persegi panjang 3D;

    Peningkatan penggunaan acara untuk mendorong dan mengontrol perintaheksekusi;

    Tambahan OpenCL built-in fungsi C seperti penjepit integer, shuffle, dan salinanstrided asynchronous;

    Peningkatan interoperabilitas OpenGL melalui berbagi efisien gambar dan bufferdengan menghubungkan peristiwa OpenCL dan OpenGL.

    OpenCL 1.2Pada 15 November 2011, para Khronos Group mengumumkan spesifikasi

    OpenCL 1.2, yang menambahkan fungsionalitas yang signifikan selama versi

    sebelumnya dalam hal kinerja dan fitur untuk pemrograman paralel. Fitur yang paling

    menonjol meliputi:

    Partisi perangkat: kemampuan untuk partisi perangkat ke dalam sub-perangkatsehingga tugas kerja dapat dialokasikan untuk unit menghitung individu. Hal ini

    berguna untuk melestarikan daerah perangkat untuk mengurangi latency untuk

    tugas-tugas waktu-kritis.

    Kompilasi terpisah dan menghubungkan objek: fungsi untuk mengkompilasiOpenCL ke perpustakaan eksternal untuk dimasukkan ke program lain.

  • 5/25/2018 Tugas RK - Open CL

    5/9

    Tugas Kelompok Rekayasa KomputasionalOpenCL 5

    Peningkatan dukungan gambar: 1.2 menambahkan dukungan untuk gambar 1Ddan array gambar 1D/2D. Selanjutnya, berbagi ekstensi OpenGL sekarang

    memungkinkan untuk OpenGL 1D tekstur dan 1D/2D array tekstur yang akan

    digunakan untuk membuat gambar OpenCL.

    Built-in kernel: perangkat kustom yang mengandung fungsi yang unik spesifiksekarang terintegrasi lebih erat ke dalam kerangka OpenCL. Kernel dapat

    dipanggil untuk menggunakan aspek-aspek khusus atau non-programmable

    hardware yang mendasarinya. Contohnya termasuk video encoding / decoding

    dan prosesor sinyal digital.

    Fungsi DirectX: DX9 berbagi permukaan media yang memungkinkan untukberbagi efisien antara OpenCL dan DX9 atau DXVApermukaan media. Sama,

    untuk DX11, berbagi mulus antara OpenCL dan DX11 permukaan diaktifkan.

    Kelebihan OpenCL

    OpenCL memberikan setiap akses aplikasi ke Graphics Processing Unit untuk non-grafis komputasi.

    OpenCL memperluas kekuatan Graphics Processing Unit di luar grafis (tujuan umumkomputasi pada graphics processing unit).

    OpenCL adalah analog dengan standar industri terbuka OpenGL dan OpenAL, untukgrafis 3D dan audio komputer, masing-masing.

    http://translate.google.com/translate?hl=en&prev=_t&sl=en&tl=id&u=http://en.wikipedia.org/wiki/DXVAhttp://translate.google.com/translate?hl=en&prev=_t&sl=en&tl=id&u=http://en.wikipedia.org/wiki/DXVA
  • 5/25/2018 Tugas RK - Open CL

    6/9

    Tugas Kelompok Rekayasa KomputasionalOpenCL 6

    OpenCL dapat mempercepat perhitungan matematis paralel lebih banyak. Algoritmanya

    dapat dengan mudah diparalelkan, beberapa contohnya:

    - Fungsi akar-temuan dan optimasi;

    - Gambar penyaringan dan pengolahan;

    - Perhitungan vektor Vertex dan normal untuk model 3D;

    - Algoritma evolusioner seperti Algoritma Genetika atau Ant Colony Sistem;

    - Partikel interaksi

    - Scripting Matematika: anda dapat mengkompilasi kode dalam waktu eksekusi

    Kekurangan OpenCL

    Saat ini, alat-alat untuk debug kode OpenCL tidak sangat baik. Saat menulis kode C #

    dengan cara OpenCL, fungsi tidak mengembalikan data (void) dan menerima vektor

    floats dan ints.

    Contoh Program OpenCL

    Kita akan menghitung jumlah terbesar dari daftar berikut dengan bilangan positif:

    1 2 3 1 7 10 11 30 28 65 33 1 2 3 10

    Cara yang paling mudah untuk melakukan ini adalah:

    Float max = -1;

    for (inti = 0; i

  • 5/25/2018 Tugas RK - Open CL

    7/9

    Tugas Kelompok Rekayasa KomputasionalOpenCL 7

    ... OpenCLTemplate CLCalc Program KernelkernelCalcMax;

    private voidForm1_Load (pengirim objek,EventArgse)

    {

    StringcalcMaxSrc = @ "

    __kernel batal

    calcMax (__ mengambang global yang * x,

    __global float * max)

    {

    / / Index elemen Vector

    int i = get_global_id (0);

    if (max [0]

  • 5/25/2018 Tugas RK - Open CL

    8/9

    Tugas Kelompok Rekayasa KomputasionalOpenCL 8

    Seperti yang Anda lihat, jenis daftar nomor di textbox txtList pengguna.

    Perhitungan maksimum dari Read textbox, menghitung maksimum benar dan

    menjalankan kode OpenCL:

    private void btnMaxWithOpenCL_Click (pengirim objek, EventArgs e)

    {

    String [] s = txtList.Text.Split ();

    float [] x = float baru [s.Length];

    String DataRead = "";

    for (int i = 0; i

  • 5/25/2018 Tugas RK - Open CL

    9/9

    Tugas Kelompok Rekayasa KomputasionalOpenCL 9

    CLCalc.Program.Variable varx = new CLCalc.Program.Variable (x);

    CLCalc.Program.Variable varMax = baru CLCalc.Program.Variable (max);

    int [] = new int pekerja [] {} x.Length;

    CLCalc.Program.Variable [] args = new CLCalc.Program.Variable [] {varx,

    varMax};

    kernelCalcMax.Execute (args, pekerja);

    / / Baca OpenCL max

    varMax.ReadFromDeviceTo (max);

    lblCLMax.Text = max [0] ToString ();.

    }

    }

    Saat program dieksekusi, tidak ada urutan ditentukan dimana algoritma akan

    mengeksekusi. Jadi ini mungkin terjadi (catatan: x [0] = 1, x [1] = 2):

    1 - Pekerja 0 membaca max [0] dan x [0]. Sejak max [0] adalah -1, jika melewati uji;

    2 - Pekerja 1 berbunyi max [0] dan x [1]. max [0] masih -1 jadi tes melewati;

    3 - Pekerja 1 menulis max [0] = 2;

    4 - 0 Pekerja (yang sampai ke titik penulisan kemudian) menulis max [0] = 1.