Pemrogram Paralel pada mesin multi-core processor

Dewasa ini baik PC maupun Laptop telah menggunakan teknologi multi-core
processor. Sepertinya sampai saat ini kita belum memanfaat- kannya untuk
kebutuhan pengolahan paralel. Beberapa kemungkinan untuk pemanfaatannya
dengan menggunakan tool/library/bahasa pemrograman berikut:
1. OpenMP http://openMP.org/wp/
e-book bisa di DL di sini
Feature:
The OpenMP Application Program Interface (API) supports multi-platform
shared-memory parallel programming in C/C++ and Fortran. OpenMP is a
portable, scalable model with a simple and flexible interface for
developing parallel applications on platforms from the desktop to the
supercomputer.

2. Threading Building Block http://www.threadingbuildingblocks.org/
e-book bisa di DL di sini
Threading Building Blocks will enable you to specify parallelism far more
conveniently than using raw threads, while improving performance,
portability, and scalability.

3. Carnap Programming ( http://www.carnap.info/ )

Carnap is a general purpose programming language for the next generation
of many-core devices, many many-core systems and their applications. It
introduces a process oriented programming model that allows programmers to
separate concerns: Carnap programs consist of data structures and the
concurrent processes that act upon them.

4. StreamIt (http://www.cag.csail.mit.edu/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.
Ditulis dalam Paralel Computing. Tag: . Comments Off

Desktop Supercomputer

Maryland Professor Creates Desktop Supercomputer from PhysOrg.com
A prototype of what may be the next generation of personal computers has been developed by researchers in the University of Maryland’s A. James Clark School of Engineering. Capable of computing speeds 100 times faster than current desktops, the technology is based on parallel processing on a single chip.

[...]

Ditulis dalam Paralel Computing. Comments Off

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.”)