Kamis, 27 Juni 2013

BioInformatika

Bioinformatika adalah salah satu cabang baru ilmu biologi yang merupakan perpaduan antara biologi dan teknologi informasi. Menurut Durso (1997) bioinformatika adalah manajemen dan analisis informasi biologis yang disimpan dalam database.

Ilmu ini mengajarkan aplikasi, analisis, dan mengorganisir miliaran bit informasi genetik dalam sel mahluk hidup. Studi bioinformatika terutama didukung uleh studi genomik, biologi komputasi, dan teknologi komputer. Menurut Roderick (lihat Hieter & Boguski, 1997), genomik adalah studi yang berhubungan dengan pemetaan, sekuen, dan analisis genom. Walaupun belum jelas, secara umum Genomik bisa diartikan sebagai penggunaan informasi genom secara sistematis, dengan data eksperimental baru untuk menjawab permasalahan biologis, medis, maupun industri (Jordan, 1999).

ioinformatika sendiri mencakup kajian yang lebih mendalam dari genomik. Dalam studi bioinformatika digunakan komputer yang mampu menyimpan data dalam jumlah yang sangat banyak dan didukung berbagai macam software untuk menganalisis jutaan data yang berasal dari mahluk hidup.

Bidang-Bidang yang Terkait dengan Bioinformatika :

Biophysics
Biologi molekul sendiri merupakan pengembangan yang lahir dari biophysics. Biophysics adalah sebuah bidang interdisipliner yang mengaplikasikan teknik- teknik dari ilmu Fisika untuk memahami struktur dan fungsi biologi (British Biophysical Society). Sesuai dengan definisi di atas, bidang ini merupakan suatu bidang yang luas. Namun secara langsung disiplin ilmu ini terkait dengan Bioinformatika karena penggunaan teknik-teknik dari ilmu Fisika untuk memahami struktur membutuhkan penggunaan TI.

Computational Biology
Computational biology merupakan bagian dari Bioinformatika (dalam arti yang paling luas) yang paling dekat dengan bidang Biologi umum klasik. Fokus dari computational biology adalah gerak evolusi, populasi, dan biologi teoritis daripada biomedis dalam molekul dan sel. Tak dapat dielakkan bahwa Biologi Molekul cukup penting dalam computational biology, namun itu bukanlah inti dari disiplin ilmu ini. Pada penerapan computational biology, model-model statistika untuk fenomena biologi lebih disukai dipakai dibandingkan dengan model sebenarnya. 

Dalam beberapa hal cara tersebut cukup baik mengingat pada kasus tertentu eksperimen langsung pada fenomena biologi cukup sulit. Tidak semua dari computational biology merupakan Bioinformatika, seperti contohnya Model Matematika bukan merupakan Bioinformatika, bahkan meskipun dikaitkan dengan masalah biologi.
Cheminformatics
Cheminformatics adalah kombinasi dari sintesis kimia, penyaringan biologis, dan pendekatan data-mining yang digunakan untuk penemuan dan pengembangan obat (Cambridge Healthech Institute’s Sixth Annual Cheminformatics conference). Pengertian disiplin ilmu yang disebutkan di atas lebih merupakan identifikasi dari salah satu aktivitas yang paling populer dibandingkan dengan berbagai bidang studi yang mungkin ada di bawah bidang ini.

Salah satu contoh penemuan obat yang paling sukses sepanjang sejarah adalah penisilin, dapat menggambarkan cara untuk menemukan dan mengembangkan obatobatan hingga sekarang –meskipun terlihat aneh–. Cara untuk menemukan dan mengembangkan obat adalah hasil dari kesempatan, observasi, dan banyak proses kimia yang intensif dan lambat. Sampai beberapa waktu yang lalu, disain obat dianggap harus selalu menggunakan kerja yang intensif, proses uji dan gagal (trial-error process).

Kemungkinan penggunaan TI untuk merencanakan secara cerdas dan dengan mengotomatiskan proses-proses yang terkait dengan sintesis kimiawi dari komponen-komponen pengobatan merupakan suatu prospek yang sangat menarik bagi ahli kimia dan ahli biokimia. Penghargaan untuk menghasilkan obat yang dapat dipasarkan secara lebih cepat sangatlah besar, sehingga target inilah yang merupakan inti dari cheminformatics.
Ruang lingkup akademis dari cheminformatics ini sangat luas. Contoh bidang minatnya antara lain: Synthesis Planning, Reaction and Structure Retrieval, 3-D Structure Retrieval, Modelling, Computational Chemistry, Visualisation Tools and Utilities.

Genomics
Genomics adalah bidang ilmu yang ada sebelum selesainya sekuen genom, kecuali dalam bentuk yang paling kasar. Genomics adalah setiap usaha untuk menganalisa atau membandingkan seluruh komplemen genetik dari satu spesies atau lebih. Secara logis tentu saja mungkin untuk membandingkan genom-genom dengan membandingkan kurang lebih suatu himpunan bagian dari gen di dalam genom yang representatif.

Mathematical Biology
Mathematical biology lebih mudah dibedakan dengan Bioinformatika daripada computational biology dengan Bioinformatika. Mathematical biology juga menangani masalah-masalah biologi, namun metode yang digunakan untuk menangani masalah tersebut tidak perlu secara numerik dan tidak perlu diimplementasikan dalam software maupun hardware. Bahkan metode yang dipakai tidak perlu “menyelesaikan” masalah apapun; dalam mathematical biology bisa dianggap beralasan untuk mempublikasikan sebuah hasil yang hanya menyatakan bahwa suatu masalah biologi berada pada kelas umum tertentu. 

Istilah proteomics pertama kali digunakan untuk menggambarkan himpunan dari protein-protein yang tersusun (encoded) oleh genom. Ilmu yang mempelajari proteome, yang disebut proteomics, pada saat ini tidak hanya memperhatikan semua protein di dalam sel yang diberikan, tetapi juga himpunan dari semua bentuk isoform dan modifikasi dari semua protein, interaksi diantaranya, deskripsi struktural dari proteinprotein dan kompleks-kompleks orde tingkat tinggi dari protein, dan mengenai masalah tersebut hampir semua pasca genom. 

Pharmacogenomics
Pharmacogenomics adalah aplikasi dari pendekatan genomik dan teknologi pada identifikasi dari target-target obat. Contohnya meliputi menjaring semua genom untuk penerima yang potensial dengan menggunakan cara Bioinformatika, atau dengan menyelidiki bentuk pola dari ekspresi gen di dalam baik patogen maupun induk selama terjadinya infeksi, atau maupun dengan memeriksa karakteristik pola-pola ekspresi yang ditemukan dalam tumor atau contoh dari pasien untuk kepentingan diagnosa (kemungkinan untuk mengejar target potensial terapi kanker). 

Istilah pharmacogenomics digunakan lebih untuk urusan yang lebih “trivial” — tetapi dapat diargumentasikan lebih berguna– dari aplikasi pendekatan Bioinformatika pada pengkatalogan dan pemrosesan informasi yang berkaitan dengan ilmu Farmasi dan Genetika, untuk contohnya adalah pengumpulan informasi pasien dalam database.

Pharmacogenetics
Tiap individu mempunyai respon yang berbeda-beda terhadap berbagai pengaruh obat; sebagian ada yang positif, sebagian ada yang sedikit perubahan yang tampak pada kondisi mereka dan ada juga yang mendapatkan efek samping atau reaksi alergi. Sebagian dari reaksi-reaksi ini diketahui mempunyai dasar genetik. Pharmacogenetics adalah bagian dari pharmacogenomics yang menggunakan metode genomik/Bioinformatika untuk mengidentifikasi hubungan-hubungan genomik, contohnya SNP (Single Nucleotide Polymorphisms), karakteristik dari profil respons pasien tertentu dan menggunakan informasi-informasi tersebut untuk memberitahu administrasi dan pengembangan terapi pengobatan. 

Secara menakjubkan pendekatan tersebut telah digunakan untuk “menghidupkan kembali” obat-obatan yang sebelumnya dianggap tidak efektif, namun ternyata diketahui manjur pada sekelompok pasien tertentu. Disiplin ilmu ini juga dapat digunakan untuk mengoptimalkan dosis kemoterapi pada pasien-pasien tertentu. Gambaran dari sebagian bidang-bidang yang terkait dengan Bioinformatika di atas memperlihatkan bahwa Bioinformatika mempunyai ruang lingkup yang sangat luas dan mempunyai peran yang sangat besar dalam bidangnya. Bahkan pada bidang pelayanan kesehatan Bioinformatika menimbulkan disiplin ilmu baru yang menyebabkan peningkatan pelayanan kesehatan.

Minggu, 02 Juni 2013

KOMPUTASI PARALEL DALAM DUNIA BISNIS

Komputasi paralel adalah salah satu teknik melakukan komputasi secara bersamaan dengan memanfaatkan beberapa komputer independen secara bersamaan. Ini umumnya diperlukan saat kapasitas yang diperlukan sangat besar, baik karena harus mengolah data dalam jumlah besar (di industri keuangan, bioinformatika, dll) ataupun karena tuntutan proses komputasi yang banyak. Kasus kedua umum ditemui di kalkulasi numerik untuk menyelesaikan persamaan matematis di bidang fisika (fisika komputasi), kimia (kimia komputasi) dll.
Untuk melakukan aneka jenis komputasi paralel ini diperlukan infrastruktur mesin paralel yang terdiri dari banyak komputer yang dihubungkan dengan jaringan dan mampu bekerja secara paralel untuk menyelesaikan satu masalah. Untuk itu diperlukan aneka perangkat lunak pendukung yang biasa disebut sebagai middleware yang berperan untuk mengatur distribusi pekerjaan antar node dalam satu mesin paralel. Selanjutnya pemakai harus membuat pemrograman paralel untuk merealisasikan komputasi. Tidak berarti dengan mesin paralel semua program yang dijalankan diatasnya otomatis akan diolah secara parallel.
Di dalam komputasi parallel ada yang dinamakan dengan pemrograman parallel. Pemrograman paralel adalah teknik pemrograman komputer yang memungkinkan eksekusi perintah/operasi secara bersamaan (komputasi paralel), baik dalam komputer dengan satu (prosesor tunggal) ataupun banyak (prosesor ganda dengan mesin paralel) CPU. Bila komputer yang digunakan secara bersamaan tersebut dilakukan oleh komputer-komputer terpisah yang terhubung dalam suatu jaringan komputer lebih sering istilah yang digunakan adalah sistem terdistribusi (distributed computing).
Tujuan utama dari pemrograman paralel adalah untuk meningkatkan performa komputasi. Semakin banyak hal yang bisa dilakukan secara bersamaan (dalam waktu yang sama), semakin banyak pekerjaan yang bisa diselesaikan. Analogi yang paling gampang adalah, bila anda dapat merebus air sambil memotong-motong bawang saat anda akan memasak, waktu yang anda butuhkan akan lebih sedikit dibandingkan bila anda mengerjakan hal tersebut secara berurutan (serial). Atau waktu yg anda butuhkan memotong bawang akan lebih sedikit jika anda kerjakan berdua.
Performa dalam pemrograman paralel diukur dari berapa banyak peningkatan kecepatan (speed up) yang diperoleh dalam menggunakan tehnik paralel. Secara informal, bila anda memotong bawang sendirian membutuhkan waktu 1 jam dan dengan bantuan teman, berdua anda bisa melakukannya dalam 1/2 jam maka anda memperoleh peningkatan kecepatan sebanyak 2 kali.
Parallel processing berbeda dengan multitasking, yaitu satu CPU mengeksekusi beberapa program sekaligus. Parallel processing disebut juga parallel computing. Pada system komputasi parallel terdiri dari beberapa unit prosesor dan beberapa unit memori. Ada dua teknik yang berbeda untuk mengakses data di unit memori, yaitu shared memory address dan message passing. Berdasarkan cara mengorganisasikan memori ini computer parallel dibedakan menjadi shared memory parallel machine dan distributed memory parallel machine.
Prosesor dan memori ini didalam mesin paralel dapat dihubungkan (interkoneksi) secara statis maupun dinamis. Interkoneksi statis umumnya digunakan oleh distributed memory system (sistem memori terdistribusi). Sambungan langsung peer to peer digunakan untuk menghubungkan semua prosesor. Interkoneksi dinamis umumnya menggunakan switch untuk menghubungkan antar prosesor dan memori.
Yang perlu diingat adalah komputasi paralel berbeda dengan multitasking. Pengertian multitasking adalah komputer dengan processor tunggal mengeksekusi beberapa tugas secara bersamaan. Walaupun beberapa orang yang bergelut di bidang sistem operasi beranggapan bahwa komputer tunggal tidak bisa melakukan beberapa pekerjaan sekaligus, melainkan proses penjadwalan yang berlakukan pada sistem operasi membuat komputer seperti mengerjakan tugas secara bersamaan. Sedangkan komputasi paralel sudah dijelaskan sebelumnya, bahwa komputasi paralel menggunakan beberapa processor atau komputer. Selain itu komputasi paralel tidak menggunakan arsitektur Von Neumann.
Untuk lebih memperjelas lebih dalam mengenai perbedaan komputasi tunggal (menggunakan 1 processor) dengan komputasi paralel (menggunakan beberapa processor), maka kita harus mengetahui terlebih dahulu pengertian mengenai model dari komputasi. Ada 4 model komputasi yang digunakan, yaitu:
1.    SISD (Single Instruction, Single Data) adalah satu-satunya yang menggunakan arsitektur Von Neumann. Ini dikarenakan pada model ini hanya digunakan 1 processor saja. Oleh karena itu model ini bisa dikatakan sebagai model untuk komputasi tunggal. Sedangkan ketiga model lainnya merupakan komputasi paralel yang menggunakan beberapa processor. Beberapa contoh komputer yang menggunakan model SISD adalah UNIVAC1, IBM 360, CDC 7600, Cray 1 dan PDP 1.
2.     SIMD(Single Instruction, Multiple Data) menggunakan banyak processor dengan instruksi yang sama, namun setiap processor mengolah data yang berbeda. Sebagai contoh kita ingin mencari angka 27 pada deretan angka yang terdiri dari 100 angka, dan kita menggunakan 5 processor. Pada setiap processor kita menggunakan algoritma atau perintah yang sama, namun data yang diproses berbeda. Misalnya processor 1 mengolah data dari deretan / urutan pertama hingga urutan ke 20, processor 2 mengolah data dari urutan 21 sampai urutan 40, begitu pun untuk processor-processor yang lain. Beberapa contoh komputer yang menggunakan model SIMD adalah ILLIAC IV, MasPar, Cray X-MP, Cray Y-MP, Thingking Machine CM-2 dan Cell Processor (GPU).
3.  MISD(Multiple Instruction, Single Data) menggunakan banyak processor dengan setiap processor menggunakan instruksi yang berbeda namun mengolah data yang sama. Hal ini merupakan kebalikan dari model SIMD. Untuk contoh, kita bisa menggunakan kasus yang sama pada contoh model SIMD namun cara penyelesaian yang berbeda. Pada MISD jika pada komputer pertama, kedua, ketiga, keempat dan kelima sama-sama mengolah data dari urutan 1-100, namun algoritma yang digunakan untuk teknik pencariannya berbeda di setiap processor. Sampai saat ini belum ada komputer yang menggunakan model MISD.
4.   MIMD( Multiple Instruction, Multiple Data) menggunakan banyak processor dengan setiap processor memiliki instruksi yang berbeda dan mengolah data yang berbeda. Namun banyak komputer yang menggunakan model MIMD juga memasukkan komponen untuk model SIMD. Beberapa komputer yang menggunakan model MIMD adalah IBM POWER5, HP/Compaq AlphaServer, Intel IA32, AMD Opteron, Cray XT3 dan IBM BG/L.

Singkatnya untuk perbedaan antara komputasi tunggal dengan komputasi paralel, bisa digambarkan pada gambar di bawah ini:
 

Dari perbedaan kedua gambar di atas, kita dapat menyimpulkan bahwa kinerja komputasi paralel lebih efektif dan dapat menghemat waktu untuk pemrosesan data yang banyak daripada komputasi tunggal. Dari penjelasan-penjelasan di atas, kita bisa mendapatkan jawaban mengapa dan kapan kita perlu menggunakan komputasi paralel. Jawabannya adalah karena komputasi paralel jauh lebih menghemat waktu dan sangat efektif ketika kita harus mengolah data dalam jumlah yang besar. Namun keefektifan akan hilang ketika kita hanya mengolah data dalam jumlah yang kecil, karena data dengan jumlah kecil atau sedikit lebih efektif jika kita menggunakan komputasi tunggal.

IMPLEMENTASI KOMPUTASI PARALEL PADA DUNIA BISNIS KHUSUSNYA PERFILM-AN

Pada bagian ini penulis akan membahas salah satu implementasi komputasi parallel pada dunia bisnis yaitu pada dunia perfilman yaitu rendering film. Kemajuan di bidang komputasi, khususnya dalam bidang komputer grafis memberikan kemudahan untuk memodelkan suatu benda dalam alam 3 dimensi virtual di komputer. Kita dapat membuat suatu benda dalam wujud 3 dimensi dan mengubah-ubah sudut pandang, menentukan pencahayaan, bahkan menyusun gerakan benda dalam alam 3 dimensi virtual tersebut. Perkembangan ini muncul dari kebutuhan di bidang manufaktur untuk memiliki komputer yang dapat membantu perancangan (computer aided design-CAD). Ditemukannya teknik-teknik dan metoda rendering suatu obyek 3 D ke dalam media 2 D membuat benda yang dihasilkan oleh perangkat lunak ini menjadi semakin nyata dan menyerupai aslinya.
Komputasi Paralel mempunyai prinsip yang bersesuaian dengan algoritma Divide and Conquer, yaitu membagi-bagi proses menjadi bagian-bagian yang cukup kecil dan memungkinkan untuk dikerjakan oleh sebuah unit komputasi.
Terdapat 2 klasifikasi parallel computer yang penting, yaitu : Sebuah komputer dengan banyak unit komputasi internal, atau lebih dikenal sebagai Shared Memory Multiprocessor. Beberapa komputer yang terhubung melalui sebuah jaringan, atau lebih dikenal sebagai Distributed Memory Multicomputer.
Pada bagian ini yaitu pada rendering Film digunakan unit Komputasi parallel Distributed Memory Multicomputer. Hal ini dikarenakan computer yang digunakan untuk membuat rendering filmnya adalah Kluster Komputer. Kluster computer adalah proses menghubungkan beberapa computer agar dapat bekerja secara bersama-sama dengan sebuah jaringan sebagai media penghubungnya.
Komponen kluster biasanya saling terhubung dengan cepat melalui sebuah interkoneksi yang sangat capat, atau juga melalui jaringan local (LAN). Keuntungan memakai Kluster Komputer ini yaitu pemrosesan dapat dilakukan lebih cepat karena  mempunyai mesin-mesin yang masing-masing multiprocessor. Terdapat incremental Scalability dimana penambahan system-sistem baru dengan inkremen yang kecil. Dalam Kluster Komputer kegagalan yang terjadi di dalam satu node tidak berarti atau disebut dengan “Loss of service”. Dan yang terakhir yaitu biaya yang dibutuhkan lebih murah, hal ini dikarenakan Kluster computer dapat menghasilkan power komputasi yang sama atau lebih tinggi dari computer parallel sebenarnya.
3D Rendering merupakan salah satu proses yang sangat penting dalam melakukan pengolahan gambar 3D. Tanpa dirender suatu gambar yang diolah oleh perangkat lunak animasi 3D hanya akan tampil dalam bentuk kumpulan point dan wireframe sederhana. Proses render melakukan “pembungkusan” tekstur pada objek yang bersesuaian sesuai cahaya yang datang pada objek tersebut. Namun proses render membutuhkan daya komputasi yang sangat besar karena banyaknya titik koordinat yang harus dikomputasi, terutama jika data 3D yang diolah cukup rumit.
3D Rendering terdiri dari proses yang bertujuan untuk membentuk sebuah gambar dari sebuah model yang dibentuk oleh perangkat lunak animasi, model tersebut berisi data geometri, titik pandang, tekstur dan cahaya yang diperlukan untuk membuat gambar yang utuh.3D Rendering merupakan proses yang sangat penting dan telah digunakan untuk berbagai macam penggunaan, seperti program permainan komputer, efek spesial pada film dan program simulasi.
Salah satu cara untuk memecahkan masalah tersebut adalah dengan menggunakan algoritma Divide and Conquer yang diterapkan kedalam metode Komputasi Parallel. Divide and Conquer merupakan salah satu strategi algoritma yang memecah suatu masalah besar menjadi beberapa bagian untuk kemudian dikerjakan satu persatu. Dalam Komputasi Parallel tiap-tiap bagian dikerjakan oleh unit pemrosesannya masing-masing, sesuai dengan kesepakatan Divide pada awal komputasi. Komputasi Parallel terbukti jauh lebih efektif untuk melakukan rendering objek 3D dibanding hanya menggunakan sebuah unit komputasi. Sebagai contoh suatu perusahaan animasi asal Jepang, membutuhkan waktu 165 tahun jika proses render yang dilakukan untuk membuat animasi berdurasi 100 menit hanya menggunakan sebuah unit komputasi. Sedangkan ketika perusahaan tersebut menggunakan metode Komputasi Parallel, proses tersebut hanya membutuhkan waktu 1 tahun saja.
Salah satu masalah kompleks yang hingga kini masih membutuhkan kemampuan komputasi yang besar adalah melakukan proses render terhadap objek 3D. Proses render objek 3D sendiri membutuhkan waktu yang cukup lama, terlebih jika objek yang diberikan cukup rumit.
Sebenarnya operasi render objek 3D hanya merupakan kumpulan dari beberapa operasi primitif, namun operasi primitif yang dilakukan pada proses render sangatlah banyak. Untuk itu digunakan metode Komputasi Parallel sehingga tiap-tiap operasi primitif yang dilakukan dapat dikerjakan dengan menggunakan algoritma Divide and Conquer agar tiap bagian dari operasi Divide pada perhitungan yang dilakukan dapat dikerjakan oleh masing-masing unit komputasi. Beberapa operasi primitif yang digunakan dalam 3D Rendering adalah operasi penghitungan jarak antara 2 titik,operasi perkalian bilangan bulat yang besar. Tentunya hampir kesemua operasi primitif tersebut dapat dipecahkan dengan menggunakan algoritma Divide and Conquer sehingga menjadikan proses 3D Rendering sangat cocok untuk diselesaikan dengan algoritma Divide and Conquer.
Selain itu, perfilman yang mengandalkan spesial efek merupakan salah satu industri yang paling banyak mengandalkan HPC Cluster. Rangkaian film The Lord of the Ring yang akan diputar pada pertengahan Desember ini merupakan salah satu film yang paling banyak mengandalkan digital content creation (DCC) dan menuntut kapasitas pemrosesan yang besar untuk rendering gambar- gambar beresolusi tinggi dalam berbagai format.
WETA Digital, sebuah perusahaan animasi dan spesial efek yang bermarkas di Selandia Baru, membangun fasilitas render farm berbasis cluster hingga skalabilitas ribuan prosesor untuk mengerjakan film ini. Jika sekuel Lord of The Ring dikerjakan dengan personal computer (PC) yang tercepat saat ini, dibutuhkan waktu lebih dari 10 tahun untuk menyelesaikan proses rendering. Bagi para artis grafis 3D atau animator, hal yang paling menyita waktu adalah menunggu proses rendering.
Beberapa waktu lalu Pixar, sebuah studio 3D spesial efek membangun HPC Cluster baru berbasis 1.920 prosesor Intel Xeon untuk menggantikan mesin Sun Enterprise Render Server yang dipakai untuk produksi film Monster Inc.Oracle, vendor aplikasi database terkemuka telah mendukung teknologi cluster dengan meluncurkan Oracle 9i.
Berpikir sedikit optimistis, dengan dukungan ini setidaknya kita bisa mengevaluasi ulang kebutuhan kita membeli mainframe yang mahal untuk menjalankan aplikasi enterprise Anda dan menggantikan dengan mesin berbasis HPC Cluster. Dan mungkin, dengan sedikit percaya diri, mesin tersebut dapat merupakan produk rakitan sendiri. Selain dapat menjadi indikasi kegiatan riset dan pencapaian teknologi kepemilikan superkomputer, hal itu juga merupakan masalah prestisius bangsa. Salah satu proyek yang cukup ambisius tahun ini adalah RedGrid, sebuah supercluster RRC yang dibangun oleh Cray dengan prosesor AMD Opteron dan diprediksikan menjadi superkomputer nomor dua tercepat di dunia.
Di negara tetangga seperti Thailand, Malaysia, dan Singapura terdapat banyak sekali proyek HPC Cluster yang dibangun untuk kebutuhan riset dan industri. Bagaimana dengan Indonesia? Mungkin sampai saat ini belum ada satu lembaga penelitian atau universitas pun yang memiliki HPC Cluster. Pertanyaan perlu atau tidak merupakan hal yang relatif dan mengingat bahwa di negara kita hampir tidak ada riset teknologi maju ataupun dasar. Kecenderungan kita adalah membeli sebuah solusi jadi dan bukan know-how, membuat bangsa ini sangatlah sukar untuk maju secara teknis dalam bidang teknologi.
Pemodelan merupakan bagian yang terpenting dalam proses pembuatan gambar 3D dalam komputer. Dari model inilah semuanya bermula. Semakin baik dan presisi proses modeling semakin baik pula kualitas gambar/animasi yang dihasilkan. Pemodelan dapat dilakukan dengan alat bantu seperti digitizer 2D/3D atau scanner 3D maupun dibuat secara manual di komputer. Demi kecepatan dan ketelitian memang akan lebih baik jika kita menggunakan alat bantu, tetapi karena harga perangkat digitizer ini tidak dapat dibilang murah, maka pemodelan secara manual kadang menjadi pilihan yang paling tepat.
Objek-objek sederhana seperti bola, silinder, tube, prisma, kotak, limas, kerucut, dan benda geometris semacam ini biasanya telah disediakan fasilitas pembuatannya dalam program 3D Modelling komersial. Kita cukup menentukan parameter-parameter benda tersebut seperti koordinat pusat, tinggi, lebar, jari-jari, tebal dan lain-lain. Untuk bentuk-bentuk objek yang lebih kompleks, kita coba uraikan dengan maksud mencari kemungkinan pembuatannya dari operasi logika objek-objek geometri sederhana seperti di atas. Misalkan, bentuk barbel beban bulat, bisa dibentuk dari operasi logika ADD antara 2 buah bola dengan sebuah silinder. Bentuk manik kalung mutiara dapat dibuat dari operasi SUB antara objek bola dengan objek silinder. Masih ada lagi jenis logika yang dapat digunakan untuk pembentukan objek misalkan INTERSECTION yakni untuk membentuk objek yang merupakan pepotongan volume 2 buah benda 3 dimensi. Bentuk piring terbang misalnya, dapat dibuat dengan operasi INTERSECTION dari dua buah objek bola besar.
Untuk benda-benda yang lebih kompleks lagi, maka kita mengenal metoda lain yang dalam paket program Autodesk 3D Studio dikenal dengan nama Loftering. Objek 3D dapat dibentuk dengan proses loftering dari objek 2 dimensi yang telah ada. Objek 2D ini dapat dibuat dari bentuk bangun 2D dasar, digambar bebas (freehand), gabungan antara gambar bebas dan bentuk geometri dasar, maupun dibuat melalui persamaan-persamaan matematis.  Loftering secara awam dapat diartikan sebagai proses memberikan komponen ketebalan dari objek 2D menurut suatu path yang kita tentukan.
Proses pemberian ketebalan yang paling sederhana contohnya jika kita membuat suatu logo/teks dalam 2D, misalkan logo perusahaan, dan kita menginginkan memberikan ketebalan tertentu, maka dengan program Lofter cukup kita load objek 2D tersebut dan kita beri path garis lurus sepanjang ketebalan yang diinginkan dalam vektor arah ketebalan, lalu kita lakukan proses loftering. Maka jadilah objek 3D yang kita inginkan. Contoh variasi bentuk path lain yang dapat kita terapkan adalah lingkaran (untuk membuat objek putar misalnya pion catur seperti pada gallery), helix (membuat model DNA misalnya), spyline, dan lain-lain. Ini tergantuk kreativitas kita sendiri.
Fasilitas lain yang dapat membantuk kita memodelkan suatu benda adalah fasilitas deformasi, untuk mengisi keterbatasan path sederhana. Contoh deformasi adalah scaling (misalkan kita membuat terompet, maka ukuran irisan lingkaran pada ujung satu tentu akan berbeda dengan di ujung lainnya), beveling (memodifikasi sudut-sudut benda), rotation, leveling (misalkan untuk membuat benda yang ujungnya berupa bujur sangkar dan pangkalnya berbentuk lingkaran/bentuk 2D lainnya), dan lain-lain.
Dari pemodelan ini hasil akhirnya berupa meshes file yang berisikan informasi koordinat-kordinat vertex (titik sudut) suatu objek 3D serta wireframenya (rangka kawat yang menghubungkan antar titik sudut). Representasi objek dalam tahap ini masih berupa kerangka objek tersebut.
Objek 3D yang telah ada harus didefinisikan kembali propertiesnya, misalkan material penyusun objek itu (kadang-kadang berarti juga kita harus membuat materialnya), mapping/pemetaan ukuran pola material (misalkan material ubin marmer, maka harus kita definisikan berapa besar ubin marmer relatif terhadap objek yang akan diset dengan material tersebut). Material selain berisi pola material (optional), mencakup juga sifat-sifat transparansi, pemantulan cahaya, efek cermin, warna, sifat pendar, dan lain-lain.
Setelah objek kita berikan sifat-sifatnya, maka lingkungan objek juga harus didefinisikan. Pertama kita harus menentukan sifat lingkungan (berkabut tidaknya, sifat penyerapan cahaya oleh lingkungan), kemudian latar belakang lingkungan juga kita harus set yang dapat berupa warna/gradasi warna maupun berupa gambar. Pencahayaan menjadi hal yang penting juga karena merupakan komponen yang dijadikan dasar dalam melakukan rendering. Pencahayaan umumnya meliputi 3 jenis:
·         Cahaya Lingkungan
·         Cahaya Lampu Penerang
·         Cahaya Lamput Sorot
Dari sini juga kita tentukan apakah kita gunakan efek bayangan atau pun tidak. Lampu-lampu yang dipasang juga harus kita perhatikan letak, arah sorot dan lebar sorot(untuk lampu sorot), warna dan terangnya lampu.
Yang terakhir kita perlu juga untuk menentukan sudut pandang kita terhadap objek yang kita buat. Untuk ini kita perlu meletakkan kamera yang kita gunakan untuk melihat. Properties dari kamera ini meliputi letak, arah sorot, ukuran lensa, dan lain-lain. Pandangan kamera ini yang akan kita gunakan untuk merepresentasikan objek dalam hasil rendering.
Untuk mendapatkan hasil rendering yang berupa file animasi (gambar bergerak) maka kita perlu menentukan pergerakan 3 unsur pembentuk gambar 3D yakni objek, lampu, dan kamera.Gambar bergerak/animasi sebenarnya adalah kumpulan gambar-gambar diam yang ditampilkan secara sekuensial dalam kecepatan tertentu (misalkan 25 gambar per menit). Untuk mendapatkan kumpulan gambar-gambar itu, maka kita mendefinisikan dulu berapa gambar yang ingin kita buat. Untuk kecepatan gambar yang normal (dengan tidak mengorbankan kemulusan gerak) biasanya berkisar 30 gambar per detik. Jadi jika kita membuat animasi sepanjang 5 detik paling tidak dibutuhkan 150 gambar.
Posisi ketiga unsur pembentuk gambar 3D di atas pada setiap gambarnya (lebih sering kita sebut frame) secara sederhana ditentukan dengan mengeset posisi awal dan posisi akhir ketiga unsur tersebut dalam setiap range urutan gambar. Frame yang menjadi acuan baik posisi awal dan posisi akhir 3 unsur di atas sering dinamakan dengan keyframe.
Dengan didefinisikannya seluruh gerak dari 3 unsur di atas, maka sampailah kita pada langkah terakhir yang membutuhkan kerja keras perangkat lunak dan perangkat keras komputer. Pada proses ini komputer akan menerjemahkan pixel per pixel yang merepresentasikan proyeksi/pandangan dari dunia 3 dimensi yang telah kita buat menjadi sebuah gambar bitmap utuh dengan ukuran dan resolusi yang kita tentukan. Ada banyak metoda rendering yang menentukan bagaimana representasi ketiga komponen tersebut pada pixel gambar, misalnya wireframe, flat, gourad, phong, metalic, dan lain-lain yang akan kita bahas secara lebih detail pada artikel terpisah.
Untuk rendering gambar diam, hanya dibutuhkan rendering 1 frame saja, sementara untuk gambar bergerak, kita mestilah lebih sabar, karena komputer harus melakukan rendering untuk seluruh gambar/frame yang kita telah tentukan.

Terdapat banyak hasil yang dapat diperoleh dan ditampilkan dari proses 3D Rendering pada suatu sketsa wireframe, diantaranya :
1.      Shading ; “Variasi warna dan kecerahan yang timbul pada suatu permukaan berdasarkan pencahayaan yang dilakukan”
2.      Texture-Mapping ; “Detail yang muncul pada suatu permukaan”
3.      Bump-Mapping ; “Kontur yang muncul pada suatu permukaan”
4.    Fogging / Participating Medium ; “Bagaimana berkas cahaya berubah jika melewati udara yang tidak murni”
5.      Shadows ; “Efek dari cahaya yang terhalang”
6.      Soft Shadows ; “Variasi efek dari cahaya yang terhalang tidak sempurna”
7.      Reflection ; “Refleksi yang tampak pada permukaan kaca atau gelas”
8.      Transparency ; “Transmisi cahaya yang berbeda-beda jika melewati medium tertentu”
9.  Translucency ; “Transmisi cahaya yang berbeda-beda jika memantul pada medium tertentu”
10.  Refraction ; “Cahaya yang berubah arahnya karena efek transparency”
11.  Indirect Illumination ; “Cahaya yang datang pada suatu objek namun tidak berasal dari sumber cahaya yang sebenarnya melainkan refleksi dari permukaan objek lain”
12.  Caustics ; “Pantulan cahaya menyilaukan yang timbul pada suatu objek”
13. Depth Of Field ; “Objek yang berada jauh di depan maupun di belakang objek yang menjadi fokus akan tampak buram”
14. Motion Blur ; “Objek yang bergerak dengan kecepatan tinggi atau objek yang direkam oleh kamera yang berada dalam kecepatan tinggi akan tampak buram”
15. Photorealistic Morphing ; “Teknik yang memungkinkan hasil proses render objek 3D menjadi tampak terlihat lebih nyata”
16.  Non-Photorealistic Rendering ; “Teknik yang memungkinkan hasil proses render objek 3D menjadi terlihat seperti hasil lukisan atau gambar”
 
Melakukan 3D Rendering tentu akan merupakan masalah yang sangat merepotkan jika tidak menggunakan algoritma memadai, dikarenakan banyaknya point dan polygon yang harus dikalkulasi setiap proses. Penggunaan algoritma Divide and Conquer tentu sangat membantu agar pekerjaan penghitungan yang sangat banyak dalam proses render dapat dikerjakan oleh beberapa unit komputasi sekaligus secara bersamaan. Hal ini juga telah dibuktikan dengan banyaknya perusahaan animasi dan film yang sering melakukan pekerjaan proses render menggunaan sistem komputasi paralel di dalam perusahaan mereka.


Sumber:
http://id.wikipedia.org/wiki/Komputasi_paralel
https://computing.llnl.gov/tutorials/parallel_comp/
https://dsitompul.files.wordpress.com/2008/11/komputasi-paralel3.doc
http://www.scribd.com/doc/32982265/Parallel-Processing
http://www.gudangmateri.com/2009/12/pemrosesan-paralel.html
http://yanboyz.blogspot.com/2009/07/teori-komputasi-parallel-untuk.html
http://backtocampus.zulhipni.web.id/?p=14
http://mahadisuta.blogspot.com/2012/12/implementasi-komputasi-paralel-dalam.html
 

Sabtu, 20 April 2013

Sejarah Komputasi Modern


Tonggak sejarah awal dari komputasi modern, adalah dengan diciptakannya computer dengan menggunakan arsitektur Von Neumann (lihat artikel saya sebelumnya). Namun, banyak tokoh yang bisa kita angkat dan sebagian diantaranya juga dianggap sebagai bapak komputasi modern, seperti halnya Von Neumann (nama yang paling sering saya temukan di google ketika mencari bahan untuk artikel ini).

Salah satunya adalah nama George stibitz. George Stibitz secara internasional diakui sebagai ayah dari komputer digital modern. Sementara bekerja di laboratorium Bell di November 1937, Stibitz menciptakan dan membangun sebuah relay berbasis kalkulator ia dijuluki sebagai “model k” (k disini maksudnya untuk “kitchen table/meja dapur”, yang merupakan tempat dimana ia membuat relay tersebut). Penemuannya tersebut menjadikan ia sebagai orang pertama yang menggunakan sirkuit biner untuk melakukan operasi aritmatika.

Tonggak berikutnya di bawa oleh Von Neumann. Von Neumann dilahirkan di Budapest, ibu kota Hungaria, pada 28 Desember 1903 dengan nama Neumann Janos. Di tahun 1926 pada umur 22 tahun, Von Neuman lulus dengan dua gelar yaitu gelar S1 pada bidang teknik kimia dari ETH dan gelar doktor (Ph.D) pada bidang matematika dari Universitas Budapest. Von Neumann sangat tertarik pada hidrodinamika dan kesulitan penyelesaian persamaan diferensial parsial nonlinier yang digunakan, Von Neumann kemudian beralih dalam bidang komputasi. Von Neumann menjadi seorang konsultan pada pengembangan komputer ENIAC, dia merancang konsep arsitektur komputer yang masih dipakai sampai sekarang. Arsitektur Von Nuemann adalah seperangkat komputer dengan program yang tersimpan (program dan data disimpan pada memori) dengan pengendali pusat, I/O, dan memori.

Arsitektur ini digunakan oleh hampir semua komputer saat ini. Arsitektur Von Neumann menggambarkan komputer dengan empat bagian utama: Unit Aritmatika dan Logis (ALU), unit kontrol, memori, dan alat masukan dan hasil (secara kolektif dinamakan I/O). Bagian ini dihubungkan oleh berkas kawat, “bus”.

Macam-macam komputasi modern:
Untuk mengetahui jenis-jenis dari komputasi modern, kita harus mengetahui dahulu karakteristik dari komputasi modern.
Karakteristik komputasi modern ada 3 macam, yaitu :
1. Komputer-komputer penyedia sumber daya bersifat heterogenous karena terdiri dari berbagai jenis perangkat keras, sistem operasi, serta aplikasi yang terpasang.
2. Komputer-komputer terhubung ke jaringan yang luas dengan kapasitas bandwidth yang beragam.
3. Komputer maupun jaringan tidak terdedikasi, bisa hidup atau mati sewaktu-waktu tanpa jadwal yang jelas.

Berikut merupakan contoh dari jenis-jenis komputasi modern:
1. Mobile Computing atau Komputasi Bergerak
Mobile computing (komputasi bergerak) merupakan kemajuan teknologi komputer sehingga dapat berkomunikasi menggunakan jaringan tanpa menggunakan kabel serta mudah dibawa atau berpindah tempat, tetapi berbeda dengan komputasi nirkabel.
2. Grid Computing
Komputasi grid memanfaatkan kekuatan pengolahan idle berbagai unit komputer, dan menggunakan kekuatan proses untuk menghitung satu pekerjaan.
3. Cloud Computing atau Komputasi Awan
Cloud computing adalah perluasan dari konsep pemrograman berorientasi objek abstraksi. Abstraksi, sebagaimana dijelaskan sebelumnya, menghapus rincian kerja yang kompleks dari visibilitas. Komputasi awan adalah sebuah paradigm baru dari konsep yang sebenarnya sudah ada. Beberapa aplikasi yang sangat akrab dari cloud computing adalah icloud (produk dari Apple) dimana user menyimpan data-data phonebook mereka di server Apple, bukan lagi di handphone mereka. Selain contoh it ada juga contoh dari satu provider Indonesia XL, yaitu XL Klik, dimana dengan menginstall XL Klik User sudah dapat menikmati beberapa aplikasi jejaring social, yang sebenarnya aplikasi itu terinstall di server XL, bukan di handphone mereka. Sehingga mereka bisa merasakan hp mereka seperti handphone yang jauh lebih pintar dan mahal.

 Sumber :