Mempercepat dari kemajuan algoritmik vs. perangkat keras

14

Saya ingat pernah melihat sebuah penelitian atau artikel beberapa waktu yang lalu mengklaim bahwa sebagian besar percepatan yang terlihat dalam program komputer selama beberapa dekade terakhir adalah dari algoritma yang lebih baik daripada perangkat keras yang lebih cepat. Adakah yang tahu pelajaran atau artikelnya?

John
sumber
8
Mungkin lebih cocok untuk cs.stackexchange.
Yuval Filmus
memang ada perubahan paradigma besar dalam beberapa tahun terakhir hukum moores, kecepatan jam, dan paralelisme & yang telah dibahas dalam banyak artikel / makalah ....
vzn

Jawaban:

8

ini adalah pertanyaan yang rumit dan tidak disengaja. Gagasan bahwa keuntungan perangkat lunak telah melampaui peningkatan perangkat keras tampaknya berakar pada laporan pemerintah nyata tetapi (seperti pertanyaan Anda menunjukkan) mungkin mendekati status legenda urban kecil karena disalahpahami atau disalahtafsirkan. tajuk utama ringkasan / bunyi tidak benar-benar cocok dengan poin aktual yang dibuat dalam laporan.

lihat [1] atau [2] yang menyatakan

Sebuah laporan oleh kelompok independen penasihat sains dan teknologi ke Gedung Putih, yang diterbitkan Desember lalu, mengutip penelitian yang menunjukkan bahwa peningkatan kinerja dalam melakukan tugas-tugas komputasi yang dihasilkan dari peningkatan algoritma perangkat lunak seringkali jauh melebihi kenaikan yang disebabkan oleh prosesor yang lebih cepat.
...
Tetapi laporan penasehat Gedung Putih mengutip penelitian, termasuk studi tentang kemajuan selama 15 tahun pada tugas perencanaan produksi benchmark. Seiring waktu itu, kecepatan menyelesaikan perhitungan meningkat dengan faktor 43 juta. Dari total, faktor kira-kira 1.000 disebabkan oleh kecepatan prosesor yang lebih cepat, menurut penelitian oleh Martin Grotschel, seorang ilmuwan dan ahli matematika Jerman. Namun faktor 43.000 adalah karena peningkatan efisiensi algoritma perangkat lunak.

tetapi masalah perangkat lunak vs perangkat keras sangat jauh dari penyederhanaan satu dimensi ini, jauh lebih kompleks, dan blog Lohrs membuatnya lebih akurat— perangkat lunak dan perangkat keras membentuk semacam perpaduan simbiosis yin-yang dan keduanya telah berkembang sangat signifikan, bahkan dengan sangat mengejutkan dekade.

peringatan / cetak halus: seseorang tidak dapat mengambil keuntungan individu dalam algoritma perangkat lunak tertentu, yang dalam beberapa kasus sangat besar, dan menggeneralisasi itu di semua algoritma.

kutipan sebenarnya dari laporan ada di halaman 71:

Yang lebih luar biasa - dan bahkan kurang dipahami - adalah bahwa di banyak bidang, peningkatan kinerja karena peningkatan dalam algoritma telah jauh melebihi bahkan peningkatan kinerja yang dramatis karena peningkatan kecepatan prosesor. Algoritme yang kita gunakan hari ini untuk pengenalan suara, untuk terjemahan bahasa alami, untuk bermain catur, untuk perencanaan logistik, telah berevolusi secara luar biasa dalam dekade terakhir. Namun, sulit untuk mengukur peningkatannya, karena kualitasnya sama dengan kualitas waktu eksekusi.

jadi laporan pemerintah ini sangat diteliti dan dipoles, klaim dasar atas perolehan besar-besaran karena kemajuan perangkat lunak teoretis di beberapa bidang adalah benar, dan sebagian mempromosikan penelitian (teoretis / algoritmik) atas dasar itu.

namun ada beberapa fenomena / tren / pergeseran fundamental / baru / fundamental baru / baru-baru ini dalam beberapa tahun terakhir atau apa yang disebut Intels Grove sebagai "titik belok" yang terjadi dalam desain perangkat keras vs perangkat lunak. alias "gamechangers":

  • munculnya superkomputer "Exascale" mungkin tidak semudah yang dicapai "Petascale" karena kendala skala perangkat keras
  • kecepatan clock, penggerak utama kenaikan kecepatan sebelumnya, telah stabil (sebagian karena kendala panas / pendinginan)
  • perangkat keras sedang mengalami perubahan besar-besaran menuju perangkat komputasi yang kurang intensif, lebih hemat energi misalnya ponsel, pusat data / virtualisasi / cloud dll
  • meningkatkan paralelisme dalam perangkat lunak dan perangkat keras (misalnya "multicore") menjadi lebih penting untuk peningkatan kinerja (di mana teori banyak bicara tentang bagaimana cara memparalelkan algoritma)

[1] skeptic.se, apakah kemajuan dalam algoritma mengalahkan kemajuan dalam perangkat keras

[2] Kemajuan perangkat lunak mengalahkan blog Moores NYT law oleh Lohr

[3] LAPORAN KEPADA PRESIDEN DAN KONGRES YANG MERANCANG MASA DEPAN DIGITAL: PENELITIAN DAN PENGEMBANGAN YANG DASAR SEPENUHNYA DALAM TEKNOLOGI JARINGAN DAN INFORMASI Desember 2010

vzn
sumber
tambahan. mungkin ada beberapa contoh algoritma penting yang bagus yang belum maju dalam efisiensi implementasi selama beberapa dekade. ide ide? satu kandidat area mungkin adalah algoritma matriks yang tidak dapat diparalelkan atau algoritma lain yang tampaknya secara inheren tidak dapat diparalelkan ... juga, beberapa algoritma telah mengalami peningkatan teoritis dalam kompleksitas batas bawah tetapi algoritma tersebut tidak benar-benar dilaksanakan atau tidak layak untuk tipikal -ukuran input dll ... misalnya perkalian matriks?
vzn
1
Ini adalah jawaban yang bagus - penuh perincian, nuansa, dan diskusi pengetahuan!
Joshua Grochow