Metal.jl 1.4: Peningkatan angka acak – Beragampengetahuan
Oleh: Christian Guinard
Diposting ulang dari:
Metal.jl 1.4 menambahkan generator angka acak berkualitas lebih tinggi dari perpustakaan Metal Performance Shaders. Terdapat beberapa batasan yang berlaku, dengan kemungkinan penerapan yang ada saat ini dalam kasus tersebut.
Menggunakan fungsionalitas yang disediakan oleh perpustakaan Metal Performance Shaders (MPS), Metal.jl kini memiliki generator nomor acak GPU yang jauh lebih baik. Distribusi penggunaan yang seragam Metal.rand (dan variasi lokalnya Metal.rand!) tersedia untuk semua tipe integer yang didukung oleh Metal dan Float32. Namun, karena keterbatasan Metal API, bilangan bulat 8-bit dan 16-bit dapat dikembalikan ke generator nomor acak GPUArrays.jl dengan kualitas lebih rendah jika ukurannya dalam byte bukan kelipatan 4 . Float32 nilai dapat diciptakan dengan Metal.randn Dan Metal.randn!ketika Float16 tidak didukung oleh perpustakaan MPS dan akan selalu kembali ke implementasi GPUArrays.
Cara termudah untuk menggunakannya adalah dengan menggunakan fungsi kenyamanan Metal Metal.rand[n][!] seperti fungsi reguler dari perpustakaan standar Random.jl:
julia> a = Metal.rand(Float32, 2)
2-element MtlVector{Float32, Metal.PrivateStorage}:
0.95755994
0.7110207julia> Metal.randn!(a)
2-element MtlVector{Float32, Metal.PrivateStorage}:
1.7230463
0.55636907
Namun metode Random.jl juga bisa digunakan dengan menyediakan RNG atau kata-kata MPS.default_rng() atau MPS.RNG() memenuhi standar Random.rand[n][!] fungsi:
julia> using Randomjulia> rng = MPS.RNG();julia> Random.rand(rng, 2)
2-element MtlVector{Float32, Metal.PrivateStorage}:
0.8941469
0.67628527
Penaburan dilakukan dengan cara memanggil Metal.seed! untuk RNG global, atau Random.seed! ketika bekerja dengan informasi yang jelas RNG hal-hal.
Contents
Perbaikan lainnya sejak postingan blog terakhir
-
Sejak v0.5:
MtlArrayMode penyimpanan berparameter, memungkinkan seseorang membuat penyimpanan bersamaMtlArraydengan menyebutMtlArray{eltype, ndims, Metal.SharedStorage}(...). -
Pada versi 0.3: Pemisahan yang dipercepat MPS telah ditambahkan.
-
Berbagai peningkatan kinerja
-
Banyak koreksi kesalahan.
Pekerjaan masa depan
Meskipun Metal.jl sekarang berada di v1, masih ada pekerjaan yang harus dilakukan untuk membuatnya secepat dan berfitur lengkap mungkin. Spesial:
-
Metal.jl saat ini menggunakan ObjectiveC FFI asli untuk membungkus API Logam. Namun, pembungkus ini harus ditulis secara manual untuk setiap bagian kode Objective-C. Kami mencari bantuan untuk meningkatkan Clang.jl dan ObjectiveC.jl untuk mengaktifkan pembuatan otomatis pembungkus ini;
-
Pembungkus MPS belum lengkap, pembuatan pembungkus otomatis akan sangat membantu dengan dukungan penuh MPS;
-
Untuk menerapkan back-end KernelAbstractions.jl berfitur lengkap, operasi atom Metal harus terhubung ke Atomix;
-
Dukungan penuh untuk nilai BFloat16, yang telah didukung sejak Metal 3.1 (macOS 14), belum tersedia di Metal.jl. Namun, ada rancangan PR yang sedang dikerjakan. Periksa untuk melihat apakah Anda ingin membantu;
-
Beberapa fungsi yang disertakan dalam CUDA.jl mungkin di-porting ke Metal.jl untuk meningkatkan kegunaan.
Terkait
Software Terbaru Saat Ini
Aplikasi yang sedang trend saat ini
object oriented programming, programming language, programming adalah, web programming, belajar programming, tournament software, software, software adalah, contoh software, apa itu software, pengertian software, aplikasi, aplikasi penghasil uang, aplikasi bokep, aplikasi video, programming
#Metal.jl #Peningkatan #angka #acak