Selasa, 30 Oktober 2007

tugas konsorsium stanford

Published May 3rd, 2007

StreamIt: Bahasa Pemrograman baru yang mudah untuk mesin multicore

Dengan perkembangan teknologi mikroprosessor, kita jumpai sekarang terdapat PC, Laptop maupun Gagdet memiliki prosessor lebih dari 1 atau istilahnya multicore, ada yang dual-core atau quad-core. Pada saat ini mesin dengan multicore tersebut lebih banyak digunakan untuk aplikasi-aplikasi yang memang memerlukan banyak proses komputasi, seperti video processing dan gaming. Namun, pada dasarnya mesin multicore ini merupakan superkomputer skals-kecil. Agar kita dapat memanfaatkan keuntungan dari kekuatan komputasinya, software atau program harus dikoding bagi mesin tersebut harus berbasis algoritma paralel (pemrograman paralel). Dan para pakar yakin, apabila pemrograman paralel tidak dapat dibuat lebih mudah, progress komputasi akan menjadi tersendat-sendat dan bahkan terhenti.

Peneliti dari MIT memperhatikan hal ini. Dan mereka telah berhasil mendesain sebuah bahasa pemograman dan compiler yang memberikan kemudahan dalam pemrograman paralel, khususnya bagi mesin-mesin mutlicore. Bahasa Pemrograman dan Compiler disebut StreamIt , dikembangkan oleh Saman Amarasinghe, professor teknik elektro dan ilmu komputer MIT.

StreamIt saat ini berjalan pada mesin multicore khusus yang dikembangkan di MIT. Pada musim panas tahun ini diharapkan dapat berjalan pada chip-komersial dari IBM, Sony, dan Toshiba.

Pada mesin single core, kode software (tasks)akan berjalan sekuensial; pada mesin multicore task-task akan dipecah diantara core-core. Jika task yang berbeda perlu mengakses ‘chunk’ memori yang sama, task tersebut harus bekerja bersama-sama untuk mensinkronisasi akses-akses.

Debugging sekuesial program adalah mudah. Pada sistem paralel proses debug cukup kompleks dan sulit, karena sifat-nya menjadi probabilistik. Setiap kali program berjalan, multicore mengeksekusi tugasnya secara independent, memungkinkan terjadinya jutaan orde eksekusi yang mungkin bagi program.

Data flow, menurut Amaransinghe, merupakan solusinya. Pada data flow, data di stream secara sekuensial melalui sebuah ’sort’ pipeline fungsi-fungsi. Ketika data mengalir compiler akan melihat fungsi mana yang independen. Dengan demikian, compiler dapat memisahkan task-task pada core yang berbeda, tanpa khawatir bahwa task-task akan berinterferensi satu sama lain atau menempati ruang memori yang sama.

Programmer hanya perlu menulis program yang beroperasi secara sekuensial. Compiler yang akan melihat seluruh interaksi-interaksi yang perlu dilakukan, berdasarkan kode yang ditulis programmer, dan mengalokasikan instruksi-instruksi yang tepat.

Tidak ada komentar: