Scientific Computing

  1. High-Performance Computing
    1. Principles of Parallel Computing
      1. Concurrency vs Parallelism
        1. Flynn's Taxonomy
          1. SISD
            1. SIMD
              1. MISD
                1. MIMD
                2. Scalability and Performance Metrics
                  1. Speedup
                    1. Efficiency
                      1. Amdahl's Law
                        1. Gustafson's Law
                        2. Parallel Algorithm Design
                          1. Load Balancing
                            1. Communication Patterns
                            2. Parallel Programming Models
                              1. Shared Memory Programming
                                1. OpenMP
                                  1. Parallel Regions
                                    1. Work Sharing Constructs
                                      1. Synchronization
                                        1. Data Sharing Clauses
                                          1. Threads
                                            1. Thread Creation and Management
                                              1. Synchronization Mechanisms
                                                1. Mutexes and Locks
                                                  1. POSIX Threads
                                                  2. Distributed Memory Programming
                                                    1. Message Passing Interface
                                                      1. Point-to-Point Communication
                                                        1. Collective Communication
                                                          1. Communicators and Groups
                                                            1. Derived Data Types
                                                              1. One-Sided Communication
                                                              2. Hybrid Programming
                                                                1. GPU and Accelerator Programming
                                                                  1. CUDA
                                                                    1. Kernel Programming
                                                                      1. Memory Management
                                                                        1. Thread Hierarchy
                                                                          1. Memory Hierarchy
                                                                            1. OpenCL
                                                                              1. Platform Independence
                                                                                1. Device Management
                                                                                  1. OpenACC
                                                                                    1. Compiler Directives
                                                                                      1. Portability
                                                                                    2. HPC Architectures
                                                                                      1. Clusters and Supercomputers
                                                                                        1. Node Architecture
                                                                                          1. Interconnect Topologies
                                                                                            1. Fat Tree Networks
                                                                                              1. Torus Networks
                                                                                              2. Interconnects
                                                                                                1. Network Types
                                                                                                  1. Latency and Bandwidth
                                                                                                    1. InfiniBand
                                                                                                      1. Ethernet
                                                                                                      2. Parallel File Systems
                                                                                                        1. Lustre
                                                                                                          1. GPFS
                                                                                                            1. I/O Bottlenecks
                                                                                                              1. Parallel I/O Strategies
                                                                                                              2. Cloud Computing for HPC
                                                                                                              3. Performance Optimization and Profiling
                                                                                                                1. Performance Analysis
                                                                                                                  1. Identifying Bottlenecks
                                                                                                                    1. Hotspot Analysis
                                                                                                                      1. Scalability Testing
                                                                                                                      2. Code Profiling Tools
                                                                                                                        1. gprof
                                                                                                                          1. Valgrind
                                                                                                                            1. Performance Counters
                                                                                                                              1. Intel VTune
                                                                                                                                1. NVIDIA Nsight
                                                                                                                                2. Memory Optimization
                                                                                                                                  1. Data Alignment
                                                                                                                                    1. Cache Optimization
                                                                                                                                      1. Memory Access Patterns
                                                                                                                                      2. Vectorization
                                                                                                                                        1. Compiler Vectorization
                                                                                                                                          1. Manual Vectorization
                                                                                                                                            1. SIMD Instructions
                                                                                                                                            2. Load Balancing
                                                                                                                                              1. Static vs Dynamic Scheduling
                                                                                                                                                1. Work Distribution Strategies
                                                                                                                                                2. Communication Optimization
                                                                                                                                                  1. I/O Optimization