You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
در اینجا از `np.meshgrid` برای ایجاد شبکههای ورودی دوبعدی `x` و `y` استفاده میکنیم به گونهای که `f(x, y)` تمام ارزیابیها را روی شبکه حاصلضرب تولید میکند.
اگر این را روی GPU اجرا میکنید، همانطور که ما این کار را میکنیم، باید افزایش سرعت قابل توجه دیگری را ببینید.
428
-
429
435
### خلاصه
430
436
431
437
به نظر ما، JAX برنده برای عملیات برداری شده است.
@@ -531,7 +537,7 @@ with qe.Timer(precision=8):
531
537
532
538
JAX نیز برای این عملیات ترتیبی کاملاً کارآمد است.
533
539
534
-
هم JAX و هم Numba عملکرد قوی پس از کامپایل ارائه میدهند، با این که Numba معمولاً (اما نه همیشه) سرعتهای کمی بهتری در عملیات کاملاً ترتیبی ارائه میدهد.
540
+
هم JAX و هم Numba عملکرد قوی پس از کامپایل ارائه میدهند.
535
541
536
542
### خلاصه
537
543
@@ -545,7 +551,7 @@ JAX نیز برای این عملیات ترتیبی کاملاً کارآمد
545
551
546
552
علاوه بر این، آرایههای تغییرناپذیر JAX به این معنی است که نمیتوانیم به سادگی عناصر آرایه را در جا بهروزرسانی کنیم و تکرار مستقیم الگوریتم مورد استفاده توسط Numba را سخت میکند.
547
553
548
-
برای این نوع عملیات ترتیبی، Numba برنده واضح از نظر وضوح کد و سهولت پیادهسازی، و همچنین عملکرد بالا است.
554
+
برای این نوع عملیات ترتیبی، Numba برنده واضح از نظر وضوح کد و سهولت پیادهسازی است.
549
555
550
556
## توصیههای کلی
551
557
@@ -563,11 +569,12 @@ JAX نیز برای این عملیات ترتیبی کاملاً کارآمد
563
569
564
570
کد طبیعی و خوانا است --- صرفاً یک حلقه پایتون با یک decorator --- و کارایی آن عالی است.
565
571
566
-
JAX میتواند مسائل ترتیبی را از طریق `lax.scan` مدیریت کند، اما نحو آن کمتر شهودی است و برای کارهای کاملاً ترتیبی، بهرهوری اضافی ناچیز است.
567
-
568
-
با این حال، `lax.scan` یک مزیت مهم دارد: از مشتقگیری خودکار در طول حلقه پشتیبانی میکند، که Numba قادر به انجام آن نیست.
572
+
JAX میتواند مسائل ترتیبی را از طریق `lax.scan` مدیریت کند، اما نحو آن کمتر شهودی است.
569
573
574
+
```{note}
575
+
یک مزیت مهم `lax.scan` این است که از مشتقگیری خودکار در طول حلقه پشتیبانی میکند، که Numba قادر به انجام آن نیست.
570
576
اگر نیاز دارید از طریق یک محاسبه ترتیبی مشتق بگیرید (مثلاً محاسبه حساسیتهای یک مسیر نسبت به پارامترهای مدل)، JAX علیرغم نحو کمتر طبیعیاش، انتخاب بهتری است.
577
+
```
571
578
572
579
در عمل، بسیاری از مسائل ترکیبی از هر دو الگو هستند.
0 commit comments