دوره استفاده از 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
محتویات بسته آموزشی
🌐 سامانه آنلاین فلشکارت؛ مرور هدفمند و هوشمند
اکانت ارائهشده، دسترسی به نسخه تحت وب سامانه فلشکارت ویژه این دوره را فراهم میکند. این سامانه از الگوریتم زمانبندی مرور SM-2 استفاده میکند و بر اساس ارزیابی شما از میزان یادآوری هر کارت، زمان مرورهای بعدی را تنظیم میکند.
به این ترتیب، کارتهای دشوارتر میتوانند زودتر مرور شوند و برای تثبیت مطالب در حافظه، برنامه مرور متناسبتری داشته باشید.
مدتزمان معادل آموزشی بر اساس برآورد این دوره در گواهی درج میشود.
گواهی دوزبانه با استعلام آنلاین
پس از تکمیل فعالیتهای لازم و تأیید درخواست، گواهی پایان دوره به زبان فارسی و انگلیسی صادر میشود. گواهی دارای لینک اختصاصی و QR Code برای بررسی و استعلام آنلاین است.
این گواهی صرفاً بهعنوان گواهی اتمام دوره آموزشی صادر میشود و معادل مدرک دانشگاهی، آکادمیک یا مدرک رسمی مورد تأیید نهادهای دولتی نیست. صدور آن منوط به تکمیل شرایط دوره و تأیید نهایی درخواست است.
نظرات
هنوز نظری ثبت نشده است.
وارد شوید تا نظر ثبت کنید.