Selasa, 20 April 2010

Komputasi Kinerja Tinggi

Komputasi Kinerja Tinggi

Komputasi Kinerja Tinggi (high performance computing), adalah sistem komputer yang dibangun agar mampu menyelesaikan beban komputasi yang tak terkira beratnya dalam waktu yang masih bisa diterima.

Teknik Komputasi Kinerja Tinggi

Untuk mempersingkat waktu perhitungan ini, ada dua cara umum yakni:
1. Membuat prosesor yang lebih cepat.
2. Melakukan kalkulasi secara paralel dengan banyak prosesor.
Untuk cara pertama, jalur elektronik prosesor harus diperkecil agar sinyal mengalir makin pendek dan arus makin kecil. Sayangnya, teknologi manufaktur semikonduktor saat ini masih memakai teknik litografi dan sudah mendekati limitnya. Sebagai informasi, chip prosesor terkini (Intel i7) telah mencapai skala 45 nano meter. Jika diperkecil lagi, kemungkinan kesalahan dalam proses manufaktur membesar sehingga keandalannya makin turun.
Dengan demikian, harapan mempercepat komputasi yang masih terbuka lebar hanyalah dengan cara paralelisme. Pada paradigma ini, algoritma program harus dipecah menjadi beberapa lajur (thread) yang bisa dikerjakan secara bersamaan. Masing-masing lajur akan dikerjakan oleh satu prosesor, dan nanti hasil akhirnya dikumpulkan kembali. Secara teoritis, jika sebuah beban mampu diselesaikan oleh satu prosesor dalam waktu T, maka N buah prosesor akan mampu menyelesaikannya dalam waktu T/N.
Untuk mewujudkan komputasi paralel, diperlukan dukungan perangkat keras yang menyediakan banyak prosesor, dan juga sistem operasi untuk membagi beban komputasi ke seluruh prosesor tersebut. Sistem ini ternyata tidak mudah, sehingga pada awalnya, komputasi paralel hanya bisa dinikmati oleh sistem yang mahal dan besar seperti komputer super. Untunglah dengan berkembangnya jaman, komputasi paralel mulai bisa ditemukan pada komputer biasa.

Multiprocessor dan Multicore

Pada pasar PC, implementasi awal paralelisme adalah dengan memasang banyak CPU dalam satu komputer (multi-processor) (misal komputer dengan dual Pentium Pro). Kini, hal ini juga dicapai dengan memperbanyak jumlah prosesor dalam satu CPU (multi-core), mulai dari dual core dan kini quad core (misal Intel Xeon, Intel i7, AMD Phenom). Untuk komputer multi-processor atau multi-core ini, sistem operasi modern menyediakan fasilitas multithreading, atau symetric multi processing (SMP). Linux telah mendukung hal ini dari awal, sementara Windows memilikinya sejak Windows NT. Untuk melakukan pemrograman paralel pada sistem ini, bisa digunakan OpenMP.

Kluster komputer

Cara lebih kolosal untuk memperbanyak jumlah prosesor adalah dengan membangun komputer kluster. Pada sistem ini beberapa komputer dikoneksikan melalui jaringan, sehingga dapat bergotong royong menghitung beban komputasi. Salah satu model adalah sistem Beowulf, yang dapat dibangun dari komputer biasa dan dikoordinasi dengan sistem operasi Linux. Sebuah kluster Beowulf bisa memiliki hingga 1024 node, sehingga secaar teoritis, contoh kasus simulasi molekular sebelumnya bisa dihitung dalam waktu sekitar 1 minggu. Kekurangannya, sistem kluster ini besar, mahal dan sulit pembangunan maupun pemeliharaannya. Untuk sistem kluster, sistem operasi biasanya harus dilengkapi dengan perangkat madya (middle ware) yang menyediakan komunikasi antar proses melalui jaringan. Beberapa perangkat madya terkenal adalah Parallel Virtual Machine (PVM) atau Message Passing Interface (MPI).

GPGPU

Sementara itu dari jalan lain, berkembang teknologi Graphics Processing Unit (GPU) yang aslinya bertugas membantu CPU (sebagai co-processor) untuk mempercepat tampilan 3 dimensi (3D). GPU memiliki arsitektur khusus guna memproses pixel-pixel grafik secara parallel. Di dorong oleh kebutuhan KKT, maka GPU didorong menjadi General Purpose Graphics Processing Unit (GPGPU) yang juga dapat melakukan perhitungan matematis secara umum. Saat ini, GPU termaju (misal NVIDIA GTX 285) memiliki 240 core, dan dapat digabung hingga 3 buah GPU dalam satu komputer (3 way SLI). Jelas bahwa GPU merupakan cara memperbanyak core yang lebih murah dan ringkas dibanding dengan komputer kluster. Dukungan perangkat lunak untuk GPU paling hangat saat ini adalah CUDA, namun dalam waktu dekat, nampaknya akan muncul OpenCL.

Daftar Pustaka
1. Phillips, James; High Performance Computing with CUDA - Case Study: Molecular Dynamics; Super Computing Workshop; 2007