Computational Geosciences

  1. High-Performance and Parallel Computing
    1. Principles of Parallel Computing
      1. Concurrency vs. Parallelism
        1. Definitions
          1. Task Decomposition
            1. Synchronization
            2. Flynn's Taxonomy
              1. SISD
                1. Single Instruction, Single Data
                  1. Traditional Sequential Computing
                  2. SIMD
                    1. Single Instruction, Multiple Data
                      1. Vector Processing
                      2. MISD
                        1. Multiple Instruction, Single Data
                          1. Fault-Tolerant Systems
                          2. MIMD
                            1. Multiple Instruction, Multiple Data
                              1. Multiprocessor Systems
                            2. Amdahl's Law and Gustafson's Law
                              1. Amdahl's Law
                                1. Serial Fraction Limitations
                                  1. Speedup Calculations
                                  2. Gustafson's Law
                                    1. Scaled Speedup
                                      1. Problem Size Scaling
                                      2. Implications for Scalability
                                        1. Strong vs. Weak Scaling
                                          1. Parallel Efficiency
                                      3. Parallel Architectures
                                        1. Shared Memory Systems
                                          1. Multicore Processors
                                            1. Cache Hierarchies
                                              1. Memory Consistency
                                                1. NUMA Effects
                                                2. Memory Hierarchies
                                                  1. Cache Levels
                                                    1. Memory Bandwidth
                                                      1. Latency Considerations
                                                    2. Distributed Memory Systems
                                                      1. Network Topologies
                                                        1. Mesh Networks
                                                          1. Torus Networks
                                                            1. Fat Tree Networks
                                                            2. Message Passing
                                                              1. Communication Patterns
                                                                1. Latency and Bandwidth
                                                                  1. Network Protocols
                                                                2. GPU and Accelerator-Based Computing
                                                                  1. GPU Architecture
                                                                    1. Streaming Multiprocessors
                                                                      1. Memory Hierarchy
                                                                        1. Thread Organization
                                                                        2. Accelerator Programming Models
                                                                          1. Data Parallel Computing
                                                                            1. Kernel Execution
                                                                              1. Memory Management
                                                                          2. Parallel Programming Models
                                                                            1. Message Passing Interface
                                                                              1. Point-to-Point Communication
                                                                                1. Send and Receive Operations
                                                                                  1. Blocking vs. Non-blocking
                                                                                    1. Communication Modes
                                                                                    2. Collective Communication
                                                                                      1. Broadcast
                                                                                        1. Reduce Operations
                                                                                          1. All-to-All Communication
                                                                                        2. OpenMP
                                                                                          1. Thread Parallelism
                                                                                            1. Parallel Regions
                                                                                              1. Work Sharing Constructs
                                                                                                1. Thread Synchronization
                                                                                                2. Synchronization
                                                                                                  1. Critical Sections
                                                                                                    1. Barriers
                                                                                                      1. Atomic Operations
                                                                                                    2. Hybrid MPI/OpenMP
                                                                                                      1. Combining Distributed and Shared Memory
                                                                                                        1. Programming Model
                                                                                                          1. Load Balancing
                                                                                                            1. Performance Considerations
                                                                                                          2. CUDA/OpenCL for GPUs
                                                                                                            1. GPU Kernel Programming
                                                                                                              1. Thread Hierarchy
                                                                                                                1. Memory Access Patterns
                                                                                                                  1. Optimization Techniques
                                                                                                                  2. Memory Management
                                                                                                                    1. Host-Device Transfers
                                                                                                                      1. Memory Types
                                                                                                                        1. Memory Optimization