HPC Nerds | High Performance and Scientific Computing
265 subscribers
17 photos
20 links
High performance and scientific computing

🔴 High Performance Computing
🔴 Parallel Programming
🔴 Distributed Programming
🔴 GPU Programming
🔴 Scientific Computing
🔴 Simulation



admin: @amirabbasasadi
Download Telegram
این کانال برای علاقمندان به High Performance Computing و محاسبات علمی ایجاد شده و محتوای آن شامل کتاب، دوره، نکات کدنویسی و منابع مفید در مورد مباحث زیر هست:
🔴 High Performance Computing
🔴 Parallel Programming
🔴 Distributed Programming
🔴 GPU Programming
🔴 Scientific Computing
🔴 Numerical Methods
🔴 Simulation
🟢 C/C++ Programming
🟢 Julia Programming


@hpcnerds
4👍3
📙 Parallel and High Performance Computing
Robert Robey & Yuliana Zamora

یکی از جامع ترین منابع برای یادگیری HPC مخصوص برنامه نویس های C++

🔴 Why parallel computing?
🔴 Planning for parallelization
🔴 Performance limits and profiling
🔴 Data design and performance models
🔴 Parallel algorithms and patterns
🔴 Vectorization: FLOPs for free
🔴 OpenMP that performs
🔴 MPI: The parallel backbone
🔴 GPU architectures and concepts
🔴 GPU programming model
🔴 Directive-based GPU programming
🔴 GPU languages: Getting down to basics
🔴 GPU profiling and tools
🔴 Affinity: Truce with the kernel
🔴 Batch schedulers: Bringing order to chaos
🔴 File operations for a parallel world
🔴 Tools and resources for better code

#book #cpp
@hpcnerds
🔥2👍1
📙 Numerical Methods for Scientific Computing
Kyle Novak


🔴 Direct Methods for Linear Systems
🔴 Inconsistent Systems
🔴 Computing Eigenvalues
🔴 Iterative Methods for Linear Systems
🔴 The Fast Fourier Transform
🔴 Solutions to Nonlinear Equations
🔴 Interpolation
🔴 Approximating Functions
🔴 Differentiation and Integration
🔴 Ordinary Differential Equations
🔴 Parabolic Equations
🔴 Hyperbolic Equations
🔴 Elliptic Equations
🔴 Fourier Spectral Methods

نویسنده نسخه pdf این کتاب رو هم به صورت رایگان به اشتراک گذاشته:
https://www.equalsharepress.com


کتاب شامل پیاده سازی خیلی از روش ها در جولیا هم هست.

#book #julia #scientificcomputing
@hpcnerds
👎1🔥1
📙 Pro TBB | C++ Parallel Programming with Threading Building Blocks

اینتل این کتاب رو به صورت رایگان منتشر کرده:
https://link.springer.com/book/10.1007/978-1-4842-4398-5
من خودم TBB رو خیلی دوست دارم ولی به جز این دلیل، این کتاب برای افرادی که تجربه قبلی برنامه نویسی موازی ندارند هم مفیده چون اساس این کار و الگو های برنامه نویسی موازی رو هم مورد بحث قرار میده.

#book #cpp #parallelprogramming

@hpcnerds
👍1
📙 Parallel Computing and Scientific Machine Learning
Dr. Chris Rackauckas, MIT
لیست ویدئو های دوره
https://www.youtube.com/playlist?list=PLCAl7tjCwWyGjdzOOnlbGnVNZk0kB8VSa

مطالب دوره در قالب یک کتاب آنلاین
https://book.sciml.ai/

مباحث:
🔴 Optimizing Serial Code
🔴 Physics-Informed Neural Networks
🔴 Introduction to Discrete Dynamical Systems
🔴 The Basics of Single Node Parallel Computing
🔴 Styles of Parallelism
🔴 Ordinary Differential Equations
🔴 Forward-Mode Automatic Differentiation
🔴 Solving Stiff Ordinary Differential Equations
🔴 Basic Parameter Estimation, Reverse-Mode AD, and Inverse Problems
🔴 Differentiable Programming and Neural Differential Equations
🔴 MPI for Distributed Computing
🔴 Mathematics of ML and HPC
🔴 GPU Computing
🔴 Partial Differential Equations and Convolutional Neural Networks
🔴 Probabilistic Programming
🔴 Global Sensitivity Analysis
🔴 Code Profiling and Optimization
🔴 Uncertainty Programming and Generalized Uncertainty Quantification

#course
@hpcnerds
👍1
HPC Nerds | High Performance and Scientific Computing
📙 Parallel Computing and Scientific Machine Learning Dr. Chris Rackauckas, MIT لیست ویدئو های دوره https://www.youtube.com/playlist?list=PLCAl7tjCwWyGjdzOOnlbGnVNZk0kB8VSa مطالب دوره در قالب یک کتاب آنلاین https://book.sciml.ai/ مباحث: 🔴 Optimizing Serial…
زبان جولیا سن کمتری نسبت به باقی زبان های محاسبات علمی داره اما در همین مدت کوتاه به خاطر استقبال جامعه آکادمیک، اکوسیستم بی نظیری از پکیج های محاسبات علمی واسش توسعه داده شده. یکی از فعال ترین افراد در توسعه این اکوسیستم Chris Rackauckas هست. توصیه میکنم این دوره ای که در MIT ارائه داده رو از دست ندید.
📙 High Performance Parallelism Pearls: Multicore and Many-core Programming Approaches

این کتاب واسه شروع برنامه نویسی موازی منبع مناسبی نیست اما اگر تجربه قبلی دارید و دوست دارید بدونید برای افزایش پرفورمنس و بهینه سازی پروژه های واقعی باید چه مسیری رو طی کرد و از چه ایده های میشه استفاده کرد، منبع بی نظیری هست. بعضی از مطالب کتاب مخصوصا برای پردازنده های Xeon Phi نوشته شده که علیرغم ایده جذابی که داشت، تولیدش توسط اینتل ادامه پیدا نکرد. ولی باقی مطالبش برای برنامه نویسی موازی و توزیع شده به صورت کلی هم قابل استفاده است.

#book #cpp

@hpcnerds
📙 Programming Massively Parallel Processors: A Hands-on Approach

یکی از بهترین کتاب ها برای یاد گرفتن برنامه نویسی CUDA با C++


#book #cuda #cpp
@hpcnerds
📙 Programming in Parallel with CUDA: A Practical Guide

تمرکز این کتاب بیشتر روی محاسبات علمی هست و مثال ها تمرین هاش بر همین اساس طراحی شده. در مقایسه با باقی کتاب های موجود در مورد CUDA استفاده مناسب تری از امکانات مدرن C++ و امکاناتی که در نسخه های اخیر CUDA اضافه شدن داره.

#book #cuda #cpp

@hpcnerds
تصور کنید میتونید کد برنامتون رو به سه قسمت A و B و C تقسیم کنید به صورتی که قسمت های A و B میتونن به صورت موازی اجرا بشن اما برای اجرای قسمت C به نتیجه A و B احتیاج داریم. یکی از ابزار های شناخته شده برنامه نویسی موازی که برای برخورد با همچین سناریو هایی توسعه پیدا کردن Flow Graph ها هستن. به صورت کلی روش استفاده اینطوری هست که وابستگی بین قسمت های برنامه رو به عنوان یک گراف وابستگی مشخص میکنیم و اون ابزار منابع محاسباتی مثل thread ها یا هسته ها رو به شکل بهینه برای اجرای کد زمانبندی میکنه.اگه از C++ استفاده میکنید کتابخانه TBB امکانات خوبی برای طراحی و اجرای Flow Graph ها داره. یکی دیگه از پروژه هایی که به صورت مستقل و اختصاصی برای این مسئله طراحی شده TaskFlow هست:
🟢 A General-purpose Parallel and Heterogeneous Task Programming System
📙 https://taskflow.github.io/
اما اگه از جولیا استفاده میکنید، میتونید نگاهی به Dagger بندازید:

🟢 A framework for out-of-core and parallel execution

📙 https://juliaparallel.org/Dagger.jl/dev

#tools #julia #cpp
@hpcnerds
👍6
Singularity for HPC

هیچکدوم از ما دوست نداره وقتی یه سرور محاسبات سنگین اجاره کردیم زمان قابل توجهی رو برای راه اندازی سرور و نیازمندی های برنامه ای که قراره اجرا بشه هدر بدیم.
طبیعتاً در پروژه های HPC هم مشابه پروژه های عادی، میتونیم به استفاده از container ها فکر کنیم. معروف ترین container platform در دنیای مهندسی نرم افزار Docker هست اما پروژه های HPC به علت ماهیت داینامیک منابع محاسباتی در دسترس نیازهای متفاوتی در این زمینه دارند.

یکی از container platform هایی که مخصوص کلاستر های محاسبات سنگین طراحی شده Singularity هست و میتونید ازش روی کلاستر هایی که منابعشون توسط Slurm مدیریت میشه هم استفاده کنید.

مستندات پروژه:
📙 SingularityCE User Guide
https://docs.sylabs.io/guides/4.1/user-guide/

@hpcnerds
👍4