دوره مبانی محاسبات برداری (Vectorization) همراه با فلشکارت آموزشی — ارائه روی فلش مموری
🎓 دوره آموزشی جامع
📚 اطلاعات دوره
عنوان دوره: دوره مبانی محاسبات برداری (Vectorization)
موضوع کلی: برنامه نویسی
موضوع میانی: محاسبات سطح بالا (High-Performance Computing)
📋 سرفصلهای دوره
- 1. مقدمهای بر محاسبات سطح بالا (HPC)
- 2. چرا به عملکرد بالا نیاز داریم؟ پردازش اسکالر در مقابل پردازش موازی
- 3. پردازش اسکالر چیست و چه محدودیتهایی دارد؟
- 4. مفهوم بردارسازی (Vectorization): ایده اصلی
- 5. آشنایی با پارادایم SIMD: یک دستور، چند داده
- 6. تاریخچه مختصر پردازش برداری: از ابرکامپیوترها تا پردازندههای مدرن
- 7. معیارهای کلیدی عملکرد: فلاپس، تأخیر و توان عملیاتی
- 8. قانون امدال (Amdahl's Law) و ارتباط آن با بردارسازی
- 9. دیوار حافظه (The Memory Wall) و تأثیر آن بر عملکرد
- 10. مروری بر معماری پردازندههای مدرن (CPU)
- 11. مفهوم پایپلاین (Instruction Pipeline) در پردازنده
- 12. معماری سوپراسکالر (Superscalar Architecture)
- 13. رجیسترهای برداری: قلب تپنده SIMD
- 14. آشنایی با رجیسترهای XMM, YMM, ZMM
- 15. مجموعه دستورالعملهای SIMD: مروری کلی
- 16. معرفی مجموعه دستورالعملهای SSE
- 17. معرفی مجموعه دستورالعملهای AVX و AVX2
- 18. معرفی مجموعه دستورالعملهای AVX-512
- 19. معرفی FMA (Fused Multiply-Add) و اهمیت آن
- 20. معماری NEON در پردازندههای ARM
- 21. معماری SVE (Scalable Vector Extension) در ARM
- 22. سلسله مراتب حافظه: کش L1, L2, L3
- 23. خطوط کش (Cache Lines) و مفهوم False Sharing
- 24. پهنای باند و تأخیر حافظه
- 25. بردارسازی خودکار (Auto-Vectorization) توسط کامپایلر
- 26. نقش کامپایلر در بهینهسازی کد
- 27. بردارسازی خودکار حلقهها: اولین مثال عملی
- 28. فلگهای کامپایلر برای فعالسازی بردارسازی (مثال: gcc, clang)
- 29. چگونه گزارشهای بردارسازی کامپایلر را بخوانیم و تحلیل کنیم؟
- 30. موانع بردارسازی: وابستگی دادهها (Data Dependencies)
- 31. وابستگیهای حملشده در حلقه (Loop-Carried Dependencies)
- 32. مشکل همپوشانی حافظه (Pointer Aliasing) و کلیدواژه restrict
- 33. تأثیر فراخوانی توابع در داخل حلقهها
- 34. مدیریت دستورات شرطی (if/else) در حلقههای برداریشده
- 35. بازکردن حلقه (Loop Unrolling) و ارتباط آن با بردارسازی
- 36. ساختارهای داده و بردارسازی: AoS در مقابل SoA
- 37. استفاده از دستورات Pragma برای راهنمایی کامپایلر
- 38. تحلیل کد اسمبلی برای تأیید بردارسازی
- 39. اشتباهات متداول در نوشتن کدهای قابل بردارسازی
- 40. مقدمهای بر توابع ذاتی (Intrinsic Functions)
- 41. چرا و چه زمانی از توابع ذاتی استفاده کنیم؟
- 42. آمادهسازی محیط توسعه برای کار با توابع ذاتی
- 43. انواع دادههای ذاتی (Intrinsic Data Types)
- 44. بارگذاری دادهها در رجیسترهای برداری: Load
- 45. ذخیره دادهها از رجیسترهای برداری: Store
- 46. بارگذاری تراز شده (Aligned) در مقابل بارگذاری نامرتب (Unaligned)
- 47. ایجاد و مقداردهی اولیه بردارهای ثابت
- 48. عملیات حسابی پایه: جمع، تفریق، ضرب و تقسیم برداری
- 49. عملیات برداری روی اعداد صحیح و ممیز شناور
- 50. عملیات منطقی برداری: AND, OR, XOR, NOT
- 51. عملیات مقایسهای و تولید ماسکهای برداری
- 52. استفاده از ماسکها برای عملیات شرطی
- 53. ترکیب دادهها با استفاده از ماسک (Blending)
- 54. تغییر ترتیب عناصر در بردارها: Shuffling
- 55. تغییر جایگشت عناصر در بردارها: Permuting
- 56. عملیات افقی (Horizontal Operations)
- 57. استفاده از توابع ذاتی FMA
- 58. توابع ریاضی برداری: جذر، معکوس جذر و ...
- 59. تبدیل نوع (Casting) بین انواع دادههای برداری
- 60. مدیریت دادههای باقیمانده در انتهای حلقه (Cleanup Loop)
- 61. مثال عملی: بردارسازی عملیات SAXPY با توابع ذاتی
- 62. مثال عملی: بردارسازی محاسبه ضرب داخلی (Dot Product)
- 63. اشکالزدایی (Debugging) کدهای حاوی توابع ذاتی
- 64. کار با توابع ذاتی AVX و بردارهای ۲۵۶ بیتی
- 65. قابلیتهای جدید در AVX2: عملیات Gather و دستورات صحیح
- 66. ویژگیهای پیشرفته AVX-512: ماسکنویسی و عملیات جدید
- 67. نوشتن کدهای قابل حمل (Portable) با استفاده از ماکروها
- 68. کپسولهسازی توابع ذاتی در کلاسهای C++
- 69. مفهوم تراز بودن دادهها (Data Alignment)
- 70. چگونگی تخصیص حافظه تراز شده (Aligned Memory Allocation)
- 71. الگوهای دسترسی به حافظه: پیوسته در مقابل گامدار (Strided)
- 72. چالش عملیات Gather و Scatter در بردارسازی
- 73. برنامهنویسی بدون انشعاب (Branchless Programming) برای کدهای شرطی
- 74. بردارسازی عملیات کاهشی (Reductions): جمع، کمینه، بیشینه
- 75. تکنیکهای بردارسازی عملیات ترانهاده ماتریس (Transpose)
- 76. بردارسازی با انواع دادههای پیچیده (Complex Numbers)
- 77. یکپارچهسازی کدهای برداری با کدهای اسکالر
- 78. جداول تأخیر و توان عملیاتی دستورالعملها
- 79. استفاده از ابزارهای پروفایلینگ برای شناسایی گلوگاهها (مثال: perf, VTune)
- 80. تکنیکهای تبدیل ساختار داده از AoS به SoA
- 81. جابجایی حلقهها (Loop Interchange) برای بهبود دسترسی به حافظه
- 82. واکشی اولیه نرمافزاری (Software Prefetching)
- 83. دسترسی به حافظه موقت (Non-Temporal)
- 84. مدیریت دقت در محاسبات ممیز شناور برداری
- 85. بردارسازی در کنار موازیسازی مبتنی بر نخ (Thread-Level Parallelism)
- 86. مدل روفلاین (Roofline Model) و کاربرد آن در تحلیل عملکرد
- 87. مطالعه موردی ۱: بردارسازی در پردازش تصویر (ترکیب پیکسلها)
- 88. مطالعه موردی ۲: بردارسازی در محاسبات علمی (شبیهسازی N-Body)
- 89. مطالعه موردی ۳: بردارسازی در مدلسازی مالی (شبیهسازی مونت کارلو)
- 90. بردارسازی در زبانهای برنامهنویسی سطح بالاتر (Python با NumPy)
- 91. آینده بردارسازی: نگاهی به RISC-V Vector Extension
- 92. مقایسه عملکرد: بردارسازی خودکار، توابع ذاتی و کد اسکالر
- 93. جمعبندی نهایی و بهترین شیوهها در محاسبات برداری
- 94. **بردارسازی خودکار کامپایلر و بهینهسازی حلقهها**
- 95. **کتابخانههای برداریشده: NumPy و BLAS**
- 96. **مقدمهای بر پردازش برداری در GPUها (CUDA/OpenCL)**
- 97. **بردارسازی توابع ریاضی و آماری**
- 98. **استفاده از ابزارهای پروفایلینگ برای شناسایی گلوگاههای بردارسازی**
- 99. **بهینهسازی طرحبندی دادهها برای بهبود عملکرد بردارسازی**
- 100. **ملاحظات مربوط به دقت محاسبات در بردارسازی (ممیز شناور)**
محتویات بسته آموزشی
🌐 سامانه آنلاین فلشکارت؛ مرور هدفمند و هوشمند
اکانت ارائهشده، دسترسی به نسخه تحت وب سامانه فلشکارت ویژه این دوره را فراهم میکند. این سامانه از الگوریتم زمانبندی مرور SM-2 استفاده میکند و بر اساس ارزیابی شما از میزان یادآوری هر کارت، زمان مرورهای بعدی را تنظیم میکند.
به این ترتیب، کارتهای دشوارتر میتوانند زودتر مرور شوند و برای تثبیت مطالب در حافظه، برنامه مرور متناسبتری داشته باشید.
مدتزمان معادل آموزشی بر اساس برآورد این دوره در گواهی درج میشود.
گواهی دوزبانه با استعلام آنلاین
پس از تکمیل فعالیتهای لازم و تأیید درخواست، گواهی پایان دوره به زبان فارسی و انگلیسی صادر میشود. گواهی دارای لینک اختصاصی و QR Code برای بررسی و استعلام آنلاین است.
این گواهی صرفاً بهعنوان گواهی اتمام دوره آموزشی صادر میشود و معادل مدرک دانشگاهی، آکادمیک یا مدرک رسمی مورد تأیید نهادهای دولتی نیست. صدور آن منوط به تکمیل شرایط دوره و تأیید نهایی درخواست است.
نظرات
هنوز نظری ثبت نشده است.
وارد شوید تا نظر ثبت کنید.