SlideShare a Scribd company logo
1 of 8
TUGAS REKAYASA KOMPUTASIONAL
‘OpenCL’
Kelompok 7 :
1. Rizki Nurul Huda 56410144
2. Rizkha Pramesti 56410112
3. Roni Dafiansyah 56410242
4. Rossi Aryani P 56410256
5. S. Chandra 56410314
Universitas Gunadarma
2012
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.
Sejarah
OpenCL awalnya dikembangkan oleh Apple Inc , yang memegang merek dagang hak, dan
disempurnakan menjadi sebuah proposal awal bekerja sama dengan tim teknis di AMD , IBM
, Intel , dan Nvidia . Apel mengajukan proposal awal ini ke Grup 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.0
OpenCL 1.0 telah dirilis dengan Mac 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 (dan DirectX 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 dari kompiler XL .
OpenCL 1.1
OpenCL 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 dari 1D,
2D, atau wilayah persegi panjang 3D;
Peningkatan penggunaan acara untuk mendorong dan mengontrol perintah eksekusi;
Tambahan OpenCL built-in fungsi C seperti penjepit integer, shuffle, dan salinan
strided asynchronous;
Peningkatan interoperabilitas OpenGL melalui berbagi efisien gambar dan buffer
dengan menghubungkan peristiwa OpenCL dan OpenGL.
OpenCL 1.2
Pada 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-perangkat
sehingga 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 mengkompilasi OpenCL
ke perpustakaan eksternal untuk dimasukkan ke program lain.
Peningkatan dukungan gambar: 1.2 menambahkan dukungan untuk gambar 1D dan
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 spesifik
sekarang 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 untuk berbagi
efisien antara OpenCL dan DX9 atau DXVA permukaan 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 umum
komputasi pada graphics processing unit).
- OpenCL adalah analog dengan standar industri terbuka OpenGL dan OpenAL, untuk grafis 3D
dan audio komputer, masing-masing.
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 (int i = 0; i <x.Length, i + +)
{
if (max <x [i]) max = x [i];
}
Membuat proyek Visual Studio baru untuk ini. Load acara formulir harus menginisialisasi
OpenCL dan mengkompilasi kode:
... OpenCLTemplate CLCalc Program Kernel kernelCalcMax;
private void Form1_Load (pengirim objek, EventArgs e)
{
String calcMaxSrc = @ "
__kernel batal
calcMax (__ mengambang global yang * x,
__global float * max)
{
/ / Index elemen Vector
int i = get_global_id (0);
if (max [0] <x [i]) max [0] = x [i];
} ";
InitCL CLCalc ().;
if (GLAcceleration CLCalc. == CLCalc. GLAccelerationType. UsingGL) {
Kompilasi (Program CLCalc.. Baru string [1] {} calcMaxSrc);
kernelCalcMax = new . Program CLCalc Kernel ("calcMax").;
}
}
Sebagai program tersebut dimuat, kami menyatakan sumber OpenCL, menginisialisasi
OpenCL dan mengkompilasi program.
Ini adalah screenshoot program nya :
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 <x.Length, i + +)
{
float.TryParse (s [i], keluar x [i]);
x [i] = Math.abs (x [i]);
if (DataRead = "!") DataRead + = "";
DataRead + = x [i] ToString ();.
}
txtList.Text = DataRead;
/ / Got daftar x untuk menemukan maksimum
float [] = max baru float [] {-1};
for (int i = 0; i <x.Length, i + +)
{
if (max [0] <x [i]) max [0] = x [i];
}
/ / Tulis jawaban
lblMax.Text = max [0] ToString ();.
/ / Perhitungan OpenCL
max [0] = -1;
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.

More Related Content

Viewers also liked

Reactive programming with Akka and Scala
Reactive programming with Akka and ScalaReactive programming with Akka and Scala
Reactive programming with Akka and ScalaVladimir Malyk
 
Современный фронтенд за 30 минут.
Современный фронтенд за 30 минут.Современный фронтенд за 30 минут.
Современный фронтенд за 30 минут.Vladimir Malyk
 
Angular light introduction
Angular light introductionAngular light introduction
Angular light introductionVladimir Malyk
 
Современный фронтенд -- как не утонуть в море хайпа?
Современный фронтенд -- как не утонуть в море хайпа?Современный фронтенд -- как не утонуть в море хайпа?
Современный фронтенд -- как не утонуть в море хайпа?Vladimir Malyk
 
Mongo performance tuning: tips and tricks
Mongo performance tuning: tips and tricksMongo performance tuning: tips and tricks
Mongo performance tuning: tips and tricksVladimir Malyk
 
Universidad nacional de chimborazo ufap
Universidad nacional de chimborazo ufapUniversidad nacional de chimborazo ufap
Universidad nacional de chimborazo ufapLuciano Renato Flores
 
De que_pais_hablamos_b
 De que_pais_hablamos_b De que_pais_hablamos_b
De que_pais_hablamos_bmatiescolar
 
Revista do Coloquio de Literatura Popular - Ed. 2006
Revista do Coloquio de Literatura Popular - Ed. 2006Revista do Coloquio de Literatura Popular - Ed. 2006
Revista do Coloquio de Literatura Popular - Ed. 2006Portal Iraraense
 
Consumo sustentável socialização
Consumo sustentável socializaçãoConsumo sustentável socialização
Consumo sustentável socializaçãoRosinês Ribeiro
 

Viewers also liked (16)

Reactive programming with Akka and Scala
Reactive programming with Akka and ScalaReactive programming with Akka and Scala
Reactive programming with Akka and Scala
 
ELECTRONICA DE POTENCIA
ELECTRONICA DE POTENCIAELECTRONICA DE POTENCIA
ELECTRONICA DE POTENCIA
 
Современный фронтенд за 30 минут.
Современный фронтенд за 30 минут.Современный фронтенд за 30 минут.
Современный фронтенд за 30 минут.
 
Angular light introduction
Angular light introductionAngular light introduction
Angular light introduction
 
Современный фронтенд -- как не утонуть в море хайпа?
Современный фронтенд -- как не утонуть в море хайпа?Современный фронтенд -- как не утонуть в море хайпа?
Современный фронтенд -- как не утонуть в море хайпа?
 
Motivasyon
MotivasyonMotivasyon
Motivasyon
 
Mongo performance tuning: tips and tricks
Mongo performance tuning: tips and tricksMongo performance tuning: tips and tricks
Mongo performance tuning: tips and tricks
 
Analyze
AnalyzeAnalyze
Analyze
 
Universidad nacional de chimborazo ufap
Universidad nacional de chimborazo ufapUniversidad nacional de chimborazo ufap
Universidad nacional de chimborazo ufap
 
Scanneado 24 07_2013
Scanneado 24 07_2013Scanneado 24 07_2013
Scanneado 24 07_2013
 
De que_pais_hablamos_b
 De que_pais_hablamos_b De que_pais_hablamos_b
De que_pais_hablamos_b
 
Kpc 8
Kpc 8Kpc 8
Kpc 8
 
Ntic
NticNtic
Ntic
 
Luís i lucas
Luís i lucasLuís i lucas
Luís i lucas
 
Revista do Coloquio de Literatura Popular - Ed. 2006
Revista do Coloquio de Literatura Popular - Ed. 2006Revista do Coloquio de Literatura Popular - Ed. 2006
Revista do Coloquio de Literatura Popular - Ed. 2006
 
Consumo sustentável socialização
Consumo sustentável socializaçãoConsumo sustentável socialização
Consumo sustentável socialização
 

Similar to OpenCL untuk Menghitung Maksimum Bilangan

PENGENALAN SSISTEM OPERASI, IDE VISUAL C++, DAN ALGORITMA PEMROGRAMAN
PENGENALAN SSISTEM OPERASI, IDE VISUAL C++, DAN ALGORITMA PEMROGRAMANPENGENALAN SSISTEM OPERASI, IDE VISUAL C++, DAN ALGORITMA PEMROGRAMAN
PENGENALAN SSISTEM OPERASI, IDE VISUAL C++, DAN ALGORITMA PEMROGRAMANNur Kholifah Hidayah
 
Sistem Operasi Close & Open Source
Sistem Operasi Close & Open SourceSistem Operasi Close & Open Source
Sistem Operasi Close & Open SourceDewa Dewa
 
Presentasi linux fsl itb putu
Presentasi linux fsl itb putuPresentasi linux fsl itb putu
Presentasi linux fsl itb putuPutu Shinoda
 
Ebook Workshop Dasar android
Ebook Workshop Dasar androidEbook Workshop Dasar android
Ebook Workshop Dasar androidSaeful Bahri
 
Perbandingan bahasa C dan java serta sejarah singkat
Perbandingan bahasa C dan java serta sejarah singkatPerbandingan bahasa C dan java serta sejarah singkat
Perbandingan bahasa C dan java serta sejarah singkatHibaten Wafiroh
 
Perbandingan bahasa c# dan sejarah singkat
Perbandingan bahasa c# dan sejarah singkatPerbandingan bahasa c# dan sejarah singkat
Perbandingan bahasa c# dan sejarah singkatHibaten Wafiroh
 
Open and close source
Open and close sourceOpen and close source
Open and close sourceRifai Ananda
 
02 presentasi sistem_operasi_open_source
02 presentasi sistem_operasi_open_source02 presentasi sistem_operasi_open_source
02 presentasi sistem_operasi_open_sourceRusmanto Maryanto
 
Tugas open source dan close source
Tugas open source dan close sourceTugas open source dan close source
Tugas open source dan close sourceD. Syafa'atul Anbiya
 
Teknologi cloud computing final - lite version
Teknologi cloud computing   final - lite versionTeknologi cloud computing   final - lite version
Teknologi cloud computing final - lite versionSTKIP Surya Bogor
 
Menggunakan ise webpack 1
Menggunakan ise webpack 1Menggunakan ise webpack 1
Menggunakan ise webpack 1Hilmy Akbar
 
Rangkuman tentang java
Rangkuman tentang javaRangkuman tentang java
Rangkuman tentang javaFitra Sani
 
Running Text on LCD ATMEGA 8535
Running Text on LCD ATMEGA 8535Running Text on LCD ATMEGA 8535
Running Text on LCD ATMEGA 8535Chardian Arguta
 
Octave dan Mikrokontroller Communication
Octave dan Mikrokontroller CommunicationOctave dan Mikrokontroller Communication
Octave dan Mikrokontroller CommunicationLusiana Diyan
 
Modul Pratikum Algoritma dan Pemrograman dalam Bahasa Visual C++ 2010
Modul Pratikum Algoritma dan Pemrograman dalam Bahasa Visual C++ 2010Modul Pratikum Algoritma dan Pemrograman dalam Bahasa Visual C++ 2010
Modul Pratikum Algoritma dan Pemrograman dalam Bahasa Visual C++ 2010eddie Ismantoe
 

Similar to OpenCL untuk Menghitung Maksimum Bilangan (20)

Laporan praktikum dpk modul 1
Laporan praktikum dpk modul 1Laporan praktikum dpk modul 1
Laporan praktikum dpk modul 1
 
PENGENALAN SSISTEM OPERASI, IDE VISUAL C++, DAN ALGORITMA PEMROGRAMAN
PENGENALAN SSISTEM OPERASI, IDE VISUAL C++, DAN ALGORITMA PEMROGRAMANPENGENALAN SSISTEM OPERASI, IDE VISUAL C++, DAN ALGORITMA PEMROGRAMAN
PENGENALAN SSISTEM OPERASI, IDE VISUAL C++, DAN ALGORITMA PEMROGRAMAN
 
2. CodeBlocks & C++
2. CodeBlocks & C++2. CodeBlocks & C++
2. CodeBlocks & C++
 
Sistem Operasi Close & Open Source
Sistem Operasi Close & Open SourceSistem Operasi Close & Open Source
Sistem Operasi Close & Open Source
 
Presentasi linux fsl itb putu
Presentasi linux fsl itb putuPresentasi linux fsl itb putu
Presentasi linux fsl itb putu
 
Ebook Workshop Dasar android
Ebook Workshop Dasar androidEbook Workshop Dasar android
Ebook Workshop Dasar android
 
Perbandingan bahasa C dan java serta sejarah singkat
Perbandingan bahasa C dan java serta sejarah singkatPerbandingan bahasa C dan java serta sejarah singkat
Perbandingan bahasa C dan java serta sejarah singkat
 
Perbandingan bahasa c# dan sejarah singkat
Perbandingan bahasa c# dan sejarah singkatPerbandingan bahasa c# dan sejarah singkat
Perbandingan bahasa c# dan sejarah singkat
 
Open and close source
Open and close sourceOpen and close source
Open and close source
 
02 presentasi sistem_operasi_open_source
02 presentasi sistem_operasi_open_source02 presentasi sistem_operasi_open_source
02 presentasi sistem_operasi_open_source
 
Cocomo
CocomoCocomo
Cocomo
 
Tugas open source dan close source
Tugas open source dan close sourceTugas open source dan close source
Tugas open source dan close source
 
Teknologi cloud computing final - lite version
Teknologi cloud computing   final - lite versionTeknologi cloud computing   final - lite version
Teknologi cloud computing final - lite version
 
Menggunakan ise webpack 1
Menggunakan ise webpack 1Menggunakan ise webpack 1
Menggunakan ise webpack 1
 
Rangkuman tentang java
Rangkuman tentang javaRangkuman tentang java
Rangkuman tentang java
 
Running Text on LCD ATMEGA 8535
Running Text on LCD ATMEGA 8535Running Text on LCD ATMEGA 8535
Running Text on LCD ATMEGA 8535
 
Octave dan Mikrokontroller Communication
Octave dan Mikrokontroller CommunicationOctave dan Mikrokontroller Communication
Octave dan Mikrokontroller Communication
 
Modul Pratikum Algoritma dan Pemrograman dalam Bahasa Visual C++ 2010
Modul Pratikum Algoritma dan Pemrograman dalam Bahasa Visual C++ 2010Modul Pratikum Algoritma dan Pemrograman dalam Bahasa Visual C++ 2010
Modul Pratikum Algoritma dan Pemrograman dalam Bahasa Visual C++ 2010
 
Bab1
Bab1Bab1
Bab1
 
TeeChart
TeeChartTeeChart
TeeChart
 

OpenCL untuk Menghitung Maksimum Bilangan

  • 1. TUGAS REKAYASA KOMPUTASIONAL ‘OpenCL’ Kelompok 7 : 1. Rizki Nurul Huda 56410144 2. Rizkha Pramesti 56410112 3. Roni Dafiansyah 56410242 4. Rossi Aryani P 56410256 5. S. Chandra 56410314 Universitas Gunadarma 2012
  • 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.
  • 3. Sejarah OpenCL awalnya dikembangkan oleh Apple Inc , yang memegang merek dagang hak, dan disempurnakan menjadi sebuah proposal awal bekerja sama dengan tim teknis di AMD , IBM , Intel , dan Nvidia . Apel mengajukan proposal awal ini ke Grup 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.0 OpenCL 1.0 telah dirilis dengan Mac 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 (dan DirectX 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 dari kompiler XL . OpenCL 1.1 OpenCL 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;
  • 4. Penanganan perintah dari beberapa benang host dan pengolahan buffer di beberapa perangkat; Operasi pada daerah penyangga termasuk membaca, menulis dan menyalin dari 1D, 2D, atau wilayah persegi panjang 3D; Peningkatan penggunaan acara untuk mendorong dan mengontrol perintah eksekusi; Tambahan OpenCL built-in fungsi C seperti penjepit integer, shuffle, dan salinan strided asynchronous; Peningkatan interoperabilitas OpenGL melalui berbagi efisien gambar dan buffer dengan menghubungkan peristiwa OpenCL dan OpenGL. OpenCL 1.2 Pada 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-perangkat sehingga 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 mengkompilasi OpenCL ke perpustakaan eksternal untuk dimasukkan ke program lain. Peningkatan dukungan gambar: 1.2 menambahkan dukungan untuk gambar 1D dan 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 spesifik sekarang 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.
  • 5. Fungsi DirectX: DX9 berbagi permukaan media yang memungkinkan untuk berbagi efisien antara OpenCL dan DX9 atau DXVA permukaan 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 umum komputasi pada graphics processing unit). - OpenCL adalah analog dengan standar industri terbuka OpenGL dan OpenAL, untuk grafis 3D dan audio komputer, masing-masing. 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;
  • 6. - 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 (int i = 0; i <x.Length, i + +) { if (max <x [i]) max = x [i]; } Membuat proyek Visual Studio baru untuk ini. Load acara formulir harus menginisialisasi OpenCL dan mengkompilasi kode: ... OpenCLTemplate CLCalc Program Kernel kernelCalcMax; private void Form1_Load (pengirim objek, EventArgs e) { String calcMaxSrc = @ " __kernel batal calcMax (__ mengambang global yang * x, __global float * max) { / / Index elemen Vector int i = get_global_id (0);
  • 7. if (max [0] <x [i]) max [0] = x [i]; } "; InitCL CLCalc ().; if (GLAcceleration CLCalc. == CLCalc. GLAccelerationType. UsingGL) { Kompilasi (Program CLCalc.. Baru string [1] {} calcMaxSrc); kernelCalcMax = new . Program CLCalc Kernel ("calcMax").; } } Sebagai program tersebut dimuat, kami menyatakan sumber OpenCL, menginisialisasi OpenCL dan mengkompilasi program. Ini adalah screenshoot program nya : 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 <x.Length, i + +) { float.TryParse (s [i], keluar x [i]); x [i] = Math.abs (x [i]); if (DataRead = "!") DataRead + = ""; DataRead + = x [i] ToString ();. } txtList.Text = DataRead; / / Got daftar x untuk menemukan maksimum float [] = max baru float [] {-1}; for (int i = 0; i <x.Length, i + +) { if (max [0] <x [i]) max [0] = x [i]; } / / Tulis jawaban lblMax.Text = max [0] ToString ();. / / Perhitungan OpenCL
  • 8. max [0] = -1; 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.