کتاب مبانی محاسبات برداری (Vectorization) با فرمت AZW3 برای کتابخوان کیندل و فرمت EPUB

مبانی محاسبات برداری: تخصص در برنامه‌نویسی با کارایی بالا مبانی محاسبات برداری: کلید تسریع برنامه‌های شما در دنیای HPC معرفی دوره آیا از کندی برنامه‌های محاسباتی خود خسته شده‌اید؟ آیا در دنیای پیچیده ...

انتخاب پلن

انتخاب پلن برای ادامه خرید الزامی است.

پرداخت اقساطی
در صورت خرید اقساطی هر قسط: 62,488 تومان
۴ قسط ماهانه. بدون سود، چک و ضامن.
پرداخت اقساطی با دیجی‌پی پرداخت اقساطی با ترب‌پی

🎓 دوره آموزشی جامع

📚 اطلاعات دوره

عنوان دوره: دوره مبانی محاسبات برداری (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. **ملاحظات مربوط به دقت محاسبات در بردارسازی (ممیز شناور)**
تگ‌ها: Computational Science High-Performance Computing HPC NumPy Parallel Computing Python Vectorization آموزش برنامه نویسی برنامه نویسی بهینه سازی کد سرعت بخشیدن به کد علوم کامپیوتر مبانی محاسبات محاسبات برداری موازی سازی

نظرات

هنوز نظری ثبت نشده است.

وارد شوید تا نظر ثبت کنید.