Rabu, 04 Agustus 2010

FLOPS dan Floating Point, Apakah Itu??


Bagi anda yang sedang mencari-cari VGA card baru untuk PC anda, tentu anda kenal istilah ini: FLOPs. Singkatan dari FLoating-point OPeration per Second. Bagi Anda programmer yang menggunakan Bahasa C atau Java, anda juga mungkin sudah familiar dengan istilah Floating Point (Saya rasa, programmer Java dan Game Developer tidak perlu membaca tulisan ini, karena mereka tentunya jauh lebih paham tentang topik ini daripada saya). Anyway, apakah Floating Point dan FLOPs itu???





Kalau anda pernah belajar Matematika/Fisika Dasar waktu SMU atau kuliah dulu, anda tentu ingat ada materi tentang Aturan Angka Penting. Saya tidak ingin bertele-tele. Mari langsung contoh saja.

0,150 x 0,150 = 0,0225

Tapi tunggu dulu. Kedua pengali, yaitu angka 0.150 hanya memiliki tiga angka penting saja. Karena itu, hasilnya pun harus dituliskan sampai tiga angka penting saja. Jadi:

0.150 x 0.150 = 0.023

Itulah kurang lebih operasi numerik (dan juga operasi komputasional) bila didasarkan pada angka biasa (dalam hal ini kita menyebutnya Fixed Point). Dalam kasus komputasional, sebenarnya bukan Aturan Nilai Penting yang menyebabkan hilangnya digit dalam perhitungan di atas. Dalam komputasi, hal ini disebabkan oleh ketidakmampuan system untuk menampilkan seluruh angka. Ketidakmampuan ini disebabkan karena titik desimal (yaitu simbol “.” atau “,” dalam sistem aljabar di Indonesia) sudah ditetapkan pada posisi tertentu.

Dalam kasus di atas, posisi koma desimal ditetapkan pada satu digit sesudah angka pertama:

0,15

0,0225

Dan karena hanya tiga angka yang bisa muncul, maka mau tidak mau digit terakhir tidak bisa ditampilkan.

0,022 5 menjadi 0,023

Untuk satu operasi di atas, sepertinya tidak menjadi masalah, karena nilai yang dihapus juga kecil. Tapi bagaimana kalau hasil operasi di atas digunakan untuk operasi berikutnya?? Bagaimana kalau nanti angka 0,0225 akan digunakan untuk perhitungan lainnya, katakanlah untuk dikalikan dengan 10.000?

0,0225 x 10.000 = 225

0,023 x 10.000 = 230

Selisihnya menjadi cukup besar bukan??? Bagaimana kalau hasil ini digunakan untuk operasi berikutnya. Dan seterusnya dan seterusnya… Maka satu deviasi kecil akan berpengaruh besar pada keseluruhan operasi.

Untuk mengatasinya, maka dibuatlah sistem Floating Point.

Yaitu sistem angka dimana titik atau koma desimal bisa floating “mengambang” atau berpindah2 tempat. Menggunakan sistem floating point, operasi di atas bisa dikalkulasi sebagai berikut.




Tidak ada angka yang hilang bukan??

Mungkin untuk melihat lebih jelas bedanya, saya berikan contoh lagi.

Katakanlah, untuk sebuah komputasi, nilai dari angka yang digunakan dinyatakan dalam 8 digit angka. Aturannya: posisi koma desimal selalu berada di tengah-tengah (sesudah digit keempat). Ingat aturan kita untuk simulasi ini: semua angka dinyatakan dalam 8 digit angka, dengan posisi koma desimal tepat sesudah digit keempat!!

Misalnya ada string atau pernyataan angka 00000150. Dalam sistem kita dengan aturan di atas, pernyataan atau string angka tersebut adalah sama dengan 0.0150. Kalau kita kuadratkan, berapa hasilnya?? Hasil sebenarnya adalah 0.000225. Tapi, karena aturan komputasi kita, kita hanya bisa menampilkan 8 digit saja. Terlebih lagi, koma desimal diletakkan di digit keempat. Artinya, hasil perhitungan di atas hanya bisa dinyatakan sebagai: 00000002

Begini:

Kalkulasi Manusia : 0.0150 x 0.0150 = 0.000225

Kalkulasi Komputer : 00000150 x 00000150 = 00000002

Anda lihat?? Dua digit terbuang. Hilang begitu saja.


Itu untuk angka kecil.

Bagaimana dengan angka besar?? Kita coba dengan aturan komputasi yang sama, mari kita lakukan perkalian 150 x 150. Ingat aturannya: Angka dinyatakan dalam 8 digit dan koma desimal diletakkan ditengah-tengah sesudah digit keempat)

Kalkulasi Manusia : 150 x 150 =22500

Kalkulasi Komputer : 01500000 x 01500000 = ERROR

Lho koq bisa error???

Ya iya lah. Karena hasil yang hendak ditampilkan berada di luar rentang kemampuan komputasi. hasilnya khan 22500. Sedangkan Komputasi hanya bisa menampilkan maksimum 9999,9999. Bingung???

Angka maksimum yang bisa dihitung maupun ditampilkan oleh sistem kita adalah: 9999,9999. Yang dinyatakan dengan 99999999 (Ingat: 8 digit angka, koma desimal tepat sesudah digit keempat!!!). Hasil perhitungan kita adalah 22500, lebih besar daripada kemampuan komputasi system kita.

Jadi, anda sudah lihat khan ternyata sistem numerik biasa (kita sebut sebagai Fixed Point), memiliki keterbatasan di sini. Dia memiliki rentang yang kecil dan ketelitian yg kecil pula. Karenanya, untuk sistem yang kompleks seperti banyak sistem komputasi kita saat ini (diantaranya adalah game-game modern, software engineering semacam HYSYS dan HTRI, Software matematika canggih seperti MatLab dan Wolfram Mathematica, software simulasi astronomi seperti Celestia dan Stellarium, bahkan software-software kecil sekalipun) menggunkan sistem komputasi berbasis Floating Point.


Dan bagaimanakah Floating Point tersebut? Bagaimana dia bisa mengatasi masalah yang tidak bisa diselesaikan oleh Fixed Point??? Sekilas sudah saya sampaikan di atas. Namun, supaya Anda bisa menarik nafas, akan saya bahas pada tulisan berikutnya. Keep Reading & Learning !!