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.

Lihat lebih jauh tentang StreamIt
StreamIt is a programming language and a compilation infrastructure, specifically engineered for modern streaming systems. It is designed to facilitate the programming of large streaming applications, as well as their efficient and effective mapping to a wide variety of target architectures, including commercial-off-the-shelf uniprocessors, multicore architectures, and clusters of workstations.

Komentar:

It is a sound idea based on well-known concepts, says Ras Bodik, a professor of computer science at the University of California, Berkeley. “If you want programmers who are not experts in parallelism to be productive, if you want them to effectively write programs, you want to give them a language like StreamIt,” he says. However, Bodik suspects that software engineers will need to rely on a hierarchy of tools that operate at different levels. For instance, transactional memory, which allows numerous tasks to share the same memory at the same time, could operate behind the scenes, helping maximize StreamIt’s
potential. (See
The Trouble with Multi-Core Computers.”)