pthread
Perkembangan..
Melanjutkan kisah sebelumnya, akhirnya saya berhasil menyelesaikan kodingan bzip2 paralel dg uTC (cuma bagian kompresinya aja). Separuh waktu yang saya gunakan habis dipakai tuk debugging masalah yang tidak jelas. Masalah yang sangat aneh sampai2 saya juga tidak tahu apa yang harus dilakukan.
Penggunaan g++ bawaan Ubuntu 7.10 dan Ubuntu 8.04 ternyata memberikan hasil yang berbeda. Kalau menggunakan g++ yg dipakai di mesin uji coba (powerpc quadcore) ternyata hasilnya beda lagi, untungnya yg ini hasilnya sesuai harapan *lega*.
Microthreading
Baru kali ini dapet tugas yg kerjaannya memodifikasi program. Berhubung program aslinya dirilis di bawah GPL, pastinya yang saya ubah juga harus jadi GPL.
Tugasnya adalah.. mengekstrak konkurensi.. err.. membuat program jadi bisa jalan secara paralel. Model pemrograman yg dipake adalah microthreading dan bahasa yg dipake adalah uTC alias Microthreaded C. Dari sekian pilihan program yang disediakan, sepertinya program yang paling “sederhana” adalah bzip2. Versi yang dipakai adalah versi 0.1pl2 yang dirilis pada tanggal 29 Agustus 1997. Wah, udah hampir 11 tahun tuh umurnya. Program ini tampak sederhana dibanding yang lain karena “hanya” terdiri dari 4000an baris (termasuk komentar) dalam 1 file saja.
Berhubung uTC ini cuma tambahan dikit dari bhs C, maka semestinya bzip2 jg bisa dibuat jadi paralel dg mudah (walau kenyataannya ngga krn ada banyak global variables T_T). Jadi.. langkah pertama adalah.. memindahkan global variables tadi ke dalam sebuah struct yg bakal dilempar2 pas manggil fungsi2. dst dst.. *blom kebayang lanjutannya* Kalo mo iseng liat bzip2 yg udah dimodif sampe sini, silakan kunjungi https://github.com/fajran/utcbzip2/tree (cuma bagian kompresinya aja yang sudah diubah)
Kembali ke microthreading, makhluk yg satu ini adalah salah satu konsep/model pemrograman baru yang ditujukan tuk mempermudah pembuatan aplikasi yang ingin memanfaatkan ribuan cores para prosesor yang suatu saat akan tersedia (kabarnya [Intel jg sudah merencanakannya]( http://news.cnet.com/8301-13924_3-9981760-64.html?hhTest=1&part=rss&subj=news&tag=2547-1_3-0-5)). Kalo pake teknik yg ada sekarang (apa ya? message passing, shared memory, apalah), rasanya bikin aplikasi paralel itu jadi malah ribet di urusan pengaturan konkurensinya (ngirim2 data lah, sinkronisasi lah, dll), sehingga kurang bisa fokus di pembuatan aplikasi itu sendiri, misalnya di masalah algoritma. Biarlah urusan konkurensi itu diatur oleh sistem yg ada di belakang layar dan tukang koding bisa fokus ngerjain aplikasi itu sendiri.
Rencananya akan ada compiler yang bisa ngompile uTC. Namun saat ini kabarnya belum kelar dibuat. Yang sudah ada baru simulator prosesor yg bisa ngejalnin aplikasi ini (musti ngoding asm nya by hand) dan skrip pengubah uTC jadi kodingan C++ yg make pthread. Kodingan dg pthread ini tentu saja bisa lgs dijalanin di kompi biasa dg OS yg dukung pthread, misalnya Linux ato Mac OS X.
Tuk info lebih lanjut, silakan liat posternya dan halaman proyeknya.