Apa itu Komputasi Paralel?

Misalkan Anda memiliki banyak pekerjaan yang harus dilakukan, dan ingin menyelesaikannya lebih cepat, sehingga Anda mempekerjakan 100 pekerja. Jika pekerjaannya adalah 100 pekerjaan terpisah yang tidak saling bergantung, dan mereka semua mengambil jumlah waktu yang sama dan dapat dengan mudah dibagikan kepada para pekerja, maka Anda akan menyelesaikannya 100 kali lebih cepat. Ini sangat mudah sehingga disebut paralel memalukan. Hanya karena itu memalukan, bukan berarti Anda tidak boleh melakukannya, dan mungkin itulah yang seharusnya Anda lakukan. Opsi yang berbeda adalah memparalelkan setiap pekerjaan, seperti yang dibahas di bawah ini, dan kemudian menjalankan paralelisasi ini satu demi satu. Namun, seperti yang akan ditunjukkan, ini mungkin cara yang kurang efisien dalam melakukan pekerjaan. Kadang-kadang ini tidak benar karena pada komputer, melakukan semua pekerjaan pada satu prosesor mungkin memerlukan menyimpan banyak hasil pada disk, sedangkan pekerjaan paralel dapat menyebarkan hasil antara dalam RAM dari prosesor yang berbeda. RAM jauh lebih cepat daripada disk. Namun, jika program tidak menghabiskan banyak waktu menggunakan disk maka paralel yang memalukan adalah cara cerdas untuk melakukannya. Anggaplah ini yang harus Anda lakukan kecuali Anda menganalisis situasi dan menentukan bahwa itu bukan. Paralel yang memalukan itu sederhana, dan jika Anda bisa membuat pekerja melakukannya secara gratis maka itu adalah solusi termurah juga.

Bagaimana jika pekerjaan itu mengambil jumlah waktu yang sangat berbeda, tetapi masih belum berinteraksi? Jika Anda sudah cukup banyak, mulailah membagikannya sampai setiap pekerja memilikinya, dan kemudian ketika pekerja sudah selesai mereka kembali dan meminta yang lain. Ini akan bekerja dengan cukup baik, terutama jika Anda dapat menempatkan pekerjaan lebih lama lebih dulu dan lebih pendek nanti. Bentuk paralelisasi ini masih cukup sederhana (kecuali remaja yang melakukan pekerjaan - lihat "Apakah Remaja Layak Upah Negatif?"). Banyak komputer departemen yang memiliki lebih dari satu prosesor berjalan dengan cara ini, melayani pekerjaan saat mereka tiba. Ini juga berapa banyak maskapai yang menjalankan antrian check-in mereka: dalam teori antrian, ini dikenal sebagai sistem "satu server multi antrian", yang lebih efisien daripada sistem "beberapa server antrian ganda" yang umum digunakan di jalur checkout di toko bahan makanan.

Misalkan saja pekerjaan yang Anda miliki ini hanya satu pekerjaan, tetapi itu membutuhkan waktu yang sangat lama. Sekarang Anda harus melakukan sesuatu untuk mengatur kembali pekerjaan, entah bagaimana memecahnya menjadi bagian-bagian yang dapat dilakukan bersamaan. Misalnya, jika pekerjaan itu adalah membangun rumah, itu dapat dipecah menjadi pipa ledeng, listrik, dll. Namun, sementara banyak pekerjaan dapat dilakukan pada waktu yang sama, beberapa memiliki pesanan khusus, seperti meletakkan fondasi sebelum dinding bisa naik. Jika semua pekerja ada di sana sepanjang waktu, maka akan ada periode ketika sebagian besar dari mereka hanya menunggu untuk menyelesaikan beberapa tugas (seperti yayasan). Tidak terlalu hemat biaya, dan Anda tidak menyelesaikan pekerjaan 100 kali lebih cepat. Begitulah kehidupan programmer paralel.

Definisi: Komputasi paralel adalah penggunaan dua atau lebih prosesor (core, komputer) dalam kombinasi untuk memecahkan satu masalah.

Programmer harus mencari cara untuk memecahkan masalah menjadi potongan-potongan, dan harus mencari tahu bagaimana potongan saling berhubungan. Misalnya, program paralel untuk bermain catur mungkin melihat semua gerakan pertama yang mungkin dilakukan. Setiap langkah pertama yang berbeda dapat dieksplorasi oleh prosesor yang berbeda, untuk melihat bagaimana permainan akan berlanjut dari titik itu. Pada akhirnya, hasil ini harus digabungkan untuk mencari tahu mana langkah pertama yang terbaik. Sebenarnya, situasinya bahkan lebih rumit, karena jika program melihat ke depan beberapa gerakan, maka start yang berbeda dapat berakhir pada posisi dewan yang sama. Agar efisien, program harus melacak ini, sehingga jika satu prosesor sudah mengevaluasi posisi itu, maka yang lain tidak akan membuang waktu menduplikasi upaya. Beginilah cara kerja sistem bermain catur paralel, termasuk mesin IBM Deep Blue yang terkenal yang mengalahkan Kasparov.

Apakah Komputasi Paralel Lebih Mudah atau Lebih Keras dari pada Serial Computing?
(Komputasi standar juga dikenal sebagai "komputasi serial", jadi Anda telah melakukan komputasi serial selama bertahun-tahun!)

Sederhananya:
Sebagian besar alam semesta secara paralel paralel, dengan banyak hal terjadi secara bersamaan. Anda bisa mengenakan celana Anda pada satu kaki pada satu waktu, tetapi jutaan orang mengenakan celana mereka secara bersamaan. Banyak masalah memiliki banyak paralelisme alami yang dapat dieksploitasi oleh seorang programmer. Kadang-kadang orang dipaksa untuk memikirkan kembali masalah ketika mereka mencoba mengembangkan program paralel, dan mereka mengubah seluruh pendekatan mereka untuk secara langsung memanfaatkan paralelisme yang melekat

Lebih lanjut:
Performa buruk terang-terangan: lebih mudah untuk melihat bahwa Anda tidak melakukannya dengan baik. Pada komputer serial prosesor mungkin menunggu saat memindahkan data dari RAM ke cache, tetapi pada dasarnya tampak sibuk sepanjang waktu dan hanya setelah Anda melakukan analisis yang lebih rinci Anda menentukan bahwa itu sebenarnya berkinerja buruk (lihat "Menggunakan Cache Hemat Uang Tunai "). Pada komputer paralel 100 prosesor kebanyakan orang dengan cepat memperhatikan bahwa suatu program tidak berjalan 100 kali lebih cepat. Program serial mungkin tidak terlalu baik (lihat "Mengapa Ahli Algoritma Layak Menghasilkan Banyak Uang") tetapi umumnya tidak sejelas fakta bahwa banyak prosesor paralel sering menganggur.

Sedikit pengalaman: sebagian besar programmer memiliki sedikit atau tidak sama sekali pengalaman dengan komputasi paralel, dan ada beberapa program paralel untuk menggunakan di luar rak atau bahkan contoh yang baik untuk menyalin. Karenanya orang sering harus menemukan kembali roda paralel (lihat "Paralelisme membutuhkan Kelas untuk Misa"). Orang-orang yang mengembangkan perangkat lunak sistem paralel sama di belakang pada kurva belajar mereka. Seringkali mereka menggunakan kembali bahan yang dikembangkan untuk sistem serial, bahkan ketika itu menyebabkan masalah kinerja (lihat "Dosa Serial dalam Dunia Paralel").

Portabilitas yang buruk: suatu program dapat bekerja pada satu mesin, tetapi ketika program tersebut porting ke mesin baru mungkin sangat berbeda sehingga perubahan drastis perlu dilakukan hanya untuk memungkinkan program untuk dijalankan. Sebagian besar komputer serial memiliki organisasi dasar yang sama, tetapi ini tidak berlaku untuk komputer paralel. Beberapa komputer paralel, seperti sistem cluster populer, pada dasarnya hanyalah kumpulan komputer yang dihubungkan bersama dengan Ethernet. Mereka menggunakan perintah sederhana, mirip dengan membaca dan menulis, untuk berkomunikasi di antara prosesor. (Sistem yang paling umum untuk melakukan komunikasi ini adalah MPI.) Komputer paralel tersebut dikenal sebagai sistem penyampaian pesan, atau komputer memori terdistribusi. Cluster biasanya cukup murah karena dibangun dari bagian-bagian komoditas, dan telah menjadi sangat umum di bisnis dan universitas. Komputer memori terdistribusi dengan kinerja yang lebih baik memiliki interkoneksi yang lebih cepat di antara prosesor, dan perangkat lunak yang lebih baik disetel untuk mendukung paralelisme, tetapi ini meningkatkan biaya karena banyak bagian yang lebih non-standar.

Komputer paralel lain, seperti beberapa sistem besar dari Cray atau papan ganda soket tunggal dari Intel dan lainnya, adalah sistem memori bersama, di mana setiap prosesor dapat secara langsung membaca dan menulis data dari setiap lokasi memori. Anggap ini seperti semua orang menggunakan papan tulis untuk melakukan perhitungan mereka, di mana setiap orang memiliki kapur dan penghapus dan dapat memutuskan untuk menulis di mana saja di papan tulis. Untuk sistem ini, ada standar yang dikenal sebagai OpenMP, yang merupakan kumpulan ekstensi bahasa ke Fortran dan C / C ++. Komputer memori bersama harus menggunakan banyak bagian non-komoditas untuk mendukung berbagi, dan karenanya cenderung lebih mahal daripada sistem memori terdistribusi. Namun, seringkali lebih mudah untuk menulis sebuah program untuk sistem memori bersama daripada untuk yang memori terdistribusi.

Namun komputer lain mengeksploitasi unit prosesor grafis, GPU, untuk mencapai paralelisme. Namun, meskipun GPU memiliki 1000 core, ada batasan serius pada kemampuan pemrogramannya, dan masalah kinerja yang serius jika ada banyak pergerakan data. Lebih lanjut, bahasa yang digunakan untuk GPU berkembang pesat, jadi tidak jelas apakah Anda harus menggunakan ekstensi CUDA, OpenCL, atau akselerator di OpenMP dan OpenACC, dll.

Hukum Amdahl: jika yayasan mengambil 5% dari waktu, dan hanya satu pekerja yang bisa melakukannya sementara yang lain harus menunggu sampai yayasan selesai, maka Anda tidak pernah dapat menyelesaikan pekerjaan dalam waktu kurang dari 5% dari waktu semula, tidak peduli berapa banyak pekerja yang Anda miliki. Kebetulan, ini membantu menjelaskan mengapa jauh lebih mudah untuk menjadi programmer paralel yang sukses pada sistem kecil. Dalam situasi seperti itu, jika semuanya paralel dengan sempurna, maka 100 pekerja akan mengambil 5% (serial) + 95% / 100 (paralel sempurna) = 5,95% dari waktu aslinya, dibandingkan dengan 100% / 100 = 1% dari aslinya waktu jika semuanya paralel sempurna. 1 / (100 * 0,0595) ≈ 0,17, jadi efisiensinya hanya sekitar 17%, di mana efisiensi adalah (waktu untuk 1 pekerja) / [(jumlah pekerja) * (waktu yang mereka ambil)]. Anda dapat menganggap ini sebagai upah jika satu pekerja melakukannya, dibagi dengan total upah ketika kelompok melakukannya. 20 pekerja akan bekerja pada efisiensi sekitar 51%, dan 10 pekerja pada sekitar 69%. Semakin sedikit pekerja, semakin tinggi efisiensinya.

Tautan terlemah: jika sekelompok pekerja semuanya bergantung satu sama lain, maka grup tersebut tidak bisa lebih cepat dari pekerja yang paling lambat. Jika satu pekerja sedang berbicara di ponsel mencoba mengatur kencan, semua orang melambat, terutama jika mereka mencoba untuk mendengarkan. Tautan lemah lainnya dapat berupa kompiler, sistem operasi, sistem komunikasi, dll.

Kenapa kamu tidak bisa sembunyi?

Di masa lalu, ketika seseorang perlu memecahkan masalah yang lebih besar mereka sering bisa menunggu sedikit, dan komputer yang lebih cepat akan keluar. Ini terutama disebabkan oleh hukum Moore, yang ditafsirkan orang berarti kecepatan komputer akan berlipat ganda setiap dua tahun. Namun, ini tidak benar lagi: jika Anda melihat kecepatan GHz prosesor di komputer desktop 2 tahun yang lalu, dibandingkan dengan kecepatan sekarang, ia hampir tidak, jika ada, meningkat. Pada dasarnya ini terjadi karena mereka tidak dapat membuat prosesor berbiaya rendah andal yang berjalan secara signifikan lebih cepat.

Namun, yang menjadi dua kali lipat adalah jumlah prosesor pada satu chip. Beberapa smartphone sekarang memiliki 8 core (prosesor), Anda dapat membeli chip CPU dengan 12 core, dan jumlah ini akan segera meningkat. Bahkan arloji Apple sekarang memiliki 2 core. Ini disebut "multi-core" atau "banyak-core" chip. Ada juga unit pemrosesan grafis (GPU) dengan lebih dari 1000 prosesor yang sangat khusus. Ini lebih dekat dengan apa yang dibicarakan Moore, karena apa yang sebenarnya dikatakannya adalah bahwa jumlah transistor akan terus berlipat ganda. Laju peningkatan melambat, tetapi peningkatan signifikan dalam jumlah transistor harus berlanjut setidaknya selama satu dekade.

Jika hanya ada beberapa core di komputer Anda, maka cukup mudah untuk menemukan tugas yang dapat dilakukan secara bersamaan, seperti menunggu penekanan tombol dan menjalankan browser, mis., Paralel paralelnya. Namun, karena jumlah prosesor terus meningkat, masalah paralelisasi yang disebutkan di atas menjadi semakin serius. Sekarang ada komputer paralel yang memiliki> 1.000.000 core, dan orang-orang berencana untuk yang memiliki> 100.000.000.

Secara keseluruhan, ini berarti bahwa ada kebutuhan besar untuk menggunakan paralelisme dalam chip multi-core untuk hampir semua masalah, dan untuk menggunakan banyak dari ini digabungkan bersama untuk masalah besar. Keamanan pekerjaan untuk saya! (dan Anda, jika Anda belajar komputasi paralel).

irfan musthaf

Phasellus facilisis convallis metus, ut imperdiet augue auctor nec. Duis at velit id augue lobortis porta. Sed varius, enim accumsan aliquam tincidunt, tortor urna vulputate quam, eget finibus urna est in augue.

Tidak ada komentar: