اپلیکیشن اندرویدی فلشکارت آموزشی استفاده از SIMD instructions در پایتون
🎓 دوره آموزشی جامع
📚 اطلاعات دوره
عنوان دوره: دوره استفاده از SIMD instructions در پایتون
موضوع کلی: برنامه نویسی
موضوع میانی: محاسبات سطح بالا (High-Performance Computing)
📋 سرفصلهای دوره
- 1. موضوع کلی: برنامه نویسی
- 2. موضوع میانی: محاسبات سطح بالا (High-Performance Computing)
- 3. عنوان دوره: استفاده از SIMD instructions در پایتون
- 4. مقدمهای بر محاسبات سطح بالا (HPC)
- 5. چرا به محاسبات سطح بالا نیاز داریم؟
- 6. نقش پایتون در اکوسیستم HPC
- 7. بررسی چالشهای عملکردی پایتون
- 8. مفاهیم اساسی عملکرد: زمان اجرا و پیچیدگی
- 9. بررسی گلوگاههای عملکردی رایج در پایتون
- 10. معرفی ابزارهای پایه پروفایلینگ در پایتون (`timeit`, `cProfile`)
- 11. مفاهیم اولیه معماری کامپیوتر برای HPC
- 12. سلسله مراتب حافظه: کش، RAM، دیسک
- 13. اثر کش در عملکرد برنامه
- 14. معرفی واحدهای پردازشی در CPU
- 15. مفهوم خط لوله (Pipelining) در CPU
- 16. انواع معماری دستورالعمل (ISA): RISC در مقابل CISC
- 17. بررسی مجموعه دستورالعملهای CPU
- 18. مفهوم پردازش موازی: تاریخچه و اهمیت
- 19. انواع موازیسازی: بیت، دستورالعمل، داده، تسک
- 20. موازیسازی SIMD در مقابل MIMD
- 21. معرفی واحد پردازنده برداری (Vector Processor)
- 22. تفاوت پردازش اسکالر و برداری
- 23. چرا SIMD برای HPC ضروری است؟
- 24. تعریف SIMD و اصول کاری آن
- 25. مزایای استفاده از SIMD: سرعت و بهرهوری
- 26. محدودیتها و چالشهای SIMD
- 27. مفهوم Vectorization (برداریسازی)
- 28. انواع دادههای برداری (Vector Data Types)
- 29. معرفی رجیسترهای SIMD (مانند XMM, YMM, ZMM)
- 30. عملیات پایه SIMD: جمع، تفریق، ضرب برداری
- 31. عملیات منطقی و مقایسه برداری در SIMD
- 32. عملیات Shuffling و Permutation در SIMD
- 33. مفهوم Blending و Masking در SIMD
- 34. مقدمهای بر مجموعه دستورالعملهای SSE (Streaming SIMD Extensions)
- 35. بررسی SSE2, SSE3, SSSE3, SSE4.x
- 36. معرفی AVX (Advanced Vector Extensions)
- 37. تفاوتهای AVX و SSE: پهنای رجیستر و عملیات
- 38. AVX2 و قابلیتهای جدید آن
- 39. مقدمهای بر AVX-512 و ویژگیهای آن
- 40. تشخیص پشتیبانی SIMD در CPU (CPU-ID)
- 41. مدیریت حافظه و Alignment برای SIMD
- 42. تاثیر Cache Line در عملیات SIMD
- 43. بهینهسازی دسترسی به حافظه برای SIMD
- 44. NumPy: ستون فقرات محاسبات عددی در پایتون
- 45. آرایههای NumPy و ساختار حافظهای آنها
- 46. مفهوم Universal Functions (Ufuncs) در NumPy
- 47. Ufuncs چگونه از SIMD استفاده میکنند؟ (درونگرا)
- 48. Broadcasting در NumPy برای عملیات برداری
- 49. عملیات ریاضی پایه با NumPy و کارایی آن
- 50. استفاده از عملیات کاهشی (Reduction Operations) NumPy
- 51. فیلتر کردن و ایندکسگذاری پیشرفته در NumPy
- 52. بهینهسازی کد پایتون با رویکرد "NumPy-centric"
- 53. SciPy: مجموعه ابزارهای علمی مبتنی بر NumPy
- 54. ماژولهای مهم SciPy برای HPC
- 55. مثال: پردازش تصویر پایه با NumPy/SciPy و SIMD (غیرمستقیم)
- 56. مثال: حل سیستم معادلات خطی با NumPy/SciPy و SIMD
- 57. محدودیتهای NumPy برای دسترسی مستقیم به SIMD
- 58. چه زمانی NumPy کافی نیست؟
- 59. چرایی نیاز به C/C++ برای دسترسی به SIMD در پایتون
- 60. معرفی `ctypes`: فراخوانی توابع C از پایتون
- 61. تعریف انواع داده C در `ctypes`
- 62. ارسال آرایهها و اشارهگرها به توابع C با `ctypes`
- 63. نوشتن یک ماژول C ساده برای فراخوانی از پایتون
- 64. معرفی `cffi`: رابط تابع خارجی برای C
- 65. تفاوتهای `cffi` و `ctypes`
- 66. استفاده از `cffi` برای فراخوانی توابع C
- 67. مدیریت حافظه در `cffi`
- 68. معرفی Cython: ترکیب پایتون و C
- 69. نصب و کامپایل کردن کد Cython
- 70. تایپ کردن (Type Hinting) در Cython برای کارایی بالاتر
- 71. دسترسی به آرایههای NumPy از Cython (MemoryViews)
- 72. فراخوانی توابع C از Cython
- 73. نوشتن توابع بهینه با Cython
- 74. معرفی Numba: کامپایلر JIT برای پایتون
- 75. نصب Numba و محیط کاری آن
- 76. دکوراتورهای Numba: `@jit` و `@njit`
- 77. Numba و بهینهسازی حلقههای پایتون
- 78. پشتیبانی Numba از آرایههای NumPy
- 79. Numba و خودکارسازی SIMD (Auto-vectorization)
- 80. Numba `@vectorize`: ایجاد Ufuncهای سفارشی
- 81. Numba `@guvectorize`: برداریسازی تعمیمیافته
- 82. تفاوت Numba با Cython برای بهینهسازی عملکرد
- 83. اشکالزدایی (Debugging) کد Numba
- 84. مفهوم Intrinsics در SIMD
- 85. نحوه استفاده از Intrinsics در C/C++
- 86. Intrinsics برای SSE: مثال `_mm_add_ps`
- 87. Intrinsics برای AVX: مثال `_mm256_mul_ps`
- 88. Intrinsics برای AVX-512 (مقدماتی)
- 89. مدیریت حافظه و Alignment با Intrinsics
- 90. تبدیل داده (Casting) در Intrinsics SIMD
- 91. ترکیب Intrinsics با Cython: پیادهسازی یک هسته SIMD
- 92. ترکیب Intrinsics با `ctypes`/`cffi`: بارگذاری کتابخانههای SIMD
- 93. توسعه یک عملیات پیچیده با Intrinsics SIMD (مثلاً Convolution)
- 94. تکنیکهای پیشرفته Alignment در پایتون و C Extensions
- 95. Loop Unrolling برای بهبود بهرهوری SIMD
- 96. مدیریت Caching و Prefetching در کدهای SIMD
- 97. موازیسازی با OpenMP در C (برای استفاده در Cython/Cffi)
- 98. استفاده از `perf` و `VTune` برای پروفایلینگ عمیق SIMD
- 99. ابزارهای دیساسمبلی (Disassembly) برای بررسی دستورالعملهای SIMD
- 100. انتخاب بهترین رویکرد: NumPy, Numba, Cython, C Intrinsics
این اپلیکیشن فارسی برای یادگیری و مرور محتوای آموزشی از طریق فلشکارت طراحی شده است. کارتها را یکییکی مرور کنید، پاسخ پرسشها را به یاد بیاورید و نتیجه هر پاسخ را ثبت کنید. محتوای دوره پس از نصب درون برنامه در دسترس است تا برای مطالعه روزمره معمولاً به اتصال مداوم اینترنت نیاز نداشته باشید.
محتوای آموزشی در قالبهای متنوع ارائه میشود تا هم برای یادگیری مفاهیم جدید و هم برای تثبیت آموختهها قابل استفاده باشد.
- رابط کاربری فارسی و راستچین با فونت وزیر.
- تم روشن و تیره مطابق تنظیمات سیستم.
- صفحهبندی ساده برای انتخاب دوره و شروع مرور.
- نمایش تعداد دفعات مرور هر فصل.
- انتخاب چند فصل برای مرور همزمان.
- امکان تمرکز بر فصلهایی که هنوز مرور نشدهاند.
این اپلیکیشن برای دانشآموزان، دانشجویان، داوطلبان آزمونها و علاقهمندان به یادگیری طراحی شده است؛ بهویژه کسانی که میخواهند مطالب آموزشی را در زمانهای کوتاه مرور کنند، دانستههای خود را بسنجند و مطالعه منظمتری داشته باشند.
نظرات
هنوز نظری ثبت نشده است.
وارد شوید تا نظر ثبت کنید.