Pemrosesan paralel (parallel processing) adalah metode dalam komputasi yang memungkinkan dua atau lebih prosesor, atau CPU, bekerja secara bersamaan untuk menangani bagian-bagian terpisah dari suatu tugas secara keseluruhan. Memecah tugas menjadi beberapa bagian di antara beberapa prosesor membantu mengurangi waktu yang dibutuhkan untuk menjalankan suatu program. Sistem apa pun yang memiliki lebih dari satu CPU dapat melakukan pemrosesan paralel, termasuk prosesor multi-core yang umum ditemukan pada komputer saat ini.

Prosesor multi-core adalah chip sirkuit terpadu yang berisi dua atau lebih prosesor untuk meningkatkan kinerja, mengurangi konsumsi daya, dan meningkatkan efisiensi dalam pemrosesan beberapa tugas. Konfigurasi multi-core ini seperti memiliki beberapa prosesor terpisah yang terpasang dalam satu komputer. Sebagian besar komputer saat ini memiliki dua hingga 12 core.

Pemrosesan paralel umumnya digunakan untuk menangani tugas dan perhitungan yang kompleks. Data scientist sering menggunakan pemrosesan paralel untuk pengaturan data dan tugas yang memerlukan komputasi intensif.

Cara kerja pemrosesan paralel

Pemrosesan paralel membagi suatu tugas di antara dua atau lebih mikroprosesor. Biasanya, tugas yang kompleks dibagi menjadi beberapa bagian menggunakan alat perangkat lunak khusus yang menetapkan setiap bagian ke prosesor berdasarkan elemen komponen tugas tersebut. Tugas yang lebih besar dipecah menjadi bagian yang lebih kecil sesuai dengan jumlah, jenis, dan ukuran unit pemrosesan yang tersedia. Kemudian, masing-masing prosesor menyelesaikan bagiannya, dan perangkat lunak mengumpulkan serta mengeksekusi tugas tersebut.

Setiap prosesor bekerja secara independen sesuai instruksi yang diberikan, mengambil data dari memori komputer. Prosesor juga bergantung pada perangkat lunak untuk berkomunikasi satu sama lain agar tetap sinkron dalam memperbarui nilai data. Dengan asumsi semua prosesor tetap sinkron, pada akhir tugas, perangkat lunak menyusun kembali semua bagian data.

Pemrosesan paralel dapat dibagi menjadi dua kategori utama: fine-grained dan coarse-grained. Pada pemrosesan paralel fine-grained, tugas-tugas saling berkomunikasi berkali-kali. Metode ini cocok untuk proses yang memerlukan data waktu nyata. Sementara itu, pemrosesan paralel coarse-grained menangani bagian tugas yang lebih besar dan memerlukan komunikasi yang lebih jarang antara prosesor, sehingga lebih cocok untuk aplikasi dengan ketergantungan minimal antar tugas.

Komputer tanpa banyak prosesor juga masih dapat melakukan pemrosesan paralel jika dihubungkan dalam jaringan untuk membentuk sebuah cluster.

Jenis-jenis pemrosesan paralel

Ada beberapa jenis pemrosesan paralel, termasuk:

  • Single instruction multiple data (SIMD). Sebuah komputer memiliki dua atau lebih prosesor yang mengikuti satu set instruksi yang sama, sementara masing-masing prosesor menangani data yang berbeda. SIMD sering digunakan untuk menganalisis kumpulan data besar yang berbasis parameter tertentu.
  • Multiple instruction multiple data (MIMD). Dalam jenis pemrosesan paralel yang umum digunakan ini, setiap komputer memiliki dua atau lebih prosesor yang menjalankan instruksi berbeda dan menerima data dari aliran data yang terpisah.
  • Multiple instruction single data (MISD). Setiap prosesor menggunakan instruksi yang berbeda dengan input data yang sama secara bersamaan. Jenis pemrosesan ini jarang digunakan.
  • Single program multiple data (SPMD). Beberapa prosesor menjalankan tugas yang sama tetapi menangani kumpulan data yang berbeda. Pemrosesan ini biasanya digunakan dalam simulasi, pemrosesan data, atau algoritma paralel.
  • Massively parallel processing (MPP). MPP menggunakan banyak prosesor untuk menjalankan tugas yang terkoordinasi secara paralel. Sistem ini dapat menggunakan ratusan hingga ribuan prosesor yang masing-masing menangani bagian dari tugas secara independen. Pemrosesan ini digunakan untuk menyelesaikan masalah besar dan kompleks yang tidak dapat diselesaikan dengan jumlah prosesor yang lebih sedikit.

Perbedaan antara Pemrosesan Serial dan Paralel

Pemrosesan paralel dapat menyelesaikan banyak tugas secara bersamaan menggunakan dua atau lebih prosesor, sedangkan pemrosesan serial — juga disebut pemrosesan berurutan — hanya menyelesaikan satu tugas dalam satu waktu menggunakan satu prosesor. Jika sebuah komputer harus menyelesaikan beberapa tugas yang diberikan, komputer dengan pemrosesan serial akan menyelesaikan satu per satu. Begitu pula, jika komputer dengan pemrosesan serial harus menangani tugas yang kompleks, waktu yang dibutuhkan akan lebih lama dibandingkan dengan komputer yang menggunakan pemrosesan paralel.

Sejarah Pemrosesan Paralel

Pada komputer awal, hanya satu program yang dapat berjalan dalam satu waktu. Sebagai contoh, jika ada program perhitungan yang memerlukan satu jam untuk selesai dan program penyalinan pita yang juga membutuhkan satu jam, maka total waktu yang dibutuhkan adalah dua jam.

Bentuk awal dari pemrosesan paralel memungkinkan kedua program berjalan secara bergantian. Komputer akan memulai operasi input/output (I/O), dan sambil menunggu operasi tersebut selesai, komputer menjalankan program yang membutuhkan banyak pemrosesan. Dengan cara ini, waktu eksekusi total untuk kedua program dapat dikurangi menjadi sedikit lebih dari satu jam.

Perkembangan berikutnya adalah sistem multiprogramming pada akhir 1950-an dan awal 1960-an. Dalam sistem ini, beberapa program dari pengguna bisa menggunakan prosesor secara bergantian dalam waktu yang sangat singkat. Bagi pengguna, sistem ini terlihat seperti semua program berjalan secara bersamaan. Namun, masalah baru muncul, seperti persaingan dalam penggunaan sumber daya. Salah satu tantangan terbesar adalah masalah deadlock, di mana beberapa program yang meminta sumber daya secara bersamaan bisa saling menghalangi, sehingga tidak ada yang dapat melanjutkan proses. Selain itu, muncul kebutuhan akan mekanisme penanganan konflik dalam penggunaan sumber daya bersama, yang dikenal sebagai rutinitas bagian kritis (critical section).

Pada tahun 1964, pengolahan vektor (vector processing) diperkenalkan untuk meningkatkan kinerja dengan memproses lebih dari satu data dalam satu waktu. Teknologi ini memungkinkan sebuah mesin menjalankan satu instruksi untuk menambah, mengurangi, mengalikan, atau memanipulasi dua array angka sekaligus. Ini sangat berguna dalam aplikasi teknik yang melibatkan data berbentuk vektor atau matriks. Namun, dalam aplikasi dengan struktur data yang kurang terorganisir, pemrosesan vektor kurang efektif.

Langkah selanjutnya dalam pemrosesan paralel adalah munculnya multiprocessing pada tahun 1970-an. Sistem ini memungkinkan dua atau lebih prosesor berbagi pekerjaan secara bersamaan. Pada awalnya, sistem multiprocessing menggunakan konfigurasi utama dan sekunder, di mana prosesor utama menangani semua tugas utama dalam sistem, sementara prosesor sekunder hanya menjalankan tugas yang diberikan oleh prosesor utama. Hal ini disebabkan oleh keterbatasan dalam pemrograman sistem agar prosesor dapat bekerja sama dalam mengelola sumber daya. Seiring waktu, teknologi multiprocessing terus berkembang pada tahun 1980-an, 1990-an, dan seterusnya.

Pada awal 2000-an, komputasi terdistribusi mulai berkembang, memungkinkan beberapa komputer independen bekerja sama dalam menyelesaikan suatu tugas, meskipun tanpa berbagi memori secara langsung.

Sejak awal 2000-an dan seterusnya, penggunaan unit pemrosesan grafis (GPU) juga semakin meningkat. GPU terdiri dari banyak unit pemrosesan kecil yang disebut inti (cores). Setiap inti dapat menjalankan instruksinya sendiri secara independen, yang memungkinkan pemrosesan paralel. Kini, GPU tidak hanya digunakan untuk pemrosesan grafis, tetapi juga untuk berbagai tugas komputasi lainnya.

Sejak saat itu, perkembangan baru telah muncul, seperti akselerator perangkat keras khusus, termasuk field-programmable gate arrays (FPGA) dan application-specific integrated circuits (ASIC), yang dirancang untuk mempercepat pemrosesan dalam tugas-tugas pemrosesan paralel tertentu.

Baru-baru ini, berbagai organisasi mulai menerapkan komputer kuantum yang berfokus pada pengembangan prosesor paralel kuantum, yang menggunakan qubit untuk melakukan komputasi.

SMP dan MPP

Symmetric multiprocessing (SMP) dan massively parallel processing (MPP) adalah dua metode pemrosesan paralel yang sering dibandingkan.

  • SMP. Beberapa prosesor berbagi satu sistem operasi (OS) dan memori yang sama. Semua prosesor menggunakan bus I/O atau jalur data yang sama, dan satu salinan OS mengelola semua prosesor.
  • MPP. Teknik pemrosesan yang menggunakan banyak prosesor yang bekerja pada bagian tugas yang berbeda, dengan masing-masing prosesor memiliki OS dan memorinya sendiri. Biasanya, prosesor MPP berkomunikasi melalui antarmuka pesan.

Pada sistem SMP, setiap prosesor memiliki kemampuan yang sama dan bertanggung jawab dalam mengatur alur kerja dalam sistem. Awalnya, tujuan utama dari sistem SMP adalah membuatnya tampak bagi pemrogram sebagai sistem pemrosesan tunggal. Namun, para insinyur menemukan bahwa kinerja dapat meningkat 10%-20% dengan mengeksekusi beberapa instruksi di luar urutan (out-of-order execution), meskipun hal ini menambah kompleksitas pemrograman. Masalah ini hanya muncul jika dua atau lebih program secara bersamaan membaca dan menulis operand yang sama, sehingga hanya segelintir pemrogram yang perlu menangani kompleksitas tambahan ini dalam situasi tertentu.

Seiring bertambahnya jumlah prosesor dalam sistem SMP, waktu propagasi data antar bagian sistem juga meningkat. Ketika jumlah prosesor mencapai puluhan, manfaat menambahkan lebih banyak prosesor menjadi kurang signifikan dibandingkan dengan biayanya. Untuk mengatasi masalah ini, sistem pengiriman pesan (message passing) dikembangkan. Dalam sistem ini, program yang berbagi data akan mengirim pesan satu sama lain untuk memberi tahu jika ada perubahan nilai operand. Alih-alih menyiarkan nilai operand baru ke seluruh sistem, nilai baru hanya dikirimkan ke program yang membutuhkannya. Dengan pendekatan ini, sistem tidak lagi berbagi memori secara langsung, melainkan menggunakan jaringan untuk mengirim pesan antar program. Penyederhanaan ini memungkinkan ratusan hingga ribuan prosesor bekerja sama secara efisien dalam satu sistem. Oleh karena itu, sistem ini disebut massively parallel processing systems (MPP).

Aplikasi MPP paling sukses digunakan dalam pemrosesan data dalam jumlah besar, di mana tugas dapat dibagi menjadi banyak operasi terpisah yang dapat berjalan secara independen. Dalam data mining, misalnya, sistem perlu melakukan banyak pencarian dalam database statis. Dalam kecerdasan buatan (AI), ada kebutuhan untuk menganalisis banyak kemungkinan solusi, seperti dalam permainan catur. Umumnya, sistem MPP disusun dalam bentuk kluster prosesor. Di dalam setiap kluster, prosesor bekerja seperti dalam sistem SMP, sementara komunikasi antar kluster dilakukan melalui pesan. Karena operand dapat diakses baik melalui pesan maupun alamat memori, beberapa sistem MPP disebut sebagai mesin NUMA (non-uniform memory access).

Mesin SMP lebih mudah diprogram dibandingkan dengan MPP. Sistem SMP cocok untuk berbagai jenis permasalahan, selama jumlah data yang diproses tidak terlalu besar. Namun, untuk masalah yang melibatkan data dalam jumlah sangat besar, seperti pencarian dalam database skala besar, hanya sistem MPP yang mampu menangani tugas tersebut secara efisien.

CPU dan GPU modern sama-sama mampu menjalankan beban kerja AI secara paralel. Pelajari perbandingan keduanya dalam konteks ini.

Tinggalkan Balasan

Alamat email Anda tidak akan dipublikasikan. Ruas yang wajib ditandai *