Pemrograman Paralel yang Kuat dan Produktif dengan Kapel: Membangun Bahasa Sumber Terbuka yang Berubah Dari Laptop ke Superkomputer

TL; DR: Bahasa pemrograman paralel dikembangkan untuk meningkatkan produktivitas komputasi, Chapel mempercepat pengembangan dengan mengizinkan sistem terdistribusi diprogram menggunakan sintaksis yang dapat disesuaikan, portabel, dan alami. Pembuat dan pengembang bahasa open-source bercita-cita untuk menjembatani kesenjangan antara coders dan programmer Fortran, C, dan C ++ tradisional yang lebih memilih bahasa yang lebih modern seperti Java, Python, atau MATLAB. Manajer Bahasa Tom MacDonald memberi tahu kami tentang kelebihan, latar belakang, dan masa depan bahasa tersebut.


Ketika aplikasi analisis data, pembelajaran mesin, dan komputasi ilmiah terus meledak, para peneliti dengan cepat beradaptasi dengan platform dan alat baru dan memanfaatkan peluang untuk simulasi yang lebih besar, lebih banyak data, dan tingkat produktivitas komputasi yang lebih tinggi..

Namun, alih-alih melatih kembali diri mereka sebagai insinyur, para peneliti dapat beralih ke Chapel, sebuah bahasa open-source yang muncul yang menyederhanakan komputasi paralel dengan mengintegrasikan fitur dan kemampuan yang penting untuk komputasi yang skalabel ke dalam satu bahasa pemrograman tunggal.

“Seorang ilmuwan ingin dapat mengekspresikan sains,” kata Manajer Bahasa Tom MacDonald. “Mereka tidak mau harus mempelajari detail arsitektur komputer yang rumit dan bagaimana memprogram untuk pengaturan khusus itu karena hanya akan ada sesuatu yang baru di masa depan yang tidak terlalu jauh. Itulah mengapa kami merasa Chapel adalah pendekatan yang lebih baik untuk pemrograman paralel dari yang ada saat ini. “

Membuat Bahasa untuk Menyederhanakan Pemrograman Paralel

Dalam komputasi paralel, perhitungan dan proses dilakukan secara bersamaan. Masalah kompleks dipecah menjadi tugas-tugas kecil yang dapat dieksekusi pada prosesor terpisah.

Cray Inc., sebuah perusahaan yang berspesialisasi dalam superkomputer, penyimpanan data, dan analitik data besar, mulai mengembangkan Chapel sebagai bagian dari program sistem komputasi produktivitas tinggi 2003 yang disponsori oleh agensi penelitian proyek-proyek maju Departemen Pertahanan AS. Program ini menantang vendor seperti Cray untuk meningkatkan produktivitas superkomputer.

Gambar dari Tom MacDonald, Manajer Bahasa Kapel

Manajer Bahasa Tom MacDonald mengawasi tim yang terdiri dari 13 pengembang yang bekerja pada bahasa open-source.

Cray menyebut proyek Cascade setelah pegunungan di sebelah timur markas perusahaannya di Seattle, Washington. Chapel, sebuah akronim perkiraan untuk Cascade High Productivity Language, mengumpulkan umpan balik yang menggembirakan pengguna dengan implementasi proof-of-concept di bawah program. Ketika program penelitian berakhir pada 2012, Cray terus membangun bahasa dan menggandakan ukuran tim. Dengan kecepatan pemrosesan inti yang dimaksimalkan secara efektif, produsen kini mencari peningkatan kinerja melalui komputasi paralel dan prosesor multi-inti.

Komputasi paralel tradisional, menurut Tom, dimulai dengan bahasa warisan seperti Fortran, C, dan C ++. Pengembang kemudian akan memasukkan arahan dan perpustakaan untuk mengoordinasikan komunikasi antara prosesor yang berbeda.

“Apa yang Chapel coba lakukan adalah mengintegrasikan semua itu ke dalam satu bahasa pemrograman sehingga Anda tidak perlu khawatir tentang semua keanehan yang berbeda dari berbagai karya yang mungkin harus Anda gunakan untuk menulis program paralel tradisional,” katanya.

Misalnya, loop paralel sederhana di Chapel terlihat seperti:

1
2

forall i dalam 1..100 do

  writeln ("Halo dari iterasi i");

Programmer dapat mengkompilasi dan menjalankan program Chapel online tanpa menginstal apa pun, atau melihat dokumentasi untuk contoh Hello World atau primer bahasa. Iterasi loop akan berjalan secara paralel, menggunakan semua prosesor pada workstation Anda atau menghitung node. Dengan beberapa perubahan kecil, loop yang sama dapat mendistribusikan pekerjaan di semua node cluster atau superkomputer.

Tiga Kapel Keuntungan untuk Produktivitas dan Portabilitas

Sejak awal, kata Tom, Chapel dirancang khusus untuk komputasi paralel pada berbagai skala dan sistem.

“Ini dimaksudkan tidak hanya untuk mengatasi komputer kelas atas tetapi juga paralelisme yang tersedia pada setiap komputer desktop konsumen,” katanya. “Menurut pendapat kami, itu tidak benar-benar ada, dan Chapel adalah bahasa pertama yang benar-benar berusaha melakukan ini secara terpadu.”

1. Kompatibilitas Lintas Platform Memastikan Skalabilitas

Untuk menjamin portabilitas, Tom mengatakan tim Chapel mengisolasi komponen arsitektur khusus ke dalam apa yang mereka sebut lokal, yang dapat ditukar dengan konfigurasi yang berbeda. Bahasa pemrograman berjalan di macOS, berbagai rasa Linux, dan Cygwin atau Bash PowerShell di Windows 10, serta Amazon Web Services dan cloud.

“Jika Anda terlalu spesifik dalam cara menargetkan arsitektur tertentu, akan banyak pekerjaan untuk port yang ke arsitektur baru,” katanya. “Maksudnya adalah untuk memiliki bahasa yang dapat Anda jalankan di laptop multi-core Anda, ambil program yang sama, dan dengan cara yang sangat alami, tingkatkan ke mesin yang jauh lebih besar.”

2. Pengodean Efisien Menghasilkan Prototyping Cepat

Chapel sering menggambar perbandingan dengan Python karena menjadi bahasa dengan produktivitas tinggi dengan kode yang mudah ditulis dan dapat dibaca yang memungkinkan pengembang untuk dengan cepat membuat program yang dapat digunakan dan diuji. Tidak seperti beberapa bahasa paralel sebelumnya, bagaimanapun, Chapel mendukung apa yang disebut tim filosofi multi-resolusi yang memungkinkan programmer untuk menulis kode yang sangat abstrak dan secara bertahap menambahkan lebih banyak detail.

“Anda dapat membuat prototipe sesuatu dengan sangat cepat,” kata Tom. “Dengan sangat sedikit baris kode, Anda akan bisa mendapatkan sesuatu yang memberi Anda gagasan apakah Anda akan berhasil. Kemudian, Anda dapat menambahkan detail dan spesifikasi tambahan untuk cara memetakan perhitungan ke sistem untuk meningkatkan skalabilitas dan kinerja. “

3. Sintaksis Alami Menghemat Waktu Pengembang

Dalam menciptakan bahasa pemrograman paralel, pengembang secara longgar memodelkan sintaks Chapel setelah C karena popularitas bahasa yang meresap. Chapel juga mencakup banyak fitur dari bahasa berurutan untuk meningkatkan produktivitas, seperti gaya deklarasi kiri-ke-kanan Modula.

Ketik inferensi, fungsi iterator, pemrograman berorientasi objek, dan serangkaian tipe array yang kaya menggabungkan produktivitas Python dengan kinerja C, menurut Tom. “Anda secara alami dapat mengekspresikan struktur data yang sangat besar yang mungkin menyebar di seluruh sistem komputer terdistribusi secara alami,” katanya.

Insinyur Utama Brad Chamberlain mengatakan bahwa programmer dari berbagai latar belakang menemukan atribut yang mereka sukai di Chapel. Misalnya, programmer Fortran menghargai array multidimensi Chapel, sementara coders Python menikmati penyertaan iterator.

“Orang-orang kadang-kadang memberi kita kesulitan untuk mengembangkan bahasa baru, daripada memperluas yang sudah ada, tetapi ini berhasil dengan baik bagi kita,” katanya. “Kami belum terikat pada bagasi dalam bahasa yang ada yang dapat menghambat komputasi paralel sementara memilih fitur-fitur menarik.”

Dedikasi Perusahaan Superkomputer untuk Pemrograman Sumber Terbuka

Selama program penelitian awal, Cray menetapkan bahasa sebagai proyek sumber terbuka yang tersedia untuk umum dengan memindahkan Chapel ke repositori berbasis SourceForge.

“Kami tidak pernah sesuatu yang dimaksudkan untuk menjadi milik,” kata Tom. “Kami bermaksud untuk menjangkau luas dan ada di mana-mana di berbagai arsitektur yang kami dukung.”

Selain menurunkan hambatan adopsi, mendirikan Chapel sebagai teknologi open-source menarik pengguna dan kontributor eksternal. Chapel Implementers and Users Workshop (CHIUW) diadakan setiap tahun untuk mengeksplorasi cara-cara baru untuk memajukan bahasa, sementara Chapel Users Group (CHUG) dengan tepat mengadakan acara sosial atau happy hour setiap tahun untuk komunitas pengguna, penggemar, dan pengembang yang tertarik pada Kapel.

Proyek ini sekarang dihosting di GitHub dan didistribusikan di bawah Lisensi Apache, versi 2.0. Di Cray, Tom mengawasi tim yang terdiri dari 13 pengembang yang berdedikasi untuk memperkuat Kapel untuk penggunaan luas di lingkungan produksi.

“Semua kode kami tersedia, dan kami berusaha untuk melibatkan masyarakat,” kata Tom. “Kami mendapat banyak ide bagus dan bahkan beberapa bantuan pembangunan dari komunitas yang lebih luas.”

Kesabaran dan Rencana 5-Tahun Menuju Versi Dewasa, Mendatang 2.0

Seperti yang dapat diharapkan dengan proyek apa pun yang bertujuan untuk mencapai sesuatu yang belum pernah dilakukan sebelumnya, tim Kapel telah menghadapi dan mengatasi segala macam tantangan, kata Tom.

Setelah proyek awal, tim Chapel memulai program lima tahun untuk mengambil bahasa dari pembuktian konsep menjadi produksi. Dalam setahun, Tom mengatakan bahwa dia dan tim berharap untuk memiliki versi dewasa dari Kapel yang siap bagi pengguna untuk digunakan di berbagai proyek dan sistem.

“Ini masalah meluangkan waktu untuk melakukannya dengan benar,” kata Tom. “Kami mulai dengan prototipe bertahun-tahun yang lalu, tetapi kami telah bekerja keras untuk membuat versi yang lebih matang dari bahasa Chapel dan kompiler Chapel.”

Jeffrey Wilson Administrator
Sorry! The Author has not filled his profile.
follow me