Arsitektur Komputasi CDNA 3 AMD
(chipsandcheese.com)- AMD CDNA 3 adalah arsitektur GPU komputasi yang dirancang untuk menutup kekurangan CDNA 2: meski berhasil di superkomputasi FP64, ia tertinggal dari H100 dalam performa AI dan skala GPU terpadu
- MI300X mengekspos total 304 Compute Unit di 8 XCD seolah-olah sebagai satu GPU, sehingga mengurangi beban membagi pekerjaan ke dua GPU dan kumpulan memori terpisah seperti pada MI250X
- Hierarki memori disusun ulang menjadi Infinity Cache 256MB, L2 4MB per XCD, dan L1 32KB di dekat CU; secara teori menyediakan bandwidth cache 17,2TB/s, tetapi dalam konfigurasi memori terpadu, tautan die-to-die dapat menjadi bottleneck
- Unit eksekusi memperkenalkan struktur yang mendekati dual issue serta peningkatan jumlah thread yang dapat dilacak per SIMD untuk meningkatkan pemanfaatan FP32, sementara throughput operasi matriks juga naik 2 kali per CU dibanding generasi CDNA sebelumnya
- Perubahan utama CDNA 3 terletak pada hierarki memori dan packaging, dan MI300X dirancang agar beberapa chiplet terlihat seperti satu akselerator besar melalui bandwidth Infinity Fabric yang meningkat drastis
Celah yang Dibidik CDNA 3
- AMD telah mengembangkan arsitekturnya melalui Terascale 3, GCN, serta pemisahan CDNA/RDNA untuk mengejar Nvidia di pasar komputasi GPU
- MI250X dan MI210 berbasis CDNA 2 memenangkan beberapa kontrak superkomputer, termasuk Frontier milik ORNL, dan Frontier menempati peringkat pertama TOP500 pada November 2023
- CDNA 2 memberikan performa yang solid dan hemat biaya dalam komputasi FP64, tetapi H100 memiliki performa AI yang lebih baik dan menawarkan GPU terpadu yang lebih besar
- CDNA 3 dirancang untuk memperkecil celah ini dengan menggabungkan advanced packaging AMD, Infinity Fabric, Infinity Cache dari lini RDNA, dan Compute Unit yang ditingkatkan
Tata Letak GPU MI300X
- MI300X menggunakan struktur chiplet yang memisahkan komputasi ke dalam Accelerator Complex Die (XCD)
- XCD menjalankan peran yang mirip dengan Graphics Compute Die (GCD) pada CDNA 2/RDNA 3 dan Core Complex Die (CCD) pada Ryzen
- Karena produk CDNA tidak memiliki hardware grafis khusus lini RDNA, tampaknya AMD mengganti penamaannya
- Setiap XCD secara fisik memiliki 40 CDNA 3 Compute Unit, dan pada MI300X, 38 unit diaktifkan per XCD
- Satu XCD memiliki cache L2 4MB yang digunakan oleh semua CU pada die tersebut
- MI300X menyediakan total 304 Compute Unit melalui 8 XCD
- Ini meningkat jauh dibanding 220 CU pada MI250X, dan MI300X dapat mengekspos CU-CU ini sebagai satu GPU
- Pada MI250X, tiap GPU memiliki kumpulan memori terpisah, sehingga programmer harus membagi pekerjaan secara langsung ke dua GPU
- Nvidia H100 mengekspos 132 Streaming Multiprocessor (SM) sebagai satu GPU terpadu, tetapi menggunakan pendekatan tradisional yang mengimplementasikan komputasi pada die tunggal berukuran besar
- H100 membagi L2 menjadi dua instance; satu SM dapat menggunakan seluruh L2 50MB, tetapi akses di atas 25MB terkena penalti performa
- XCD MI300X tidak menggunakan kapasitas L2 dari XCD lain untuk caching, sehingga dari sisi pemanfaatan kapasitas cache, pendekatan Nvidia lebih efisien
Perbandingan Struktur dengan Ponte Vecchio
- Intel Ponte Vecchio (PVC) menggunakan Compute Tile sebagai blok komputasi dasar, yang kurang lebih sepadan dengan XCD pada CDNA 3
- Base Tile pada PVC mencakup cache tahap terakhir yang besar dan kontroler memori HBM, mirip dengan die IO pada CDNA 3
- Kartu PVC juga dapat diekspos sebagai satu GPU dengan kumpulan memori terpadu seperti MI300X
- Perbedaan kedua struktur terlihat pada ukuran chiplet, penempatan cache, dan tautan antardie
- Compute Tile pada PVC terdiri dari 8 Xe Core, sehingga lebih kecil daripada XCD CDNA 3 yang memiliki 38 CU
- Intel mengurangi kebutuhan trafik cross-die dengan cache L1 yang lebih besar, bukan cache untuk seluruh Compute Tile
- Jika Ponte Vecchio 2-stack digunakan sebagai GPU terpadu, bridge EMIB hanya menyediakan 230GB/s, sehingga sulit memanfaatkan bandwidth HBM sepenuhnya saat akses ke semua kontroler memori di-striping
- Intel menyediakan API yang dapat memperlakukan GPU sebagai konfigurasi NUMA
- Dalam konfigurasi fisik, CDNA 3 membutuhkan bandwidth tinggi antardie IO, sementara PVC bertahan dengan tautan EMIB ber-bandwidth rendah, tetapi desainnya kompleks karena memakai empat tipe die serta proses dan foundry yang berbeda
- MI300X hanya memakai dua tipe die, dan baik 6nm maupun 5nm menggunakan proses TSMC
Infinity Cache dan Bottleneck Memori
- Selama beberapa dekade, performa komputasi meningkat lebih cepat daripada memori, dan GPU, seperti CPU, meresponsnya dengan strategi cache yang lebih canggih
- CDNA 2 menggunakan hierarki cache tradisional dua tingkat yang bergantung pada L2 8MB dan HBM2e, tetapi MI250X mengalami kekurangan bandwidth yang lebih besar dibanding Nvidia H100
- CDNA 3 menambahkan Infinity Cache yang diambil dari RDNA 2
- Infinity Cache pada MI300 adalah cache sisi memori yang dalam dokumen teknis disebut Memory Attached Last Level (MALL)
- Letaknya lebih jauh dari Compute Unit dibanding L1 dan L2, serta terhubung ke kontroler memori
- Semua trafik memori melewati Infinity Cache, dan trafik IO serta komunikasi peer GPU juga dapat memperoleh manfaat dari bandwidth Infinity Cache
- Karena selalu melihat status terbaru isi DRAM, ia tidak perlu menangani pekerjaan pemeliharaan cache seperti snoop
- Cache sisi memori umumnya memiliki latensi lebih tinggi, sehingga AMD melindungi Compute Unit dengan cache L2 berukuran multi-MB baik pada CDNA 3 maupun RDNA 2
Kapasitas Infinity Cache dan Bandwidth Teoretis
- Infinity Cache CDNA 3 memiliki struktur 16-way set associative seperti RDNA 2
- Implementasi CDNA 3 lebih dioptimalkan untuk bandwidth daripada kapasitas
- Terdiri dari 128 slice
- Kapasitas per slice adalah 2MB, dengan bandwidth baca 64 byte per siklus
- Seluruh slice menyediakan 8192 byte per siklus, setara dengan 17,2TB/s pada 2,1GHz
- Infinity Cache 128MB pada RDNA 2 menyediakan 1024 byte per siklus untuk seluruh slice, atau secara teori 2,5TB/s pada 2,5GHz
- Berdasarkan die shots, slice Infinity Cache RDNA 2 tampaknya menyediakan kapasitas 4MB dan 32 byte per siklus
- MI300X dapat memberikan performa yang baik bahkan untuk workload dengan compute density rendah jika mendapatkan cukup banyak hit di Infinity Cache
- Jika model roofline disusun menggunakan bandwidth teoretis Infinity Cache, MI300X dapat mencapai throughput FP64 penuh pada 4,75 FLOPs per byte yang dimuat
- Jika hanya menggunakan DRAM, dibutuhkan 14,6–15 FLOPs per byte yang dimuat
Batasan Bandwidth Cross-Die
- Infinity Fabric pada MI300X terbentang di 4 die IO, dan setiap die IO terhubung ke 2 stack HBM serta partisi cache terkait
- Saat MI300X beroperasi sebagai satu GPU logis dengan kumpulan memori terpadu, bandwidth koneksi die-to-die dapat membatasi tercapainya bandwidth teoretis penuh Infinity Cache
- Bottleneck pada satu partisi die IO terlihat dari perhitungan bandwidth
- Pada dua edge yang bersisian dengan die IO tetangga, tersedia bandwidth ingress 2,7TB/s
- 2 XCD yang terhubung ke die IO tersebut dapat memperoleh bandwidth Infinity Cache 4,2TB/s
- Jika permintaan L2 miss di-striping merata ke seluruh die, 3/4 atau 3,15TB/s harus datang dari peer die
- 3,15TB/s lebih besar daripada 2,7TB/s, sehingga bandwidth cross-die membatasi bandwidth cache
- Jika semua die dalam konfigurasi terpadu menuntut bandwidth Infinity Cache maksimum, transfer antardie di sudut berseberangan memerlukan 2 hop dan mengonsumsi bandwidth ingress tambahan
- Jika MI300X dibagi menjadi beberapa NUMA domain, total bandwidth Infinity Cache dapat menjadi lebih tinggi
- Hit rate L2 yang tinggi mengurangi kemungkinan bottleneck, dan ketika hit rate Infinity Cache rendah, tautan die-to-die MI300X menyediakan bandwidth yang cukup untuk menangani trafik HBM
Konsistensi Antar-XCD dan Perilaku L2
- Infinity Cache tidak perlu dikhawatirkan soal konsistensi, tetapi cache L2 membutuhkan penanganan terpisah
- Akses memori GPU biasa mengikuti relaxed coherency model, tetapi programmer dapat memaksa ordering antar-thread dengan atomics
- Akses memori GPU AMD dapat ditandai dengan bit GLC (Global Level Coherent)
- Pada GPU AMD sebelumnya, atomics dan coherent access diproses di L2
- Load dengan bit GLC yang disetel akan melewati L1 dan mengambil data terbaru dari L2
- Pada MI300X, cacheline terbaru bisa berada di L2 XCD lain, sehingga cara ini saja tidak cukup
- CDNA 3 menempatkan Coherent Master (CM) pada koneksi antara XCD dan die IO, seperti Infinity Fabric pada Ryzen, serta menempatkan Coherent Slave (CS) bersama slice Infinity Cache di samping tiap memory controller
- Dari dokumen Ryzen dapat diketahui bahwa Coherent Slave memiliki probe filter dan perangkat keras untuk memproses transaksi atomic
- MI300X tampaknya juga memiliki implementasi CS yang serupa
- Ketika coherent write tiba di CS, coherent read harus dapat mengamati write tersebut, terlepas dari di mana pun thread dijalankan di GPU
- Dalam implementasi sederhana, CS harus melakukan probe ke L2 semua XCD
- Probe filter melacak XCD mana yang menyimpan line tersebut di cache untuk menghindari probe traffic yang tidak perlu
- Whitepaper CDNA 3 menyatakan bahwa snoop filter cukup besar untuk mencakup beberapa cache L2 XCD
- Namun, CDNA 3 di dalam XCD berperilaku mirip GPU lama
- Write memori biasa tidak otomatis meng-invalidate line di peer cache seperti CPU
- Kode harus secara eksplisit melakukan writeback pada dirty L2 cache line dan meng-invalidate non-local L2 line di peer L2 cache
- Dokumen LLVM terkait menjelaskan penggunaan
buffer_wbl2 sc1danbuffer_inv sc0 sc1pada target GFX942
Peningkatan Cache L2 dan L1
- Setiap XCD MI300X memiliki cache L2 4MB di dekat Compute Unit
- L2 terdiri dari 16 slice
- Setiap slice 256KB menyediakan bandwidth 128 byte per siklus
- Pada 2,1GHz, ini setara 4,3TB/dtk per XCD
- MI300X memiliki rasio L2 bandwidth-to-compute yang lebih tinggi daripada H100 dan MI250X
- Karena setiap XCD memiliki L2, bandwidth L2 juga meningkat secara alami ketika produk CDNA 3 menambah jumlah XCD
- Ini menghindari masalah mempertahankan bandwidth sambil menghubungkan banyak Compute Unit ke satu cache besar
- Pada PVC, semakin banyak Compute Tile, semakin besar tuntutan bandwidth pada L2 bersama di Base Tile
- Struktur PVC lebih sederhana dari sisi desain cache karena L2 menjadi satu titik konsistensi sekaligus backstop untuk L1 miss
- Namun, ia tidak dapat menyediakan bandwidth setinggi L2 MI300X
- L1 pada CDNA 3 juga ditingkatkan dengan fokus pada bandwidth
- Throughput L1 meningkat dari 64 byte per siklus menjadi 128 byte per siklus
- Kapasitas L1 juga naik dari 16KB menjadi 32KB
- Cache yang lebih besar dapat meningkatkan hit rate, menurunkan latensi akses memori rata-rata, dan memperbaiki pemanfaatan execution unit
- Karena mengambil data dari L2 atau lebih tinggi mengonsumsi daya, peningkatan hit rate juga dapat membantu efisiensi daya
- Ponte Vecchio masih kuat dari sisi L1
- Setiap Xe Core menyediakan 512 byte per siklus
- Kapasitas L1 adalah 512KB
- Kernel memory-bound yang muat di L1 dapat berjalan baik pada arsitektur Intel
- Namun, karena tidak ada mid-level cache pada tingkat Compute Tile, performa dapat turun tajam ketika data melampaui L1
Penjadwalan dan Execution Unit
- Selain struktur chiplet dan cache yang membuat MI300X terlihat sebagai satu GPU, CDNA 3 juga terus menyempurnakan arsitektur Compute Unit untuk menangani masalah pemanfaatan FP32 pada CDNA 2
- CDNA 2 memproses FP64 secara native sambil menyediakan FP32 double-rate melalui packed execution
- Compiler harus mengemas dua nilai FP32 ke register yang berdekatan dan menjalankan instruksi yang sama
- Jika programmer tidak memakai vector secara eksplisit, compiler sering kali sulit melakukannya dengan baik
- CDNA 3 mengatasi masalah ini dengan mekanisme dual issue yang lebih fleksibel
- Ini tampaknya lebih dekat ke perluasan kemampuan multi-issue GCN daripada pendekatan VOPD/wave64 pada RDNA 3
- CU scheduler memilih salah satu dari empat SIMD setiap cycle dan memeriksa apakah ada thread yang siap dieksekusi
- Jika beberapa thread siap, GCN bisa mengirim hingga 5 thread ke execution unit
- Dual issue pada CDNA 3 kemungkinan besar efektif ketika programmer, bukan compiler, mengekspos thread-level parallelism dengan dispatch size besar
- Jika SIMD menjalankan lebih banyak thread, peluang menemukan dua thread dengan instruksi FP32 secara bersamaan menjadi lebih besar
- Setidaknya harus ada 2 active thread per SIMD untuk mencapai throughput FP32 penuh
- Dalam praktiknya, occupancy yang lebih tinggi diperlukan karena memory latency atau execution latency
- AMD secara signifikan meningkatkan jumlah thread yang dapat dilacak SIMD CDNA 3 dari 8 menjadi 24
- Peningkatan kapasitas vector register file tidak disebutkan, dan kapasitas ini sering membatasi jumlah thread yang dapat dipertahankan SIMD secara bersamaan
- Kemampuan multi-issue dapat bekerja paling baik pada kernel sederhana dengan penggunaan register per thread yang rendah
- Dual issue juga dapat membuat bandwidth register file menjadi masalah
- Packed FP32 pada CDNA 2 memanfaatkan port register file yang lebar untuk meneruskan nilai 64-bit sehingga tidak membutuhkan read tambahan
- Instruksi terpisah dapat merujuk register yang berbeda dan menuntut lebih banyak read
- AMD menyatakan bahwa mereka meningkatkan source caching lintas generasi sehingga satu vector register read dapat mendukung lebih banyak operasi vector atau matrix downstream
- Kemungkinan ini adalah cara untuk meredakan port conflict dengan register cache yang lebih besar dan memasok data ke execution unit
Operasi Matriks dan Performa AI
- Dengan meluasnya machine learning, pentingnya perkalian matriks meningkat, dan Nvidia berinvestasi besar di area ini dengan menambahkan tensor core pada Volta dan Turing
- AMD CDNA juga mendukung matrix multiply, tetapi arsitektur Nvidia pada era yang sama berinvestasi lebih besar pada throughput matriks untuk tipe data presisi rendah seperti FP16
- MI300X menggandakan matrix throughput per CU dibanding generasi CDNA sebelumnya
- Desain chiplet MI300X memungkinkan jumlah CU yang sangat besar sehingga meningkatkan throughput total
- Nvidia tetap menjadi pesaing kuat karena performa matrix per SM yang tinggi, sementara CDNA 3, sebagaimana arah AMD, menekan Nvidia dengan kuat melalui performa vector FP64 sembari mempertahankan performa AI yang kuat secara independen
Perubahan Cache Instruksi
- Compute Unit tidak hanya harus mengakses memori data, tetapi juga mengambil instruksi itu sendiri dari memori
- Kode GPU secara tradisional sederhana dan berukuran kecil, sehingga instruction delivery relatif mudah
- GPU CDNA 2 dan RDNA tetap menggunakan instruction cache 32KB, tetapi CDNA 3 meningkatkannya menjadi 64KB
- Associativity juga naik dari 4-way menjadi 8-way
- Meningkatkan instruction cache hit rate pada kernel yang lebih besar dan kompleks
- AMD tampaknya mempertimbangkan kasus ketika kode CPU dipindahkan begitu saja ke GPU
- Kode CPU yang kompleks dapat menjadi beban di GPU
- GPU sulit menyembunyikan latensi instruction cache miss dengan instruction prefetching jarak jauh dan branch prediction yang akurat
- Instruction cache yang lebih besar membantu menampung kernel besar, dan associativity yang lebih tinggi mengurangi conflict miss
- Instance instruction cache pada CDNA 3 dibagi oleh dua Compute Unit seperti pada CDNA 2
- Kernel GPU biasanya dijalankan dengan work size yang cukup besar untuk mengisi banyak Compute Unit, sehingga berbagi instruction cache adalah cara yang efisien untuk menggunakan SRAM
- Jika lebih banyak Compute Unit berbagi satu instance cache, memenuhi kebutuhan instruction bandwidth bisa menjadi lebih sulit
Perbedaan MI300X dan MI300A
- Perubahan generasi terbesar pada CDNA 3 ada pada hierarki memori, dan peningkatan inti yang sebenarnya juga terletak pada penambahan Infinity Cache
- Masalah utama MI250X adalah sifatnya yang lebih mirip dua GPU yang berbagi paket yang sama daripada satu GPU
- Bandwidth antara dua GCD adalah 200GB/s per arah
- AMD menilai bandwidth ini tidak cukup untuk membuat MI250X terlihat seperti satu GPU, sehingga mereka meningkatkan bandwidth die-to-die secara besar-besaran
- MI300 meningkatkan total bandwidth East-West menjadi 2,4TB/s per arah, naik 12 kali dibanding MI250X
- Total bandwidth North-South lebih tinggi lagi, yaitu 3,0TB/s per arah
- Dengan peningkatan bandwidth ini, MI300 dapat terlihat seperti satu akselerator besar yang terintegrasi, bukan dua akselerator seperti MI250X
- Total ingress bandwidth 4,0TB/s pada satu IO die hampir sejalan dengan 4,2TB/s yang dapat digunakan oleh dua XCD, sehingga secara realistis tidak menjadi masalah besar
- Namun, satu IO die tidak dapat memanfaatkan seluruh bandwidth memori total 5,3TB/s
- Ini mirip dengan situasi pada Ryzen 7000 ketika satu CCD tidak dapat sepenuhnya memanfaatkan bandwidth DDR5 karena batasan Infinity Fabric
- Pada MI300X, kebutuhan bandwidth paling tinggi terjadi ketika semua die bekerja bersama, dan dalam kasus ini masing-masing die mengonsumsi sekitar 1,3TB/s, sehingga mengambil 3/4 melalui cross-die link tidak menjadi masalah
- MI300A adalah APU “big iron” yang menggunakan kembali base die yang sama dan menggabungkan 6 CDNA3 XCD dengan 24 core Zen 4
- CPU dan GPU dapat berbagi ruang alamat memori yang sama
- Tidak perlu lagi menyalin data melalui bus eksternal untuk menjaga koherensi antara CPU dan GPU
1 komentar
Opini Hacker News
Secara teknis, kartu konsumen AMD punya performa komputasi yang sangat baik. Misalnya, UE5 merender mesh segitiga lewat komputasi, bukan pipeline grafis https://www.youtube.com/watch?v=TMorJX3Nj6U
Selain itu, karena nVidia memprioritaskan ray tracing dan DLSS dibanding performa komputasi dan bandwidth memori, kartu AMD sering kali unggul atas nVidia di kelas yang sama
Masalahnya, tidak ada perusahaan teknologi yang mau menambahkan backend D3D atau Vulkan ke library AI seperti PyTorch. nVidia tidak melakukannya karena status quo menguntungkan mereka, sementara Intel dan AMD tidak melakukannya karena mereka berusaha mengganti CUDA dengan alternatif proprieter mereka sendiri, bukan API GPU terbuka
Namun ini bukan segmentasi produk yang setengah matang, juga bukan masalah arsitektur tingkat atas. Produk khusus melakukan bidangnya lebih baik daripada produk serbaguna. Permintaan untuk kartu yang hebat dalam komputasi sekaligus gaming kecil; orang seperti itu memang ada, tetapi jumlahnya lebih sedikit dibanding mereka yang hanya peduli salah satunya
Dampak pemisahan GCN menjadi RDNA dan CDNA langsung terasa. Jika membandingkan Radeon VII (GCN 5) dan RX 5700 XT (RDNA 1), dalam game keduanya saling menyalip dan rata-rata Radeon VII sedikit unggul, tetapi RX 5700 XT tertinggal jauh dalam benchmark komputasi. Keduanya memakai TSMC 7nm, tetapi RX 5700 XT punya shader lebih sedikit (2560 vs 3840), die lebih kecil (251 vs 311 mm2), dan daya lebih rendah (225 vs 300 W), yang menunjukkan efisiensi gaming jauh lebih baik. Berkat daya lebih rendah, kebisingan lebih rendah, dan harga ratusan dolar lebih murah, kartu itu jauh lebih menarik bagi gamer
Kartu CDNA tampaknya tidak memiliki komponen yang diperlukan untuk gaming, seperti render output unit. Karena itu tidak ada dukungan resmi DirectX, OpenGL, atau Vulkan. Saya belum pernah melihat contoh orang menjalankan game dengannya. Sebaliknya, performa komputasinya begitu bagus sehingga meski ekosistem CUDA sangat dominan, beberapa perusahaan membeli kartu ini alih-alih nVidia. Pada 2013, ada satu superkomputer berbasis GCN yang masuk 100 besar, dan itu satu-satunya sistem berbasis GCN di 100 besar. Sekarang 8 dari 10 superkomputer paling efisien energi memakai akselerator CDNA, dan superkomputer tercepat peringkat 1 secara keseluruhan juga memakai CDNA
https://www.tomshardware.com/news/amd-enables-rocm-and-pytor...
Pada dasarnya mereka perusahaan hardware (begitu juga latar belakang Lisa Su), dan mereka tidak cepat menerima fakta bahwa CUDA adalah pukulan penentu. Saya ingat @Bridgman di Phoronix terus melakukan pertempuran mundur untuk mempertahankan para developer. Itu pertarungan yang memang tidak mungkin dimenangkan
Sampai batas tertentu bisa dimengerti. Generasi hardware era 80/90-an secara naluriah menganggap hardware berada di puncak stack, dan para eksekutif AMD, termasuk Su, berasal dari kubu itu
Kodura memahami bahwa nVidia mengungguli AMD karena CUDA juga berjalan di kartu konsumen. Karena itu ia mendorong Radeon VII melawan Lisa Su, dan kartu itu sampai baru-baru ini selama bertahun-tahun menjadi satu-satunya kartu konsumen yang didukung ROCm. Tak lama kemudian ia pada dasarnya dipecat, dan RVII yang merupakan kartu bagus itu juga cepat dihentikan. Setelah itu Wang masuk dan memperkuat pemisahan konsumen/profesional
Sekarang AMD berusaha mati-matian untuk memutar balik, tetapi sudah terlambat. Ada beberapa pihak yang mencoba bersaing, tetapi praktis yang layak disebut hanya AAPL dan Metal
AMD melewatkan peluangnya
Meski begitu, ini sepertinya tidak membantu adopsi kartu AMD untuk beban kerja komputasi. Hal hebat dari CUDA adalah Anda tidak perlu kartu akselerator khusus untuk mengembangkan kode CUDA
Jika mereka harus membeli GPU dengan uang sendiri atau dana riset pada harga yang sama seperti konsumen biasa, situasinya mungkin bisa berbeda
Secara pribadi, saya menilai cara NVidia masuk ke lingkungan akademik dan riset universitas sangat tidak etis
Setelah itu mereka terus menunggu, dan beberapa kali mempertaruhkan perusahaan pada keyakinan bahwa pasar untuk produk yang mereka buat “akan datang”
Dalam beberapa tahun terakhir hal itu benar-benar terjadi, dan tercermin juga pada harga saham. Pemain lain pada dasarnya tertinggal 10 tahun, dan melihat euforia saat ini serta makin populernya alur kerja AI/ML, tampaknya hampir mustahil ada yang bisa mengejar
Sebaliknya, kode CUDA terus berjalan meski generasi kartu Nvidia baru dirilis
Sebagian besar membeli A6000 atau yang lebih tinggi dengan harga konsumen dari perusahaan seperti Exxact atau Supermicro
Sejak era V100, yaitu setelah sistem DGX-1, rasanya saya belum pernah melihat peneliti menerima GPU gratis
Berbeda dari CPU, GPU tidak mencoba mengimbanginya secara langsung. Alih-alih menerima latensi yang lebih tinggi, GPU melakukan paralelisasi yang jauh lebih luas, atau lebih agresif, dibanding CPU, dan banyak pseudo-thread paralel memberikan efek penyembunyian latensi
Efek ini bisa dilihat, misalnya, dalam presentasi optimasi kode GPU
https://www.olcf.ornl.gov/wp-content/uploads/2019/12/03-CUDA...
Animasi mulai slide 11 adalah contohnya
Artinya banyak pekerjaan dapat ditangani murni di register dan LDS, dan akses ke memori global jauh lebih jarang dibanding CPU, yang hampir semuanya ada di memori global dan hanya punya sekitar 16 register arsitektural
Meski begitu, memori global tetap menjadi masalah. Bukan hanya latensi, tetapi juga bandwidth. Karena itu RDNA2 dan Ada menambahkan cache tahap akhir dalam jumlah besar. Sebagian untuk menyembunyikan latensi dengan lebih baik, tetapi tujuan utamanya adalah berperan sebagai penguat bandwidth
Very long instruction word (VLIW) berarti arsitektur set instruksi yang dirancang untuk memanfaatkan paralelisme tingkat instruksi (ILP). Unit pemrosesan pusat (CPU) pada umumnya hanya membiarkan program menentukan instruksi yang akan dieksekusi secara berurutan, tetapi prosesor VLIW memungkinkan program secara eksplisit menentukan instruksi yang akan dieksekusi secara paralel. Desain ini bertujuan memberikan performa lebih tinggi sambil menghindari kompleksitas yang melekat pada pendekatan lain
Metode tradisional untuk meningkatkan performa prosesor mencakup pipelining, yaitu memecah instruksi menjadi tahap-tahap lebih kecil dan menjalankan sebagian di antaranya secara bersamaan; arsitektur superscalar, yang mengirim instruksi individual agar dieksekusi secara independen di bagian prosesor yang berbeda; bahkan eksekusi out-of-order, yang menjalankan instruksi dalam urutan berbeda dari program. Pendekatan seperti ini membuat perangkat keras menjadi kompleks karena prosesor harus mengambil semua keputusan secara internal
https://en.wikipedia.org/wiki/Very_long_instruction_word
Itu tidak berjalan baik. Karena itu disebut Itanic
Premisnya adalah compiler dapat memahami dependensi secara cukup statis untuk memasukkan beberapa jalur eksekusi sekuensial dan sebagian jalur eksekusi bercabang ke dalam instruksi yang sama. Namun dalam praktiknya ternyata compiler tidak mampu melakukan itu, sehingga prosesor harus menemukan dependensi dan instruksi yang dapat diparalelkan secara dinamis dari stream instruksi sekuensial
Ini membutuhkan banyak kerja, banyak sumber daya chip, dan banyak energi. Dan hanya bekerja baik sampai titik tertentu; setelah itu ia terbentur diminishing returns. Tampaknya di situlah posisi kita sekarang
Ini bukan bahasa untuk mengirim instruksi, melainkan cara pemrosesannya sendiri
Dan perlu diingat bahwa istilah seperti VLIW4 atau VLIW5 merujuk pada implementasi tertentu
https://en.wikipedia.org/wiki/Single_instruction,_multiple_d...
0: https://en.m.wikipedia.org/wiki/Amazon_Elastic_Compute_Cloud
1: https://trends.google.com/trends/explore?date=all&q=Compute&...