این مقاله را به اشتراک بگذارید
[ad_1]
Nvidia Warp را تحت مجوز Apache 2 قرار داده است. چارچوب پایتون در خدمت عملکرد گرسنه ، شبیه سازی فیزیکی ، تولید داده ها و محاسبه مکانی است. این کارکنان Python را فقط به موقع به کد هسته ، که روی CPU های x86 و GPU های CUDA اجرا می شود ، تنظیم می کند.
خود Nvidia در مورد پیشینه تغییر مجوز سکوت می کند. با این حال ، در جامعه ، قبلاً انتقادات مربوط به مجوز اختصاصی در ابتدا وجود داشت ، که این منابع را فاش کرده بود اما حقوق مورد استفاده را محفوظ کرده بود. اکنون مجوز جدید منبع آزاد شناخته شده است.
نمونه هایی از شبیه سازی های فیزیکی با Warp.
(BILD: تصویر Nvidia)
قابل مقایسه با کد CUDA بومی
WARP برای شبیه سازی های فیزیکی ، سنسورها ، روباتیک یا پردازش هندسی ، ابتدایی ویژه ای را ارائه می دهد. این همچنین شامل ساختارهای داده هندسی بالاتری مانند مش ، شبکه هش و حجم پس انداز برای استفاده در GPU است. برخلاف برنامه نویسی مبتنی بر تانسور ، WARP هسته ضمنی ، کنترل شده و مدیریت تهدید ، منطق شرطی بومی و همچنین پراکندگی پراکنده را ارائه می دهد و برای پردازش بردار جمع می شود.
Warp-Kernel اطلاعات معکوس را برای استفاده از آنها در چارچوب هایی مانند Pytorch ، Jax ، PhysicsNemo ، Nvidia Omniverse یا Paddle بازی می کند. استفاده در خطوط لوله برای دستگاه یادگیری نیز برنامه ریزی شده است. Nvidia با این واقعیت که “سرعت شبیه سازی به همان اندازه کد CUDA بومی است با راحتی و بهره وری توسعه دهنده پایتون” از Warp در وب سایت پروژه ستایش می کند.
WARP روی سیستم عامل های X86-64 یا ARMV8 تحت ویندوز ، لینوکس و MACOS اجرا می شود. پشتیبانی GPU به حداقل سری GEFORCE GTX 9XX نیاز به GPU ، درایورها و کارتهای گرافیکی دارد. برای Python ، Nvidia نسخه 3.9 و بالاتر. باینری های PYPI با CUDA 12 ساخته شده است و به درایورهای CUDA از 525.60.13 (لینوکس x86-64) یا 528.33 (ویندوز x86-64) نیاز دارند. نصب با:
pip install warp-lang
در repo warp یک مثال کد وجود دارد که طول بردارهای سه بعدی تصادفی را محاسبه می کند:
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)
اطلاعات بیشتر را می توان در چند نوت بوک Jupyter ، در مستندات و در نمونه های کد یافت.
(سازمان بهداشت جهانی)
[ad_2]
لینک منبع