Sonunda Açık Kaynak: Warp, Nvidia'nın Cuda için Python Çerçevesi

Adanali

Member
Nvidia, Apache 2 lisansı ile çözgü koydu. Python çerçevesi performans, fiziksel simülasyonlar, veri üretimi ve alan hesaplaması için kullanılır. Python'u doldurun, tam zamanında CPU X86 ve Cuda GPU'da çalışan çekirdek kodunda çalışır.



Nvidia'nın kendisi lisans değişikliğinin arka planına karşı sessizdir. Ancak toplulukta, daha önce kaynakları açıklayan ancak kullanımda olan hakları saklı tutan başlangıçta sahip lisansı eleştirisi vardı. Yeni lisans artık açık kaynak tanınıyor.





Çözgü ile fiziksel simülasyon örnekleri



Çözgü ile fiziksel simülasyon örnekleri.


(Resim: ekran görüntüsü nvidia)



Yerel Cuda kodu ile karşılaştırılabilir


Warp, fiziksel simülasyonlar, sensörler, robotik veya geometrik işleme için özel bir ilkel sunar. Bu aynı zamanda GPU'da kullanılacak gömlekler, karma ızgaralar ve tasarruf hacimleri gibi yüksek tanklama geometrik veri yapılarını da içerir. Tensöre dayanan programlamanın aksine, Warp örtük ve kontrollü bir çekirdek ve tehdit yönetimi, doğal koşullu mantık ve kıt kıt ve vektör işleme için toplanmıştır.



Kemer çiğneme, ters bilgiyi Pytorch, Jax, Physicsnem, Nvidia omniverse veya raket gibi çerçevede kullanmak için yeniden üretir. Öğrenme makinesi için davranışta kullanım da sağlanır. Nvidia, “simülasyon hızı, Python geliştiricilerinin konforu ve verimliliği ile eşit derecede yerli Cuda” ile proje web sitesinde Warp'a övgüde bulunuyor.

Çözgü, Windows, Linux ve macOS altında X86-64 veya ARMV8 platformlarında çalışır. GPU desteği, en azından GeForce GTX 9xx serisini CUDA GPU, sürücü ve grafik kartları gerektirir. Python, Nvidia sürüm 3.9 ve üstün. PYPI'daki parçalar Cuda 12 ile inşa edilmiştir ve CUDA sürücüsü 525.60.13 (Linux X86-64) veya 528.33 (Windows X86-64) gerektirir. Kurulum şu şekilde gerçekleşir:



pip install warp-lang

Repo çözgüde rastgele 3D taşıyıcıların uzunluğunu hesaplayan bir kod örneği vardır:



import warp as wp
import numpy as np

num_points = 1024

@wp.kernel
def length(points: wp.array(dtype=wp.vec3),
lengths: wp.array(dtype=float)):

# thread index
tid = wp.tid()

# compute distance of each point from origin
lengths[tid] = wp.length(points[tid])


# allocate an array of 3d points
points = wp.array(np.random.rand(num_points, 3), dtype=wp.vec3)
lengths = wp.zeros(num_points, dtype=float)

# launch kernel
wp.launch(kernel=length,
dim=len(points),
inputs=[points, lengths])

print(lengths)


Daha fazla bilgi bazı Jupyter not defterlerinde, kod belgesinde ve örneklerinde mevcuttur.




(DSÖ)
 
Üst