Apakah The Free Lunch Over? [Tutup]


12

Dalam artikel The Free Lunch Is Over yang terkenal dari 2005, Herb Sutter meramalkan Revolusi Pemrograman Serentak sebesar Revolusi Berorientasi Objek. Apakah revolusi ini benar-benar terjadi di tahun 2005 - 2013?


Poin-poin penting dalam artikel:

  • Produsen prosesor telah kehabisan ruang dengan sebagian besar pendekatan tradisional mereka untuk meningkatkan kinerja CPU. Alih-alih mengemudi kecepatan jam semakin tinggi, mereka malah beralih ke arsitektur hyperthreading dan multicore.

  • Aplikasi akan semakin perlu berbarengan jika mereka ingin sepenuhnya memanfaatkan perolehan throughput CPU.

  • "Oh, kinerja tidak terlalu penting, komputer terus saja semakin cepat" pernyataan akan salah.

  • Efisiensi dan optimalisasi kinerja akan menjadi lebih penting, bukan lebih sedikit. Bahasa-bahasa yang sudah siap untuk optimasi berat akan menemukan kehidupan baru; mereka yang tidak perlu menemukan cara untuk bersaing dan menjadi lebih efisien dan optimal. Harapkan peningkatan permintaan jangka panjang untuk bahasa dan sistem yang berorientasi kinerja.

  • Memprogram bahasa dan sistem akan semakin dipaksa untuk berurusan dengan konkurensi. Kami sangat membutuhkan model pemrograman tingkat tinggi untuk konkurensi daripada bahasa yang ditawarkan saat ini.


15
Berapa core yang dimiliki ponsel Anda?
Matt D

6
Nokia 2700 saya memiliki satu inti.
cpp

5
@MattD Maaf, tapi mengapa ini "waktu untuk meningkatkan", dan apa hubungannya dengan jumlah inti di telepon cpp? Bagaimana Anda tahu bahwa Nokia 2700 tidak cukup untuk kebutuhannya?
Andres F.

2
Saya akan merekam dengan mengatakan, dengan pengamatan yang sepenuhnya non-ilmiah, bahwa telah terjadi revolusi di sisi perangkat keras, tetapi revolusi perangkat lunak berjalan sangat lambat. Memperoleh alat konkurensi yang berkualitas untuk semua programmer masih merupakan pekerjaan yang sulit dan konkurensi masih merupakan sesuatu yang naik bahkan para pengembang paralel yang berpengalaman dalam cara-cara yang sulit direproduksi.
Jesse C. Slicer

2
Saya hanya ingin menunjukkan bahwa hanya karena waktu prediksi itu salah, itu tidak selalu membuat prediksi salah. Jelas sekali bahwa poin-poin kunci yang Anda daftarkan di atas belum mendapatkan arti penting yang tersirat, tetapi ada langkah-langkah ke arah masing-masing poin tersebut. Jadi saya katakan prediksi di atas akan menjadi kenyataan, itu hanya pertanyaan kapan. SAAT akan ketika itu menjadi persyaratan dan bukan hanya keinginan. Mengetahui kapan ambang batas itu akan dilewati adalah mengapa memprediksi kapan sangat sulit.
Dunk

Jawaban:


23

Ya, tapi itu tergantung.

Anda tidak dapat berharap untuk menulis perangkat lunak nontrivial , berkinerja tinggi tanpa menggunakan perangkat keras paralel dan menggunakan konkurensi sebagai teknik penataan program. Tetapi sebagian besar perangkat lunak bersifat sepele dan tidak kritis terhadap kinerja. Aplikasi web tidak menghasilkan banyak angka, dan aplikasi CRUD tidak memiliki batas waktu yang sulit untuk beberapa simulasi dan perangkat lunak medis.

Pengembang game khususnya perlu memperhatikan hal ini, karena game adalah jenis aplikasi yang paling umum dengan persyaratan waktu nyata yang lunak. Masalahnya menonjol pada ponsel, di mana Anda ingin menekan sebanyak mungkin komputasi dan menghasilkan daya dari chip terintegrasi dengan dua core CPU dan GPU berdaya rendah. Itulah alasan lain mengapa begitu banyak pengembang melihat Haskell dan menunggu bahasa seperti Rust matang - kami ingin keamanan dan kinerja perangkat keras modern.

Sejak 2005 kami telah memperoleh alat baru dan lebih baik seperti OpenCL, CUDA, OpenMP, dan set instruksi vektor untuk bekerja dengan konkurensi dan paralelisme data dalam bahasa yang sudah ada. Namun, pendatang baru relatif dirancang sejak awal untuk melakukan banyak hal lebih menarik dengan konkurensi.

Runtime bersamaan Haskell memungkinkan bahasa untuk memberikan dukungan yang kaya untuk paralelisme ringan (percikan) dan abstraksi konkurensi (utas, saluran, dan referensi yang dapat dibagikan bersama). Pergi dan Karat juga menawarkan tugas ringan, Pergi menggunakan saluran dan Karat menggunakan passing pesan.

Sistem ini menawarkan keamanan memori, kinerja runtime, dan perlindungan statis terhadap jenis ras tertentu. Kekekalan Haskell dan Rust yang standar menjadikan konkurensi lebih mudah bagi manusia untuk dikelola. Erlang sudah melakukan ini di tahun 80-an, tetapi kebutuhan perangkat lunak dan pengetahuan kita tentang bagaimana merancang sistem pemrograman juga telah meningkat sejak — syukurlah.

Akhirnya, banyak bahasa yang ada — saya tidak akan menyebut nama — siap ditolak sebagai pilihan yang kredibel untuk menulis perangkat lunak baru. Beban kerumitan dan abstraksi konkurensi yang buruk membuat mereka tidak cocok untuk pertimbangan aplikasi modern. Kami hanya menunggu alternatif matang.


2
Saya tidak begitu yakin tentang penurunan bahasa tertentu, saya berharap kita akan melihat kode yang ditulis dengan lebih fokus pada meminimalkan ketergantungan daripada yang lain. Lagi pula, itu bukan bahasa yang salah, melainkan bagaimana Anda menggunakannya. Dan "buah gantung rendah" dari penggunaannya tidak lagi selaras dengan multithread / concurrency.
Matt D

6
@MattD: Kedua bagaimana Anda menggunakan bahasa dan bahasa itu sendiri dapat bersalah. Katakan program Anda salah. Kaulah yang salah menulis, tetapi bahasa itu tidak selalu membantu Anda untuk menulisnya dengan benar , dan itu sama pentingnya.
Jon Purdy

6

Berikut adalah beberapa titik data; putuskan sendiri apakah itu dianggap sebagai revolusi.

Perangkat Keras Paralel

Sekitar tahun 2005, baik Intel dan AMD mulai memproduksi desktop 2-core x86 CPU (Pentium D dan Athlon 64), dengan kecepatan clock sekitar 3 GHz.

Pada tahun 2006, PlayStation 3 dirilis, menampilkan prosesor Cell dengan 8 + 1 core pada 3,2 GHz.

Pada tahun 2006, seri GeForce 8 dirilis. Ini terdiri dari sejumlah besar (~ 100) 'stream processor' untuk keperluan umum, yang berlawanan dengan unit khusus grafis. Sekitar 2007, spesifikasi CUDA 1.0 dirilis, memungkinkan beberapa komputasi tujuan umum dijalankan pada perangkat keras NVidia paralel-masif.

Sejak itu, kecenderungan berlanjut.

Katakanlah, sekarang, pada 2013, Intel dan AMD menawarkan CPU 4, 8, dan 16-core, dengan kecepatan clock sedikit di atas 4 GHz. Desain dual-core dan quad-core adalah umum untuk perangkat berdaya rendah, seperti laptop dan smartphone.

Semua ini adalah perangkat keras komputer sehari-hari yang diproduksi secara massal dan berkualitas konsumen.

Perangkat lunak

CUDA dirilis pada 2007, kemudian OpenCL pada 2008, memungkinkan untuk menggunakan GPU paralel-besar-besaran dalam perhitungan umum (non-grafis). Model menjadi populer; banyak perusahaan hosting (misalnya Amazon) menawarkan GPU untuk tugas komputasi umum.

Go dirilis pada 2009, menampilkan utas preemptive yang sangat murah ("goroutine") dan memungkinkan untuk mengekspresikan algoritma yang sangat bersamaan secara efisien.

Akka toolkit dirilis untuk Java dan Scala pada 2009, memungkinkan konkurensi berbasis aktor.

Erlang (bahasa yang sangat konkuren) melihat peningkatan penggunaan.

Konkurensi vs Paralelisme

Perhatikan bahwa untuk menggunakan perangkat keras paralel, seseorang tidak perlu memerlukan konkurensi perangkat lunak , yaitu, menyulap dengan benang eksekusi dalam suatu perhitungan. Banyak masalah diselesaikan dengan paralel , proses yang tidak berinteraksi, di mana setiap proses adalah program sekuensial tradisional.

Pemrosesan paralel dapat menggunakan lebih banyak bahasa tradisional dan kerangka kerja paralel, seperti pengurangan peta atau MPC atau OpenMP. Untuk kerangka kerja seperti itu, keberadaan beberapa core pada kristal CPU yang sama secara konseptual tidak jauh berbeda dengan hanya memiliki lebih banyak CPU di cluster; perbedaannya terutama kecepatan.

Tidak ada makan siang gratis sejauh ini

Kecepatan CPU masih bertahan di sekitar 5 GHz di kelas atas. Dengan teknologi yang lebih baik yang terlihat, seperti transistor graphene, frekuensi mungkin kembali meningkat di masa depan, tetapi mungkin tidak segera.

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.