کتاب استفاده از ابزارهای دیباگینگ برای کدهای سریع با فرمت AZW3 برای کتابخوان کیندل و فرمت EPUB
دیباگینگ حرفهای کدهای سریع: دوره آموزشی جامع آزاد کردن نهایت سرعت برنامههایتان: دوره تخصصی دیباگینگ کدهای پرفورمنس بالا آیا تا به حال ساعتها با کد خود کلنجار رفتهاید تا مشکل آن را پیدا کنید؟ آیا س...
🎓 دوره آموزشی جامع
📚 اطلاعات دوره
عنوان دوره: دوره استفاده از ابزارهای دیباگینگ برای کدهای سریع
موضوع کلی: برنامه نویسی
موضوع میانی: محاسبات سطح بالا (High-Performance Computing)
📋 سرفصلهای دوره
- 1. مقدمهای بر محاسبات سطح بالا و چالشهای دیباگینگ آن
- 2. تفاوت دیباگینگ صحت (Correctness) و دیباگینگ کارایی (Performance)
- 3. انواع باگ در کدهای HPC: منطقی، رقابتی، بنبست، و کارایی
- 4. چرخه حیات دیباگینگ: از شناسایی تا رفع اشکال
- 5. پیکربندی محیط توسعه برای دیباگینگ موثر
- 6. آشنایی با فلگهای کامپایلر برای دیباگینگ (مانند -g)
- 7. استفاده از لاگینگ و چاپ مقادیر (printf debugging) به عنوان اولین گام
- 8. مفهوم دیباگر و نحوه عملکرد آن
- 9. اصول اولیه کار با دیباگر خط فرمان (GDB)
- 10. شروع یک برنامه تحت GDB و اتصال به یک فرآیند در حال اجرا
- 11. مفهوم نقاط شکست (Breakpoints) و نحوه تنظیم آنها
- 12. نقاط شکست شرطی (Conditional Breakpoints)
- 13. نقاط شکست موقت و نادیده گرفتن نقاط شکست
- 14. گام به گام در کد: دستورات step, next, continue, finish
- 15. بررسی و بازرسی متغیرها و حافظه
- 16. بررسی پشته فراخوانی (Call Stack) و حرکت بین فریمها
- 17. تغییر مقادیر متغیرها در حین اجرا
- 18. استفاده از نقاط مراقبت (Watchpoints) برای نظارت بر تغییرات حافظه
- 19. مدیریت سیگنالها در GDB
- 20. تحلیل خطاهای Segmentation Fault و Bus Error
- 21. استفاده از Core Dumps برای تحلیل پس از وقوع خطا (Post-mortem Debugging)
- 22. اسکریپتنویسی در GDB با استفاده از پایتون
- 23. آشنایی با رابط کاربری متنی GDB (TUI)
- 24. دیباگینگ از راه دور با gdbserver
- 25. چالشهای دیباگینگ کدهای بهینهسازی شده (Optimized Code)
- 26. مقدمهای بر تحلیل کارایی و پروفایلینگ
- 27. پروفایلینگ مبتنی بر نمونهبرداری (Sampling) در مقابل ابزار دقیق (Instrumentation)
- 28. آشنایی با ابزار gprof و تحلیل خروجی آن
- 29. محدودیتهای gprof و ابزارهای جایگزین
- 30. مقدمهای بر ابزار perf در لینوکس
- 31. ضبط دادههای کارایی با perf record و تحلیل با perf report
- 32. مفهوم خطاهای حافظه نهان (Cache Misses) و تاثیر آن بر سرعت
- 33. استفاده از perf برای شناسایی مشکلات مربوط به حافظه نهان
- 34. مفهوم نمودارهای شعله (Flame Graphs) برای تحلیل تنگناها
- 35. ساخت و تفسیر نمودارهای شعله
- 36. مقدمهای بر مجموعه ابزار Valgrind
- 37. استفاده از Callgrind برای پروفایلینگ گراف فراخوانی
- 38. تحلیل خروجی Callgrind با ابزارهای بصری مانند KCacheGrind
- 39. مقدمهای بر پروفایلینگ حافظه
- 40. استفاده از Massif برای تحلیل مصرف حافظه Heap
- 41. شناسایی نقاط داغ (Hotspots) در کد
- 42. قانون امدال (Amdahl's Law) و کاربرد آن در بهینهسازی
- 43. آشنایی با فلگهای بهینهسازی کامپایلر (O1, O2, O3, Ofast)
- 44. تحلیل گزارشهای بهینهسازی تولید شده توسط کامپایلر
- 45. مقدمهای بر برنامهنویسی موازی و چالشهای دیباگینگ آن
- 46. معرفی MPI و مدل برنامهنویسی ارسال پیام
- 47. خطاهای رایج در MPI: بنبست، تگهای نامطابق، بافرهای اشتباه
- 48. دیباگینگ برنامههای MPI با استفاده از GDB و xterm
- 49. معرفی دیباگرهای موازی مانند DDT و TotalView
- 50. اتصال دیباگر موازی به یک کار در حال اجرای MPI
- 51. کنترل گروههایی از فرآیندها در دیباگر موازی
- 52. ایجاد نقاط شکست گروهی (Collective Breakpoints)
- 53. بررسی صف پیامها در برنامههای MPI
- 54. تکنیکهای دیباگینگ بنبست (Deadlock) در MPI
- 55. معرفی OpenMP و مدل حافظه اشتراکی
- 56. باگهای رایج در OpenMP: شرایط رقابتی (Race Conditions) و اشتراک کاذب (False Sharing)
- 57. دیباگینگ برنامههای OpenMP با GDB و مدیریت نخها
- 58. استفاده از ابزارهایی مانند Helgrind برای شناسایی شرایط رقابتی
- 59. دیباگینگ برنامههای ترکیبی MPI+OpenMP
- 60. استراتژیهای دیباگینگ در مقیاس بزرگ (هزاران فرآیند)
- 61. دیباگینگ آماری و دیباگینگ زیرمجموعهای
- 62. تحلیل کارایی ارتباطات MPI
- 63. استفاده از ابزارهای پروفایلینگ MPI مانند mpiP و Score-P
- 64. بصریسازی ردپای اجرای موازی با ابزارهایی مانند Vampir
- 65. تحلیل عدم توازن بار (Load Imbalance) در برنامههای موازی
- 66. دیباگینگ پیشرفته حافظه: نشت حافظه و خطاهای دسترسی
- 67. استفاده از Memcheck برای یافتن خطاهای حافظه
- 68. درک انواع خطاهای حافظه: خواندن/نوشتن نامعتبر، استفاده پس از آزادسازی
- 69. آشنایی با ابزار AddressSanitizer (ASan)
- 70. آشنایی با ابزار ThreadSanitizer (TSan) برای خطاهای نخی
- 71. آشنایی با ابزار MemorySanitizer (MSan) برای متغیرهای مقداردهی نشده
- 72. دیباگینگ تنگناهای ورودی/خروجی (I/O)
- 73. استفاده از ابزارهای پروفایلینگ I/O مانند Darshan
- 74. مقدمهای بر محاسبات با GPU و CUDA/OpenCL
- 75. چالشهای دیباگینگ کدهای GPU
- 76. استفاده از cuda-gdb برای دیباگینگ کرنلهای CUDA
- 77. تنظیم نقطه شکست درون یک کرنل GPU
- 78. بررسی حافظه GPU (سراسری، اشتراکی، محلی)
- 79. استفاده از cuda-memcheck برای یافتن خطاهای حافظه روی GPU
- 80. پروفایلینگ برنامههای GPU با NVIDIA Nsight Systems
- 81. پروفایلینگ کرنلهای GPU با NVIDIA Nsight Compute
- 82. درک معیارهای کارایی GPU: اشغال (Occupancy) و پهنای باند حافظه
- 83. دیباگینگ مشکلات برداریسازی (Vectorization) و SIMD
- 84. استفاده از گزارشهای کامپایلر برای بررسی وضعیت برداریسازی
- 85. تکرارپذیری (Reproducibility) در دیباگینگ محاسبات علمی
- 86. دیباگینگ عددی: بررسی خطاهای ممیز شناور و پایداری
- 87. ایجاد یک استراتژی سیستماتیک برای دیباگینگ
- 88. اهمیت کنترل نسخه (مانند Git) در فرآیند دیباگینگ
- 89. استفاده از git bisect برای یافتن سریع رگرسیونها
- 90. نوشتن کدهای قابل دیباگ: استفاده از Assertions و مدیریت خطا
- 91. تست واحد (Unit Testing) برای کدهای محاسباتی
- 92. یکپارچهسازی مداوم (CI) برای کدهای HPC
- 93. تست خودکار رگرسیون کارایی
- 94. مطالعه موردی ۱: دیباگینگ یک بنبست در برنامه MPI
- 95. مطالعه موردی ۲: یافتن نشت حافظه در یک شبیهسازی بزرگ
- 96. مطالعه موردی ۳: بهینهسازی یک کرنل CUDA با استفاده از پروفایلر
- 97. روندهای آینده در ابزارهای دیباگینگ و تحلیل کارایی HPC
- 98. **تحلیل عملکرد و پروفایلینگ در کدهای موازی:** استفاده از ابزارهای پروفایلینگ (مانند Intel VTune Amplifier, perf) برای شناسایی گلوگاههای عملکردی، تحلیل سربارهای ارتباطی و همگامسازی، و بهینهسازی تخصیص حافظه در کدهای موازی.
- 99. **دیباگینگ از راه دور و دیباگینگ هسته (Kernel Debugging):** دیباگینگ برنامههای در حال اجرا بر روی سیستمهای توزیعشده یا HPC با استفاده از دیباگرهای از راه دور، و همچنین اصول دیباگینگ هسته برای شناسایی مشکلات درایورها و سیستمعامل مرتبط با کدهای HPC.
- 100. **تکنیکهای تست خودکار و تست واحد برای کدهای سریع:** ایجاد تستهای واحد موثر برای اطمینان از صحت عملکرد توابع و ماژولها، استفاده از فریمورکهای تست خودکار (مانند Google Test, Catch2) و ادغام آنها در فرآیند توسعه مداوم (CI/CD) برای شناسایی زودهنگام باگها.
تگها:
code speed
Coding
debug
Debugging
High-Performance Computing
HPC
Optimization
Performance
برنامه نویسی
بهینه سازی
پرفورمنس
دیباگ
رفع اشکال
سرعت کد
محاسبات سطح بالا
نظرات
هنوز نظری ثبت نشده است.
وارد شوید تا نظر ثبت کنید.