کتاب بهینه‌سازی کد برای معماری‌های CPU با فرمت AZW3 برای کتابخوان کیندل و فرمت EPUB

دوره جامع بهینه‌سازی کد برای معماری‌های CPU دوره جامع بهینه‌سازی کد برای معماری‌های CPU: قدرت واقعی پردازنده خود را آزاد کنید! آیا کد شما آن‌طور که باید سریع نیست؟ به دنیای محاسبات سطح بالا خوش آمدید!...

انتخاب پلن

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

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

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

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

عنوان دوره: دوره بهینه‌سازی کد برای معماری‌های CPU

موضوع کلی: برنامه نویسی

موضوع میانی: محاسبات سطح بالا (High-Performance Computing)

📋 سرفصل‌های دوره

  • 1. موضوع کلی: برنامه نویسی
  • 2. موضوع میانی: محاسبات سطح بالا (High-Performance Computing)
  • 3. عنوان دوره: بهینه‌سازی کد برای معماری‌های CPU
  • 4. مقدمه ای بر محاسبات سطح بالا (HPC) و اهمیت عملکرد
  • 5. معیارهای سنجش عملکرد کد: زمان، توان عملیاتی، تأخیر
  • 6. مفهوم گلوگاه (Bottleneck) و شناسایی آن
  • 7. چرخه عمر بهینه‌سازی: تحلیل، پیاده‌سازی، اعتبارسنجی
  • 8. نقش معماری CPU در عملکرد کد
  • 9. بررسی اجمالی معماری‌های مدرن CPU (Intel, AMD, ARM)
  • 10. مدل‌های ذهنی برای درک عملکرد سیستم
  • 11. چالش‌ها و ملاحظات اخلاقی در بهینه‌سازی
  • 12. ساختار کلی یک پردازنده مدرن: اجزا و وظایف
  • 13. رجیسترها، واحدهای اجرایی (ALU, FPU, AGU)
  • 14. خط لوله دستورالعمل (Instruction Pipeline)
  • 15. مفهوم تأخیر (Latency) و توان عملیاتی (Throughput) دستورالعمل‌ها
  • 16. پیش‌بینی انشعاب (Branch Prediction) و پیامدهای آن
  • 17. اجرای خارج از ترتیب (Out-of-Order Execution)
  • 18. وابستگی‌های داده (Data Dependencies) و کنترل (Control Dependencies)
  • 19. مجموعه دستورالعمل‌ها (Instruction Set Architectures - ISA)
  • 20. معماری x86-64 و دستورالعمل‌های پایه‌ای
  • 21. آشنایی با میکرومعماری (Microarchitecture) و اهمیت آن
  • 22. پورت‌های اجرایی (Execution Ports) و محدودیت‌های آنها
  • 23. فرکانس کلاک و تعداد دستورالعمل در کلاک (IPC)
  • 24. سلسله مراتب حافظه: رجیستر، کش، RAM، دیسک
  • 25. اصول کش (Cache): Locality of Reference
  • 26. سطوح کش L1, L2, L3: اندازه، سرعت و خط مشی
  • 27. خطوط کش (Cache Lines) و اندازه آنها
  • 28. انواع عدم تطابق کش (Cache Misses): اجباری، ظرفیتی، تعارضی
  • 29. تأثیر دسترسی حافظه بر عملکرد کلی (Memory Wall)
  • 30. Translation Lookaside Buffer (TLB) و مدیریت حافظه مجازی
  • 31. دسترسی غیر یکنواخت به حافظه (NUMA)
  • 32. پهنای باند حافظه (Memory Bandwidth) و تأخیر (Latency)
  • 33. تکنیک‌های Prefetching داده‌ها
  • 34. نقش کامپایلر در بهینه‌سازی کد
  • 35. سطوح بهینه‌سازی کامپایلر (-O1, -O2, -O3, -Os)
  • 36. بهینه‌سازی‌های رایج: حذف کد مرده، ثابت‌سازی، انتشار ثابت
  • 37. Inlining توابع (Function Inlining)
  • 38. Loop Optimizations: Loop Unrolling, Fusion, Fission
  • 39. بهینه‌سازی‌های مبتنی بر پروفایل (Profile-Guided Optimization - PGO)
  • 40. بهینه‌سازی‌های زمان لینک (Link Time Optimization - LTO)
  • 41. آشنایی با گزینه‌های بهینه‌سازی در GCC و Clang
  • 42. طراحی الگوریتم‌های کارآمد و تحلیل پیچیدگی
  • 43. انتخاب ساختارهای داده مناسب برای عملکرد
  • 44. بهینه‌سازی حلقه‌ها (Loops): کاهش محاسبات و فراخوانی‌ها
  • 45. باز کردن حلقه‌ها به صورت دستی (Manual Loop Unrolling)
  • 46. اجتناب از شاخه‌های (Branches) غیرضروری و پیش‌بینی‌ناپذیر
  • 47. بهینه‌سازی عبارات شرطی و استفاده از Conditional Move
  • 48. حذف محاسبات تکراری (Loop Invariant Code Motion)
  • 49. استفاده از انواع داده بهینه و کاهش اندازه متغیرها
  • 50. بهینه‌سازی عملیات ورودی/خروجی (I/O)
  • 51. کاهش تخصیص حافظه پویا (Dynamic Memory Allocation)
  • 52. استفاده از حافظه استک (Stack) در صورت امکان
  • 53. بهینه‌سازی فراخوانی توابع و کاهش سربار آنها
  • 54. بهبود Locality of Reference در کد
  • 55. طرح‌بندی داده‌ها (Data Layout) برای کش‌فرندلی بودن
  • 56. Padding و Alignment داده‌ها: اهمیت و کاربرد
  • 57. آرایه ساختارها (AoS) در مقابل ساختار آرایه‌ها (SoA)
  • 58. مفهوم False Sharing و استراتژی‌های جلوگیری از آن
  • 59. استفاده از Huge Pages برای بهبود TLB
  • 60. تکنیک‌های Zero-Copy
  • 61. مدیریت حافظه سفارشی (Custom Memory Allocators)
  • 62. فشرده‌سازی داده‌ها برای استفاده بهینه از کش
  • 63. طراحی ساختارهای داده Cache-Aware
  • 64. مروری بر مفهوم ILP و اهمیت آن
  • 65. SuperScalar Pipelines و پورت‌های اجرایی
  • 66. Micro-ops و بازسازی دستورالعمل‌ها
  • 67. تکنیک‌های افزایش ILP: Instruction Scheduling
  • 68. Register Renaming و Reorder Buffer
  • 69. نقش کامپایلر در بهره‌برداری از ILP
  • 70. مقدمه‌ای بر Single Instruction, Multiple Data (SIMD)
  • 71. معماری‌های SIMD: SSE, AVX, AVX2, AVX-512
  • 72. مفهوم وکتورسازی (Vectorization) و اصول آن
  • 73. وکتورسازی خودکار توسط کامپایلر: توانایی‌ها و محدودیت‌ها
  • 74. استفاده از Intrinsics برای وکتورسازی دستی و دقیق
  • 75. نکات و ترفندهای وکتورسازی برای حلقه‌ها
  • 76. کاربرد عملیات Bitwise برای بهینه‌سازی در سطح پایین
  • 77. مطالعه موردی: بهینه‌سازی ضرب ماتریس با SIMD
  • 78. ملاحظات عملکردی در انتخاب مجموعه دستورالعمل SIMD
  • 79. ابزارهای تحلیل وکتورسازی (Vectorization Reports)
  • 80. مقدمه‌ای بر موازی‌سازی با رشته‌ها (Threads)
  • 81. مدل برنامه‌نویسی حافظه مشترک (Shared Memory)
  • 82. سربار ایجاد و مدیریت رشته‌ها
  • 83. معرفی OpenMP: اصول و پرگماها
  • 84. موازی‌سازی حلقه‌ها با `#pragma omp parallel for`
  • 85. همگام‌سازی (Synchronization) در OpenMP: Critical, Atomic, Barrier
  • 86. مفهوم False Sharing در Multithreading و راهکارها
  • 87. زمان‌بندی (Scheduling) وظایف در OpenMP
  • 88. انتخاب تعداد مناسب رشته‌ها برای بار کاری
  • 89. مقایسه OpenMP با Pthreads و Thread Building Blocks (TBB)
  • 90. مشکلات رایج در برنامه‌نویسی چند رشته‌ای: Deadlock, Race Condition
  • 91. بهینه‌سازی قفل‌ها (Locks) و تکنیک‌های Lock-Free
  • 92. روش‌شناسی تحلیل عملکرد: شناسایی گلوگاه‌ها
  • 93. معرفی ابزارهای پروفایلینگ در لینوکس (Perf)
  • 94. استفاده از Perf برای ردیابی رویدادهای سخت‌افزاری
  • 95. ابزارهای پروفایلینگ تجاری/پیشرفته (مانند Intel VTune Amplifier)
  • 96. استفاده از Valgrind برای تحلیل حافظه و عملکرد
  • 97. اندازه‌گیری دقیق زمان با C++ `std::chrono`
  • 98. اصول صحیح بنچمارک‌سازی (Benchmarking)
  • 99. طراحی و اجرای تست‌های عملکرد
  • 100. تجسم داده‌های عملکرد و تفسیر نتایج
تگ‌ها: High-Performance Computing آموزش High-Performance Computing آموزش برنامه نویسی برنامه نویسی برنامه نویسی پیشرفته برنامه نویسی 성능 برنامه نویسی 시스템 بهینه سازی CPU بهینه سازی کد کدنویسی بهینه محاسبات سطح بالا معماری CPU معماری پردازنده 성능 최적화 성능 프로그래밍

نظرات

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

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