Skip to content

Commit 128a363

Browse files
authored
🌐 [translation-sync] Misc edits to need for speed and related lectures (#93)
* Update translation: lectures/need_for_speed.md * Update translation: .translate/state/need_for_speed.md.yml * Update translation: lectures/numba.md * Update translation: .translate/state/numba.md.yml
1 parent a7ccc94 commit 128a363

File tree

4 files changed

+71
-138
lines changed

4 files changed

+71
-138
lines changed
Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
1-
source-sha: cc9c3256dc35bd277cb25d0089f0a0452c0fa94e
2-
synced-at: "2026-03-20"
3-
model: unknown
4-
mode: RESYNC
1+
source-sha: 21f1ea0669031ccc0ee0194878439a87de5d248d
2+
synced-at: "2026-04-10"
3+
model: claude-sonnet-4-6
4+
mode: UPDATE
55
section-count: 5
6-
tool-version: 0.13.1
6+
tool-version: 0.14.1

.translate/state/numba.md.yml

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
1-
source-sha: ab53ebc3d56705b836f0ca8207d70d1ff3ba0936
2-
synced-at: "2026-04-09"
1+
source-sha: 21f1ea0669031ccc0ee0194878439a87de5d248d
2+
synced-at: "2026-04-10"
33
model: claude-sonnet-4-6
44
mode: UPDATE
55
section-count: 7
6-
tool-version: 0.14.0
6+
tool-version: 0.14.1

lectures/need_for_speed.md

Lines changed: 32 additions & 73 deletions
Original file line numberDiff line numberDiff line change
@@ -59,7 +59,7 @@ translation:
5959

6060
## مرور کلی
6161

62-
احتمالاً می‌توان با اطمینان گفت که پایتون محبوب‌ترین زبان برای محاسبات علمی است.
62+
پایتون محبوب‌ترین زبان برای بسیاری از جنبه‌های محاسبات علمی است.
6363

6464
این به دلیل موارد زیر است:
6565

@@ -98,35 +98,36 @@ import matplotlib.pyplot as plt
9898
import random
9999
```
100100

101-
102101
## کتابخانه‌های علمی اصلی
103102

104103
بیایید به طور خلاصه کتابخانه‌های علمی پایتون را مرور کنیم.
105104

106-
107105
### چرا به آنها نیاز داریم؟
108106

109-
یکی از دلایل استفاده از کتابخانه‌های علمی این است که آنها روال‌هایی را که می‌خواهیم استفاده کنیم، پیاده‌سازی می‌کنند.
107+
ما به کتابخانه‌های علمی پایتون به دو دلیل نیاز داریم:
110108

111-
* انتگرال‌گیری عددی، درونیابی، جبر خطی، یافتن ریشه و غیره.
109+
1. پایتون کوچک است
110+
2. پایتون کند است
112111

113-
به عنوان مثال، معمولاً بهتر است از یک روال موجود برای یافتن ریشه استفاده کنیم تا اینکه از ابتدا یک روال جدید بنویسیم.
112+
**پایتون کوچک است**
114113

115-
(برای الگوریتم‌های استاندارد، کارایی زمانی به حداکثر می‌رسد که جامعه بتواند در یک مجموعه مشترک از پیاده‌سازی‌ها هماهنگ شود، که توسط متخصصان نوشته شده و توسط کاربران برای سریع و قوی بودن تا حد ممکن تنظیم شده‌اند!)
114+
هسته پایتون به طور عمدی کوچک طراحی شده است -- این به بهینه‌سازی، دسترسی‌پذیری و نگهداری کمک می‌کند.
116115

117-
اما این تنها دلیلی نیست که ما از کتابخانه‌های علمی پایتون استفاده می‌کنیم.
116+
کتابخانه‌های علمی روال‌هایی را فراهم می‌کنند که نمی‌خواهیم -- و احتمالاً نباید -- خودمان بنویسیم.
118117

119-
دلیل دیگر این است که پایتون خالص سریع نیست.
118+
* انتگرال‌گیری عددی، درونیابی، جبر خطی، یافتن ریشه و غیره.
120119

121-
بنابراین به کتابخانه‌هایی نیاز داریم که برای تسریع اجرای کد پایتون طراحی شده‌اند.
120+
**پایتون کند است**
122121

123-
آنها این کار را با استفاده از دو استراتژی انجام می‌دهند:
122+
دلیل دیگری که به کتابخانه‌های علمی نیاز داریم این است که پایتون خالص نسبتاً کند است.
124123

125-
1. استفاده از کامپایلرهایی که دستورات شبیه پایتون را به کد ماشین سریع برای رشته‌های منفرد منطقی تبدیل می‌کنند و
126-
2. موازی‌سازی وظایف در چندین "کارگر" (به عنوان مثال، CPUها، رشته‌های منفرد داخل GPUها).
124+
کتابخانه‌های علمی اجرا را با استفاده از سه استراتژی اصلی تسریع می‌کنند:
127125

128-
ما این ایده‌ها را به طور گسترده در این سخنرانی و سخنرانی‌های باقی‌مانده این مجموعه بحث خواهیم کرد.
126+
1. برداری‌سازی: فراهم کردن کد ماشین کامپایل‌شده و رابط‌هایی که این کد را قابل دسترس می‌کنند
127+
1. کامپایل JIT: کامپایلرهایی که دستورات شبیه پایتون را در زمان اجرا به کد ماشین سریع تبدیل می‌کنند
128+
2. موازی‌سازی: توزیع وظایف در چندین thread / CPU / GPU / TPU
129129

130+
ما این ایده‌ها را در ادامه به تفصیل بحث خواهیم کرد.
130131

131132
### اکوسیستم علمی پایتون
132133

@@ -148,8 +149,7 @@ import random
148149
* Pandas انواع و توابعی را برای دستکاری داده‌ها فراهم می‌کند.
149150
* Numba یک کامپایلر just-in-time فراهم می‌کند که با NumPy به خوبی کار می‌کند و به تسریع کد پایتون کمک می‌کند.
150151

151-
ما همه این کتابخانه‌ها را به طور گسترده در این مجموعه سخنرانی‌ها مورد بحث قرار خواهیم داد.
152-
152+
ما همه این کتابخانه‌ها را به تفصیل در این مجموعه درس‌ها مورد بحث قرار خواهیم داد.
153153

154154
## پایتون خالص کند است
155155

@@ -159,7 +159,6 @@ import random
159159

160160
برای این موضوع، مفید خواهد بود اگر درک کنیم که چه چیزی باعث سرعت اجرای کند می‌شود.
161161

162-
163162
### کد سطح بالا در مقابل سطح پایین
164163

165164
زبان‌های سطح بالاتر مانند پایتون برای انسان‌ها بهینه شده‌اند.
@@ -176,12 +175,10 @@ import random
176175

177176
از طرف دیگر، پیاده‌سازی استاندارد پایتون (به نام CPython) نمی‌تواند با سرعت زبان‌های کامپایل شده مانند C یا Fortran برابری کند.
178177

179-
180178
### گلوگاه‌ها کجا هستند؟
181179

182180
چرا اینطور است؟
183181

184-
185182
#### تایپ کردن پویا
186183

187184
```{index} single: Dynamic Typing
@@ -212,14 +209,11 @@ a, b = ['foo'], ['bar']
212209
a + b
213210
```
214211

215-
(ما می‌گوییم که عملگر `+` *بارگذاری شده* است --- عمل آن به نوع اشیایی که بر روی آنها عمل می‌کند بستگی دارد)
216-
217212
در نتیجه، هنگام اجرای `a + b`، پایتون ابتدا باید نوع اشیا را بررسی کند و سپس عملیات صحیح را فراخوانی کند.
218213

219-
این شامل یک سربار غیر قابل اغماض است.
220-
221-
اگر ما بارها و بارها این عبارت را در یک حلقه تنگ اجرا کنیم، سربار غیر قابل اغماض به یک سربار بزرگ تبدیل می‌شود.
214+
این شامل سربار می‌شود.
222215

216+
اگر ما بارها و بارها این عبارت را در یک حلقه تنگ اجرا کنیم، سربار بزرگ می‌شود.
223217

224218
#### انواع ایستا
225219

@@ -254,7 +248,6 @@ int main(void) {
254248

255249
نیازی به بررسی نوع نیست و بنابراین سربار وجود ندارد.
256250

257-
258251
### دسترسی به داده
259252

260253
یکی دیگر از موانع سرعت برای زبان‌های سطح بالا، دسترسی به داده است.
@@ -263,22 +256,15 @@ int main(void) {
263256

264257
#### جمع کردن با کد کامپایل شده
265258

266-
در C یا Fortran، این اعداد صحیح معمولاً در یک آرایه ذخیره می‌شوند که یک ساختار داده ساده برای ذخیره داده‌های همگن است.
267-
268-
چنین آرایه‌ای در یک بلوک پیوسته واحد از حافظه ذخیره می‌شود:
259+
در C یا Fortran، یک آرایه از اعداد صحیح در یک بلوک پیوسته واحد از حافظه ذخیره می‌شود:
269260

270-
* در کامپیوترهای مدرن، آدرس‌های حافظه به هر بایت اختصاص داده می‌شوند (یک بایت = 8 بیت).
271261
* به عنوان مثال، یک عدد صحیح 64 بیتی در 8 بایت حافظه ذخیره می‌شود.
272262
* یک آرایه از $n$ چنین اعداد صحیحی $8n$ شکاف حافظه *متوالی* اشغال می‌کند.
273263

274-
علاوه بر این، کامپایلر توسط برنامه‌نویس از نوع داده آگاه می‌شود.
275-
276-
* در این مورد اعداد صحیح 64 بیتی
264+
علاوه بر این، نوع داده در زمان کامپایل مشخص است.
277265

278266
از این رو، هر نقطه داده متوالی می‌تواند با جابجایی رو به جلو در فضای حافظه به میزان مشخص و ثابتی دسترسی پیدا کند.
279267

280-
* در این مورد 8 بایت
281-
282268
#### جمع کردن در پایتون خالص
283269

284270
پایتون سعی می‌کند این ایده‌ها را تا حدی تکرار کند.
@@ -289,11 +275,7 @@ int main(void) {
289275

290276
از این رو، هنوز سربار در دسترسی به خود مقادیر داده وجود دارد.
291277

292-
این یک مانع قابل توجه بر سرعت است.
293-
294-
در واقع، به طور کلی درست است که ترافیک حافظه یک مجرم اصلی است وقتی صحبت از اجرای کند می‌شود.
295-
296-
278+
چنین سرباری یک مجرم اصلی است وقتی صحبت از اجرای کند می‌شود.
297279

298280
### خلاصه
299281

@@ -311,11 +293,6 @@ int main(void) {
311293

312294
این کار بهترین است که به کامپایلرهای تخصصی واگذار شود!
313295

314-
برخی از کتابخانه‌های پایتون قابلیت‌های برجسته‌ای برای موازی‌سازی کد علمی دارند -- ما در ادامه بیشتر در این مورد بحث خواهیم کرد.
315-
316-
317-
318-
319296
## تسریع پایتون
320297

321298
در این بخش به سه تکنیک مرتبط برای تسریع کد پایتون نگاه می‌کنیم.
@@ -324,8 +301,6 @@ int main(void) {
324301

325302
بعداً به کتابخانه‌های خاص و نحوه پیاده‌سازی این ایده‌ها توسط آنها نگاه خواهیم کرد.
326303

327-
328-
329304
### {index}`برداری‌سازی <single: Vectorization>`
330305

331306
```{index} single: Python; Vectorization
@@ -356,7 +331,7 @@ int main(void) {
356331
```{figure} /_static/lecture_specific/need_for_speed/matlab.png
357332
```
358333

359-
334+
NumPy از مدلی مشابه استفاده می‌کند که از MATLAB الهام گرفته است.
360335

361336
### برداری‌سازی در مقابل حلقه‌های پایتون خالص
362337

@@ -414,50 +389,39 @@ with qe.Timer():
414389

415390
در سخنرانی‌های بعدی در این مجموعه، در مورد چگونگی بهره‌برداری کتابخانه‌های مدرن پایتون از کامپایلرهای just-in-time برای تولید کد ماشین سریع، کارآمد و موازی یاد خواهیم گرفت.
416391

417-
418-
419-
420392
## موازی‌سازی
421393

422394
رشد سرعت کلاک CPU (یعنی سرعتی که یک زنجیره منفرد منطقی می‌تواند اجرا شود) در سال‌های اخیر به طور چشمگیری کند شده است.
423395

424396
طراحان تراشه و برنامه‌نویسان کامپیوتر با کندی با جستجوی مسیری متفاوت برای اجرای سریع پاسخ داده‌اند: موازی‌سازی.
425397

426-
سازندگان سخت‌افزار تعداد هسته‌ها (CPUهای فیزیکی) تعبیه شده در هر ماشین را افزایش داده‌اند.
427-
428-
برای برنامه‌نویسان، چالش این بوده است که از این CPUهای چندگانه با اجرای بسیاری از فرآیندها به صورت موازی (یعنی همزمان) بهره‌برداری کنند.
398+
این شامل موارد زیر می‌شود:
429399

430-
این امر به ویژه در برنامه‌نویسی علمی مهم است که نیاز به مدیریت موارد زیر دارد:
400+
1. افزایش تعداد CPUهای تعبیه شده در هر ماشین
401+
1. اتصال شتاب‌دهنده‌های سخت‌افزاری مانند GPUها و TPUها
431402

432-
* مقادیر زیادی از داده‌ها و
433-
* شبیه‌سازی‌های فشرده CPU و سایر محاسبات.
403+
برای برنامه‌نویسان، چالش این بوده است که از این سخت‌افزار با اجرای بسیاری از فرآیندها به صورت موازی بهره‌برداری کنند.
434404

435405
در زیر ما موازی‌سازی برای محاسبات علمی را با تمرکز بر موارد زیر بحث می‌کنیم:
436406

437-
1. بهترین ابزارها برای موازی‌سازی در پایتون و
407+
1. ابزارهای موازی‌سازی در پایتون و
438408
1. چگونه این ابزارها می‌توانند برای مسائل اقتصادی کمی به کار گرفته شوند.
439409

440-
441410
### موازی‌سازی بر روی CPUها
442411

443412
بیایید دو نوع اصلی موازی‌سازی مبتنی بر CPU که معمولاً در محاسبات علمی استفاده می‌شود را مرور کنیم و مزایا و معایب آنها را بحث کنیم.
444413

445-
446414
#### چندپردازشی
447415

448-
چندپردازشی به معنای اجرای همزمان چندین فرآیند با استفاده از بیش از یک پردازنده است.
449-
450-
در این زمینه، یک **فرآیند** یک زنجیره از دستورات (یعنی یک برنامه) است.
416+
چندپردازشی به معنای اجرای همزمان چندین رشته منطقی با استفاده از بیش از یک پردازنده است.
451417

452-
چندپردازشی می‌تواند روی یک ماشین با CPUهای چندگانه یا روی مجموعه‌ای از ماشین‌های متصل شده توسط یک شبکه انجام شود.
418+
چندپردازشی می‌تواند روی یک ماشین با CPUهای چندگانه یا روی کلاستری از ماشین‌های متصل شده توسط یک شبکه انجام شود.
453419

454-
در مورد دوم، مجموعه ماشین‌ها معمولاً **کلاستر** نامیده می‌شود.
455-
456-
با چندپردازشی، هر فرآیند فضای حافظه خود را دارد، اگرچه تراشه حافظه فیزیکی ممکن است مشترک باشد.
420+
با چندپردازشی، *هر فرآیند فضای حافظه خود را دارد*، اگرچه تراشه حافظه فیزیکی ممکن است مشترک باشد.
457421

458422
#### چندرشته‌ای
459423

460-
چندرشته‌ای شبیه به چندپردازشی است، به جز اینکه، در طول اجرا، همه رشته‌ها فضای حافظه یکسانی را به اشتراک می‌گذارند.
424+
چندرشته‌ای شبیه به چندپردازشی است، به جز اینکه، در طول اجرا، همه رشته‌ها *فضای حافظه یکسانی را به اشتراک می‌گذارند*.
461425

462426
پایتون بومی برای پیاده‌سازی چندرشته‌ای به دلیل برخی [ویژگی‌های طراحی قدیمی](https://wiki.python.org/moin/GlobalInterpreterLock) مشکل دارد.
463427

@@ -475,7 +439,6 @@ with qe.Timer():
475439

476440
برای اکثریت قریب به اتفاق کاری که ما در این سخنرانی‌ها انجام می‌دهیم، چندرشته‌ای کافی خواهد بود.
477441

478-
479442
### شتاب‌دهنده‌های سخت‌افزاری
480443

481444
در حالی که CPUها با هسته‌های چندگانه برای محاسبات موازی استاندارد شده‌اند، یک تغییر چشمگیرتر با ظهور شتاب‌دهنده‌های سخت‌افزاری تخصصی رخ داده است.
@@ -501,7 +464,6 @@ TPUها یک توسعه اخیرتر هستند که توسط گوگل به طو
501464

502465
مانند GPUها، TPUها در انجام تعداد عظیمی از عملیات ماتریسی به صورت موازی عالی هستند.
503466

504-
505467
#### چرا TPU/GPU مهم هستند
506468

507469
دستاوردهای عملکردی از استفاده از شتاب‌دهنده‌های سخت‌افزاری می‌تواند چشمگیر باشد.
@@ -512,7 +474,6 @@ TPUها یک توسعه اخیرتر هستند که توسط گوگل به طو
512474

513475
این امر به ویژه برای محاسبات علمی مرتبط است زیرا بسیاری از الگوریتم‌ها به طور طبیعی بر روی معماری موازی GPUها نگاشت می‌شوند.
514476

515-
516477
### GPUهای تکی در مقابل سرورهای GPU
517478

518479
دو روش رایج برای دسترسی به منابع GPU وجود دارد:
@@ -527,7 +488,6 @@ TPUها یک توسعه اخیرتر هستند که توسط گوگل به طو
527488

528489
کتابخانه‌های مدرن پایتون مانند JAX که به طور گسترده در این مجموعه سخنرانی‌ها مورد بحث قرار می‌گیرند، به طور خودکار GPUهای موجود را با تغییرات حداقلی در کد تشخیص داده و استفاده می‌کنند.
529490

530-
531491
#### سرورهای چند GPU
532492

533493
برای مسائل در مقیاس بزرگتر، سرورهای حاوی GPUهای متعدد (اغلب 4-8 GPU در هر سرور) به طور فزاینده‌ای رایج هستند.
@@ -540,11 +500,10 @@ TPUها یک توسعه اخیرتر هستند که توسط گوگل به طو
540500

541501
این محققان را قادر می‌سازد مسائلی را که بر روی یک GPU یا CPU تکی غیرعملی هستند، مورد بررسی قرار دهند.
542502

543-
544503
### خلاصه
545504

546505
محاسبات GPU بسیار در دسترس‌تر می‌شود، به ویژه از داخل پایتون.
547506

548507
برخی از کتابخانه‌های علمی پایتون، مانند JAX، اکنون شتاب GPU را با تغییرات حداقلی در کد موجود پشتیبانی می‌کنند.
549508

550-
ما محاسبات GPU را با جزئیات بیشتری در سخنرانی‌های بعدی بررسی خواهیم کرد و آن را در طیف وسیعی از کاربردهای اقتصادی به کار خواهیم برد.
509+
ما محاسبات GPU را با جزئیات بیشتری در سخنرانی‌های بعدی بررسی خواهیم کرد و آن را در طیف وسیعی از کاربردهای اقتصادی به کار خواهیم برد.

0 commit comments

Comments
 (0)