Index
References are by chapter and section number.
- !$acc parallel loop — 35.2
- -c flag (compile only) — 2.3, 8.5
- -fast (nvfortran) — 30.2
- -fbacktrace — 13.3, 30.3
- -fcheck=all — 13.3
- -fcheck=all (removed for production) — 30.3
- -fcheck=all (run-time checks) — 2.4
- -fcheck=bounds — 13.3, 13.6
- -fcoarray (single / lib) — 32.5
- -fexternal-blas — 16.1
- -ffast-math — 30.1
- -ffast-math (FP reordering) — 27.1
- -ffpe-trap — 13.3, 20.4, 30.3
- -finit-real=snan — 13.3, 13.6, 30.3
- -flto (link-time optimization) — 30.1
- -fno-protect-parens — 30.1
- -fopt-info / -fopt-info-vec / -fopt-info-vec-missed — 27.5
- -fopt-info-optimized / -fopt-info-inline — 27.5
- -fp-model precise / fast (Intel) — 30.2
- -fprofile-generate / -fprofile-use — 30.4
- -funroll-loops — 27.1
- -g (debug info) — 2.4
- -I flag (module search path) — 8.5
- -ipo (Intel interprocedural optimization) — 30.2
- -llapack / -lblas — 21.5
- -march=native — 27.1, 27.5, 30.1, 30.5
- -Minfo (nvfortran) — 30.2
- -O0 (no optimization) — 30.1, 30.3
- -O1 — 30.1
- -O2 — 30.1, 30.3
- -O2 (optimization) — 2.4
- -O2 (production default) — 27.1
- -O3 — 30.1, 30.3
- -O3 (auto-vectorization) — 27.1, 27.5
- -Ofast — 30.1
- -Ofast (and -ffast-math danger) — 27.1, Spaced Review
- -Os (optimize for size) — 30.1
- -qopt-report (Intel) — 30.2
- -qopt-report (Intel) / -Minfo (nvfortran) — 27.5
- -std=f2018 — 2.4
- -Wall — 2.4
- -xHost (Intel) — 30.2
- .and. / .or. / .not. — 4.1, 4.4
- .eqv. / .neqv. — 4.1
- .f90 file extension — 2.2, 2.5
- .mod file — 8.5
- .smod file — 8.5
- 0.1 + 0.2 problem — 20.1
- 80/20 rule (profiling) — 36.5
- @assertEqual — 37.1
- @test annotation — 37.1
- _FillValue — 25.5
!$omp atomic— 33.4!$omp critical— 33.4!$omp do— 33.2!$omp parallel do— 33.2, Project Checkpoint!$omp parallel` / `!$omp end parallel— 33.1!$omp sections` / `!$omp section— 33.2!$omp single— 33.2, 33.4!$omp task` / `!$omp taskwait— 33.5!$omp workshare— 33.2!f2pydirective — 15.2, 15.3-fopenmp(compile flag) — 33.1-std=legacy(gfortran flag) — 17.1, 17.6.f2py_f2cmap(custom kind mapping) — 15.5, Project Checkpointassert np.allclose(same-answer check) — 15.5bind(c)(for FFIs) — 15.4default(none)— 33.3firstprivateclause — 33.3intent(hide)/depend— 15.2intent(inout)(F-contiguity requirement) — 15.3lastprivateclause — 33.3np.isfortran/np.asfortranarray— 15.3omp_get_num_threads— 33.1omp_get_thread_num— 33.1omp_libmodule — 33.1OMP_NUM_THREADS— 33.1order='F'— 15.3, Project Checkpointprivateclause — 33.3reductionclause — 33.3schedule(dynamic)— 33.4schedule(guided)— 33.4schedule(static)— 33.4sharedclause — 33.3time.perf_counter— 15.5
A
- A edit descriptor (character) — 7.1
- A-stability — 23.5
- abs — 3.5
- absolute stability / stability region — 23.5
- absorption — 20.3
- abstract interface (for a deferred binding) — 10.4
- abstract interface (for the RHS) — 23.1, 23.2, 23.4
- abstract interface (pure) — 22.2, 22.3
- abstract solver_t (framework) — 10.6
- abstract type — 10.4
- accelerator — 31.3, 35.1
- action (open specifier) — 7.3
- actual argument — 6.1
- adaptive integration — 22.3
- adaptive step size — 23.3
- AddressSanitizer / -fsanitize=address — 13.4
- adjustl — 12.2
- adjustr — 12.2
- aerospace (Fortran employers) — 40.1
- aimag — 3.1
- aliasing (pointers/targets) — 29.4
- aliasing (rigorous) — 27.3
- allocatable array — 5.5
- allocatable array (replacing over-dimensioned static) — 19.1
- allocatable component — 9.4
- allocatable components self-deallocate — 10.4
- allocatable vs pointer — 11.4
- allocate / deallocate — 5.5
- allocated — 5.5
- allocated (for strings) — 12.1
- alpha (thermal diffusivity) — Project Checkpoint
- Amdahl's Law — 31.2, 31.4, 31.5, 38.4
- amplification factor — 23.5, 24.4
- amplification factor (G) — 38.3
- analytical solution — 38.3
- analytical solution (as oracle) — 37.2
- app/ src/ test/ layout — 16.3
- architectural role — 36.2
- argument association — 6.1, 6.3
- arithmetic IF — 17.4
- arithmetic IF, translating — 19.2
- arithmetic intensity — 16.1, 21.2, 28.3, 29.2, 35.4, 35.5, 38.4
- arithmetic intensity (flop/byte) — Case Study 2
- arithmetic operators — 3.3
- array (first-class object) — 5.1
- array bounds (custom) — 5.1
- array constructor — 5.3
- array descriptor — 6.6
- array layout contract — 14.5
- array of derived types — 9.1, 9.5
- array section — 5.2
- Array-of-Structures / Structure-of-Arrays — 9.5
- asind / acosd / atand / atan2d — 39.1
- assembled solver architecture — 38.1
- assert harness (hand-rolled) — 37.1
- assertion — 13.5
- assertion (in testing) — 37.1
- associated (intrinsic) — 11.2
- associated (two-argument form) — 11.2
- association status — 11.2
- assumed-length character (len=*) — 12.1, 12.5
- assumed-shape argument (requires explicit interface) — 8.2
- assumed-shape array — 6.6
- assumed-shape array (replacing assumed-size) — 19.3
- assumed-size array — 6.6
- assumed-size array, translating — 19.3
- assumed-size to assumed-shape — 18.1
- asterisk fill (field overflow) — 7.1
- atomic operations (atomic_add) — 32.3
- attributes(global) — 35.3
- auto-vectorization — 29.3
- automatic deallocation — 5.5, 9.4, 11.4
- automatic reallocation on assignment — 12.1, 12.3
- axpy (BLAS Level-1) — 28.3
- axpy / daxpy kernel — 27.3, 27.4
B
- backward compatibility — 39.2
- backward difference — 22.1
- backward GOTO (loop) — 19.2
- barrier (
!$omp barrier) — 33.4 - base case — 6.5
- baseline -march (conservative target) — 30.5
- benchmark methodology — 28.5
- big-bang rewrite — 18.2
- binary tree — 11.3
- bind(c) — 14.2, 14.3, 14.4, 14.5
- binding label — 14.2
- bit-for-bit — 37.2
- bit-for-bit reproducibility — 18.3
- BLAS — 1.2, 16.1, 21.2, 21.5
- BLAS (tuned; dgemm) — 29.2, 29.5
- BLAS levels (1/2/3) — 16.1, 21.2
- BLOCK DATA — 17.2
- BLOCK DATA (mentioned) — 8.4
- BLOCK DATA, translating — 19.1
- blocked matrix multiply — 29.2
- boundary vs interior points — Project Checkpoint
- breakpoint — 13.4
- build configuration — 36.3
- build provenance / manifest — 30.4
- build system — 36.3
- building on the target node — 30.5
- Butcher tableau — 23.2
- by-reference passing — 14.4, 14.5
- by-value passing — 14.3
C
- C ABI — 15.4
- C application binary interface (ABI) — 14.1, 14.2
- C interoperability (Fortran 2023 additions) — 39.1
- C linkage — 14.2
- C struct interoperability — 14.5
- C-contiguous — 15.3
- C-interoperable kind — 14.1
- c_associated — 14.1
- c_bool — 14.1, 14.5
- c_char — 14.1, 14.5
- c_double — 14.1, 14.3, 14.4
- c_f_pointer — 11.5, 14.1, 14.5
- c_float — 14.1
- c_funptr — 14.1
- c_int — 14.1, 14.4
- c_int64_t — 14.1
- c_loc — 14.1, 14.5
- c_null_char — 14.1, 14.5
- c_null_ptr — 14.1
- c_ptr — 14.1, 14.5
- c_size_t — 14.1
- c_sizeof — 14.1, 14.5
- cache blocking — 21.2
- cache blocking (tiling) — 29.2, Project Checkpoint
- cache line — 5.6, 27.2, 29.1, 29.2, 33.5
- cache miss rate — 28.4
- cachegrind — 28.4
- call graph — 28.2
- call hoisting / common-subexpression elimination — 27.4
- callback — 11.5
- calling C from Fortran — 14.3
- calling Fortran from C — 14.4
- calling the parent's method — 10.1
- Cannot open module file (error) — 8.5
- capstone (heat solver) — 38.1, Project Checkpoint
- career spectrum (science ↔ software) — 40.2
- carriage control (history) — 7.1
- case default — 4.2
- case range — 4.2
- catastrophic cancellation — 20.3
- catastrophic cancellation (in differentiation) — 22.4
- CELL_DATA (contrast) — 26.2
- central difference — 22.1, 22.4
- central second difference — 24.2
- CESM (climate model) — 1.2, 36.1
- CF conventions — 25.5
- cffi — 15.4
- CFL condition — 24.4, 38.2
- CFL condition (as an ODE stability limit) — 23.4
- cg_annotate — 28.4
- character (type) — 3.1
- character type — 12.1
- characterization test — 18.2
- chemical kinetics (reaction ODEs) — 23.6
- chunking — 25.3
- CI with two compilers — 30.5
- circular module dependency — 8.5, 8.6
- class (passed object) — 9.2
- class (polymorphic declaration) — 10.2, 10.5, 10.6
- class default (guard) — 10.3
- class is (guard) — 10.3
- classof — 39.1
- clock speed plateau — 31.1
- close statement — 7.3
- close-enough (tolerance) comparison — 18.3
- CMake — 16.5, 36.3
- co_broadcast — 32.4
- co_max / co_min — 32.4
- co_reduce — 32.4
- co_sum — 32.4
- coalesced memory access — 35.5 (spaced review)
- coarray — 32.1, 32.2, 32.3, 32.4, 32.5
- coarrays (as parallel model) — 31.3
- coarse-grained vs fine-grained polymorphism — 10.5, 10.6
- codimension — 32.2
- coindexed access — 32.2
- collapse clause — 35.2 (project checkpoint)
- collective communication — 34.3
- collective subroutine — 32.4
- colormap — 26.5
- column-major / row-major (Python view) — 15.3
- column-major loop order — 29.1, Project Checkpoint
- column-major loop order (payoff of Ch.5) — 27.2, Project Checkpoint
- column-major order — 1.3, 5.6
- column-major order (as used by EQUIVALENCE) — 17.3
- column-major storage (matrices) — 21.1
- column-major vs row-major (interop) — 14.5
- column-major write order — 26.2
- comment (!) — 2.5
- comment (C in column 1 vs !) — 19.4
- comment line (
C/*in column 1) — 17.1 - commit hash (tie a result to) — 37.4
- COMMON block — 1.4, 17.2
- COMMON block (legacy) — 8.4
- COMMON block to module — 18.1, 18.4
- COMMON block, translating — 19.1
- COMMON-to-module conversion — 8.4
- communicator — 34.1
- comparing floats with == (pitfall) — 20.1
- compilation order — 8.5, 8.6
- compile-link-run cycle — 2.3
- compiler — 1.1
- compiler (installing) — 2.1
- compiler error vs linker error — 2.3
- Compiler Explorer (godbolt) — 27.5, Further Reading
- Compiler Explorer (godbolt.org) — 16.5
- compiler flag — 2.4
- compiler matrix — 37.3
- compiler_options (intrinsic) — 37.5
- compiler_options() — 30.4
- compiler_version (intrinsic) — 37.5
- compiler_version() — 30.4
- complex (type) — 3.1
- component — 9.1
- component section (array%comp) — 9.1
- compression — 25.3
- computational scientist — 40.2
- computational-science paper — 38.6
- compute-bound — 28.3
- compute-bound kernel — 29.2
- computed GOTO — 17.4
- computed GOTO, translating — 19.2
- concatenation (//) — 12.1, 12.3
- condition number — 20.5
- conditional expression — 39.1, Project Checkpoint
- conditional-compilation sentinel (
!$) — 33.1 - conditioning — 20.5
- conditioning (linear solve) — 21.3
- conformable / conformance — 5.3, 5.5
- conjugate trick — 20.3
- constructor (user-defined) — 9.4
- contains — 6.5
- contiguous (attribute) — 11.5
- contiguous (foreshadowed) — 6.6
- contiguous attribute — 29.4, Project Checkpoint
- continuation (&) — 2.5
- continuation (column 6 vs trailing &) — 19.4
- continuation column (column 6) — 17.1
- continuous integration — 37.3
- Conventions attribute — 25.5
- convergence — 22.4
- convergence order (as test) — 37.2
- convergence plot (log-log, slope 2) — 38.5
- convergence study — 38.3
- coordinate variable — 25.5
- copy-in/copy-out — 29.4
- corank — 32.2
- coshape — 32.2
- count — 5.4, 5.7
- count_max (clock wrap-around) — 28.1
- count_rate — 28.1
- counted do loop — 4.3
- Courant number — 24.4
- cProfile (Python) — 28.2
- CPU frequency scaling (turbo) — 28.5
- CPU time — 28.1
- cpu_time (intrinsic) — 28.1
- critical construct — 32.3
- ctags / tags index — 36.4
- ctypes — 15.4
- CUDA — 35.5
- CUDA Fortran — 35.3
- curse of dimensionality — 22.5
- cycle — 4.4
- cycle (replacing GOTO) — 19.2
D
- D1 / LLd cache misses — 28.4
- dangling pointer — 11.2
- dangling pointer (revisited; owned Ch. 11) — 13.4
- data clause (copyin/copyout/copy/create/present) — 35.2, 35.4
- data flow — 36.5
- data parallelism — 31.4
- data race — 33.3
- data race (previewed) — 31.3
- data region (!$acc data) — 35.2, 35.4
- data scoping — 33.3
- DATA statement — 17.5
- DATA statement, translating — 19.1
- data-sharing attribute — 33.3
- DataArray (VTK XML) — 26.2
- dataset (HDF5) — 25.3
- dead-code elimination (benchmark trap) — 28.5
- dead-code elimination (checksum guard) — Case Study 2
- deadlock (send/recv) — 34.2
- declaration initializer — 19.1
- declared type — 10.2
- deep copy — 9.4
- deep copy on assignment — 11.4
- default initialization (component) — 9.1
- defensive programming — 13.5
- deferred binding — 10.4
- deferred shape — 5.5
- deferred-length character — 12.1, 12.3
- deferred-length character component — 9.4
- deferred/assumed type parameter — 9.3
- definable entity — 6.2
- deflate — 25.3
- degree-valued trig (sind, cosd, tand) — 39.1, Project Checkpoint
- deleted/removed feature — 19.5
- Dennard scaling — 31.1
- dependency graph — 8.6
- dependency pinning (tag) — 16.3
- derived type — 9.1
- derived type (replacing EQUIVALENCE / COMMON) — 19.1
- determinism (result vs. schedule) — Project Checkpoint
- development build vs release build — 30.3
- development vs release build — 2.4
- device — 35.1
- device array (device attribute) — 35.3
- dgecon — 21.3
- dgemm — 21.2
- dgemm / tuned BLAS (compute-bound) — 28.3
- dgesv — 16.1, 21.3
- dgesvd — 16.1, 21.4
- dgtsv (tridiagonal solve) — 21.6
- diffusion equation — 24.1
- diffusion number (mesh Fourier number) — 24.3, 24.4
- diffusion number (r) — 38.2
- diffusion number limit (r <= 1/4) — 24.4
- digits (intrinsic) — 20.2
- DIMENSIONS (VTK) — 26.2
- diminishing returns — 29.5
- direct access — 7.3
- direct sparse solvers (SuperLU/MUMPS/PETSc) — 21.6
- directive-based offload — 35.2
- directory layout — 36.1
- Dirichlet boundary condition — 24.5
- disassociated pointer — 11.2
- discrete maximum principle (convex-combination bound) — Project Checkpoint
- dispatch cost / inlining barrier — 10.5
- distributed memory — 31.3
- distributed memory (MPI as) — 34.1
- do concurrent — 4.6
- do concurrent (performance use) — 29.3, Project Checkpoint
- do concurrent (requires purity) — 27.4
- do concurrent reduce — 39.4
- do loop — 4.3
- do while — 4.3
- doc comment (
!>/!!) — 37.4 - domain decomposition — 34.4
- domain decomposition (previewed) — 31.3, 31.5
- domain decomposition (previewed; owned Ch.34) — 32.5, Project Checkpoint
- domain scientist — 40.2
- dot_product — 5.4, 21.1
- double precision — 3.1, 3.2
- double precision (binary64) — 20.1, 20.6
- dp (double-precision kind) — 3.2
- DPI (figure resolution) — 26.5
- driver program — 36.2
- dsyev — 16.1, 21.4
- dtype — 15.3
- dtype matching (NumPy ↔ Fortran kind) — 15.3
- dummy argument — 6.1
- dummy-argument association restriction — 27.3
- dx (grid spacing) — Project Checkpoint
- dynamic dispatch — 10.2, 10.5
- dynamic type — 10.2
E
- E edit descriptor (scientific) — 7.1
- eager vs rendezvous protocol — 34.2
- edit descriptor — 3.7, 7.1
- edit descriptor i0 — 12.4
- edit descriptor i6.6 — 12.4
- eigenvalue problem — 21.4
- eigenvector property (stencil) — 38.3
- EISPACK — 16.1
- elemental — 6.4
- elemental (optimization implications) — 27.4
- elementwise operation — 5.3
- else if — 4.1
- elsewhere — 4.5
- embarrassingly parallel — Project Checkpoint
- embedded Runge-Kutta pair (RKF45, Dormand-Prince) — 23.3
- encapsulation — 8.2
- end-of-file — 7.6
- endianness — 7.5
- endianness (portability) — 25.1, 25.3
- energy drift / symplectic integrator — 23.4, 23.6
- energy sector (seismic, reservoir, reactor codes) — 40.1
- ENTRY — 17.4
- entry point — 36.4
- enum, bind(c) (Fortran 2003) — 39.1
- enumeration type — 39.1, Project Checkpoint
- epsilon (intrinsic) — 20.2
- EQUIVALENCE — 17.3
- EQUIVALENCE (modernizing) — 18.1
- EQUIVALENCE, translating — 19.1
- errmsg (allocation) — 13.1
- error estimate (compare resolutions) — 22.3
- error stop — 13.1, 13.2
- error stop (I/O guard) — 7.6
- error stop (in modernization) — 18.1, 18.4
- error termination — 13.2
- error_unit (standard error) — 13.1, 13.5
- ES edit descriptor (scientific, mantissa 1-9) — 7.1
- Euler's method — 23.1, 23.4, 23.5
- Euler's method, backward (implicit) — 23.5
- exact-zero comparison (arithmetic IF trap) — 19.2
- exactness (test on polynomials) — 37.1
- executable — 2.3
- Exercise 1.28 (the sealed answer) — What's Next
- exit — 4.3, 4.4
- exit (replacing GOTO) — 19.2
- exit code — 13.2
- exit code (test failure) — 37.1, 37.3
- explicit interface — 6.5, 6.6, 8.2
- explicit scheme — 24.3
- explicit-shape array — 6.6
- exponent bias — 20.1
- exponentiation — 3.3, 3.5
- extends (attribute) — 10.1, 10.6
- extension module — 15.2
- extension type / child type — 10.1
- extent — 5.1
- external procedure — 6.5
F
- F edit descriptor (fixed-point) — 7.1
- F-contiguous — 15.3
- f0.2 edit descriptor — 2.7
- f2py — 15.2, 15.3, 15.5
- f2py build command (
-c -m) — 15.2 - fall-through (absence of) — 4.2, 4.7
- false sharing — 33.5
- fast Fourier transform — 16.2
- feature paper (committee) — 39.2
- FFTW — 16.2
- field width — 7.1
- field-width overflow (asterisks) — 12.4
- field_t (project) — 9.5, Project Checkpoint
- final procedure (destructor) — 10.4
- finalization — 10.4
- findent / fprettify (conversion tools) — 18.1
- finite difference — 22.1, 22.4
- finite-difference method — 24.2
- five-point stencil — 17.6, 24.2, 38.2
- five-step reading method — 17.6
- fixed-form source — 2.5, 17.1
- fixed-form to free-form — 19.4
- fixed-form to free-form conversion — 18.1
- fixed-length character — 12.1, 12.6
- flat profile — 28.2
- floating-point exception — 13.3
- floating-point exception trap — 13.3
- floating-point representation — 20.1
- forall (obsolescent) — 4.6
- FORD — 16.5, 37.4
- fork–join model — 33.1
- form team / change team — 32.4
- format string — 3.7, 7.1
- formatted output — 3.7
- fortls (Fortran Language Server) — 16.5, 39.3
- fortls (Fortran language server) — 36.4
- Fortran 2018 — 1.1, 1.6
- Fortran 2023 — 1.1
- Fortran 2023 (ISO/IEC 1539-1:2023) — 39.1, 39.2
- Fortran 202Y (informal next revision) — 39.4
- FORTRAN 77 — 1.1
- FORTRAN 77 fixed-length strings — 12.6
- Fortran 90 — 1.1
- Fortran Discourse — 16.4
- FORTRAN I (1957) — 1.1
- Fortran Playground — 39.3
- Fortran programmer shortage — 40.3
- fortran-lang — 16.4, 39.3
- forward difference — 22.1
- forward-Euler (time stepping) — 24.3
- fpm — 16.3
- fpm (derives compile order) — 8.5, 8.6
- fpm (Fortran Package Manager) — 36.3, 39.3
- fpm new / build / run / test — 16.3
- fpm.toml — 36.3
- fpm.toml (manifest) — 16.3
- frame_name (indexed filenames) — 26.3, Project Checkpoint
- free lunch (end of) — 31.1
- free-form source — 1.1, 1.4, 2.5
- frozen interface (stable signature) — 38.1
- FTCS (Forward-Time Centred-Space) — 24.3
- FTCS scheme — 38.2
- function — 6.1
- fused multiply-add (FMA) — 30.1
G
- Gauss-Legendre rule — 22.3
- Gaussian quadrature — 22.3
- gdb — 13.4
- generics — 39.4
- get (remote read) — 32.2
- gfortran — 2.1, 2.2, 2.4
- gfortran --version — 2.1
- ghost cell — 24.5, 34.4
- git dependency — 16.3
- git tag (release / submission) — 37.4
- GitHub Actions — 37.3
- global order of accuracy (integrator) — 23.1, 23.2
- global shared state — 17.2
- global state — 36.5
- gnuplot — 26.4
- GO TO (unconditional) — 17.4
- golden file / reference — 37.2
- golden output / reference capture — 18.3
- GOTO to structured control — 18.1, 18.4
- GOTO, translating — 19.2
- governing equation (heat equation) — 38.2
- GPGPU (general-purpose GPU computing) — 35.5
- gprof — 28.2
- GPU (graphics processing unit) — 31.3, 35.1, 35.5
- GPU offload (do concurrent) — 39.4
- grep (navigation) — 36.4
- grid cell (data structure) — 9.5
- group (HDF5) — 25.3
- Gustafson's Law — 31.2, 31.4
H
- h5dcreate_f / h5dopen_f / h5dwrite_f / h5dread_f / h5dclose_f (dataset) — 25.3, 25.4
- h5dump (header inspection) — 25.3
- H5F_ACC_TRUNC_F / H5F_ACC_RDONLY_F — 25.3, 25.4
- h5fc (compile helper) — 25.3
- h5fcreate_f / h5fopen_f / h5fclose_f — 25.3, 25.4
- h5gcreate_f / h5gopen_f / h5gclose_f / h5gn_members_f (group) — 25.3
- h5open_f / h5close_f (library init) — 25.3
- H5P_DATASET_CREATE_F — 25.3
- h5pcreate_f / h5pset_chunk_f / h5pset_deflate_f / h5pset_shuffle_f / h5pclose_f (property list) — 25.3
- h5screate_simple_f / h5sclose_f (dataspace) — 25.3
- H5T_NATIVE_DOUBLE / H5T_IEEE_F64LE — 25.3
- halo (halo cell) — 34.4
- halo exchange — 32.2, 34.4, Project Checkpoint
- halving test (measuring order) — 22.4
- hand-tuning (SIMD intrinsics, manual unroll) — 29.4
- harmonic oscillator (as a system) — 23.4
- HDF5 — 16.2, 25.3, 25.4
- hdf5 module — 25.3
- heat (program / driver) — Project Checkpoint
- heat equation — 1.6, 24.1, 24.3
- heat_io module — 8.6, Project Checkpoint
- heat_solver module — 8.6, Project Checkpoint
- heat_types module — Project Checkpoint
- Hello, world — 2.2
- heterogeneous collection (array of boxes idiom) — 10.2
- hid_t / hsize_t (HDF5 kinds) — 25.3
- hidden bit — 20.1
- high-level language — 1.1
- high-performance computing (HPC) — 1.2
- history attribute (provenance) — 25.5
- Hollerith constant — 17.5
- Hollerith constant, translating — 19.5
- Homebrew (macOS) — 2.1
- honest benchmarking — 15.5
- honest performance claims — 38.6
- host — 35.1
- host association — 6.5
- host association (submodule) — 8.3
- host/device model — 35.1
- host–device transfer — 35.4
- hot kernel / hot loop — 15.1, 15.5
- hot loop — 28.3
- hot spot — 28.3
- HPC engineer — 40.2
- huge (intrinsic) — 20.2
- hybrid MPI+OpenMP — 34.5
I
- I edit descriptor (integer) — 7.1
- I/O module — 36.2
- I/O-bound — 28.1
- IEEE 754 — 20.1
- IEEE 754, relaxed by -Ofast — 30.1
- ieee_arithmetic module — 20.4
- ieee_is_finite — 20.4
- ieee_is_nan — 20.4
- ierr (error-code argument) — 34.1
- if construct — 4.1
- if, logical (single-line) — 4.1
- ifort (Intel Fortran, deprecated) — 30.2
- ifx (Intel Fortran, LLVM-based) — 30.2
- illegal instruction (from -march=native) — 30.1, 30.5
- image — 32.1, 32.2
- image_index (intrinsic) — 32.2
- ImageData — 26.1, 26.2
- implicit heat step (backward Euler) — Project Checkpoint
- implicit interface — 8.2
- implicit method — 23.5
- implicit none — 2.6
- implicit none (in modernization) — 18.1
- implicit none (replacing implicit typing) — 19.4
- implicit save — 13.6
- implicit SAVE — 17.5
- implicit SAVE (initializer trap) — 19.1
- implicit save (module variable) — 8.2
- implicit scheme — 24.3
- implicit typing — 2.6
- implicit typing (I–N rule) — 17.5
- implicit typing, translating — 19.4
- implied-do — 5.3
- implied-DO — 17.5
- import (in an interface body) — 10.4, 10.6
- import statement — 14.3
- imshow (matplotlib) — 26.4, 26.5
- INCLUDE — 17.2
- INCLUDE (legacy) — 8.4
- incremental modernization — 18.2
- index (intrinsic) — 12.2, 12.3
- index-based structure — 11.3
- indexed output filename (heat_NNNNNN.vtk) — 12.4, Project Checkpoint
- Inf (infinity) — 20.4
- infinite do — 4.3
- info — 21.3
- initial-value problem (IVP) — 23.1
- inlining — 27.1, 27.4
- inquire statement — 7.3
- int64 clock counters — 28.1
- integer (type) — 3.1
- integer division — 3.3, 3.4
- integer loop counter — 4.3
- integer overflow — 13.6
- integer-division trap — 3.4
- Intel MKL — 16.1, 21.5
- intent — 6.2
- intent (adding to legacy args) — 18.1
- intent → Python signature — 15.2
- intent(in) — 6.2
- intent(inout) — 6.2
- intent(out) — 6.2
- intent, adding to legacy procedures — 19.3
- interactive Fortran / REPL — 39.3
- interface block (for C) — 14.3
- interface checking (argument matching) — 8.2
- interface vs implementation separation — 8.3
- internal file — 12.4
- internal procedure — 6.5
- internal procedure (contrasted) — 8.1
- internal procedure (replacing statement function) — 19.3
- internal read (text to number) — 12.4
- internal write (number to text) — 12.4
- interoperable derived type — 14.5
- intrinsic function — 3.2, 3.5
- intrinsic module — 14.1
- intrinsic type — 3.1
- invariant (as test) — 37.1
- iomsg — 7.6
- iostat — 7.6
- iostat_end — 7.6
- iostat_eor — 7.6
- ipiv (pivot array) — 21.3
- is_contiguous — 11.5
- ISO/IEC 1539-1 — 39.2
- iso_c_binding — 14.1, 14.2, 14.3
- iso_fortran_env — 3.2
- iso_fortran_env / real64 — 2.7
- iterative solvers (CG/GMRES) — 21.6
J
- J3 committee — 39.2
- Jacobi relaxation — 17.6
- Jacobi relaxation (legacy PLATE) — 18.4
- jump table — 4.2
K
- Kahan (compensated) summation — 20.3, case study 2
- Karp-Flatt metric — 31.5 (case study 1)
- kernel — 35.3
- keyword argument — 6.3
- keyword argument (requires explicit interface) — 8.2
- kind (intrinsic) — 3.2
- kind parameter — 3.2
- kind parameter (PDT) — 9.3
- kinds module (dp) — 8.1, 8.6
- kinds module (project) — Project Checkpoint
L
- labeled DO / shared CONTINUE, translating — 19.2
- labeled field (data structure) — 9.4, 9.5
- Language Server Protocol (LSP) — 16.5
- LAPACK — 1.2, 16.1, 16.2, 21.1, 21.2, 21.3, 21.4, 21.5, 21.6
- LAPACK (used) — 29.2, 29.5
- LAPACK routine naming — 16.1, 21.3, 21.4
- Laplace's equation — 24.1, 24.6
- Laplace's equation (steady state) — 17.6
- laplacian (procedure) — 24.2, Project Checkpoint
- Laplacian operator — 24.1, 24.2
- launch configuration (<<
>>) — 35.3 - layered design (depend downward) — 8.6
- ldb — 21.3
- leading dimension (lda) — 21.3
- leaked identifiers (HDF5 handles) — 25.3
- least squares (dgels) — 21.4, case-study-02
- legacy code — 1.4
- Legendre polynomial (roots as nodes) — 22.3
- len — 12.1, 12.2
- len_trim — 12.1, 12.2
- length parameter (PDT) — 9.3
- LFortran — 16.4, 39.3
- libgfortran (linking) — 14.4
- link-time optimization — 30.1
- linked list — 11.3
- linker — 2.3
- linking LAPACK/BLAS — 21.5
- LINPACK — 16.1
- LINPACK benchmark — 16.1
- list-directed I/O — 7.2
- list-directed internal read — 12.4
- LLVM Flang — 39.3
- local truncation error — 23.1
- lock / unlock (lock_type) — 32.3
- logical (type) — 3.1
- logical operator — 4.1
- longer source lines (Fortran 2023) — 39.1
- loop fission (distribution) — 29.1
- loop fusion (jamming) — 29.1, Project Checkpoint
- loop interchange (compiler) — 27.2
- loop order (cache locality) — 28.4
- loop order (column-major habit) — 4.4
- loop order (column-major) — 5.6
- loop reordering (for column-major) — 29.1
- loop trip count — 4.3
- loop unrolling — 27.1
- loop-carried dependency — 15.1, 15.5, 29.3
- loop-invariant hoisting — 29.1, Project Checkpoint
- LU factorization — 16.1, 21.3
M
- machine balance — 29.5, 38.4
- machine epsilon — 20.2
- Make — 16.5
- Make (build system) — 36.3
- Makefile — 36.3
- manufactured solution — 38.3
- mask — 5.7
- masked reduction — 5.7
- masked whole-array assignment — 4.5
- master thread — 33.1
- matmul — 5.4
- matplotlib (plotting the field) — Project Checkpoint
- matplotlib post-processing — 26.5
- matrix ASCII format — 26.4
- matrix multiply (hand-rolled) — 21.2
- matrix product (matmul) — 21.1
- max / min (intrinsics) — 3.5
- maximum principle (as test) — 37.1, 37.2
- maxloc / minloc — 5.4
- maxval / minval — 5.4
- meaning-preserving optimization — 27.1
- memory aliasing — 17.3
- memory bandwidth / traffic — 27.2
- memory overlay — 8.4
- memory-bound — 27.2, 28.3, Project Checkpoint
- memory-bound kernel — 29.2, 29.5, 38.4, Project Checkpoint
- merge — 5.7
- merge intrinsic (contrast) — 39.1
- Meson — 16.5, 36.3
- Meson build backend (f2py, Python 3.12+) — 15.2
- message passing — 34.1
- method — 9.2
- method of lines — 23.4, 24.1, 24.3, Project Checkpoint
- midpoint method (RK2) — 23.2
- minimum vs median (statistic) — 28.5
- mixed-language compile and link — 14.3, 14.4
- mixed-mode arithmetic — 3.3
- mod — 3.5
- modern vs legacy string handling — 12.6
- modernization recipe (eight steps) — 18.1
- module — 1.4, 8.1, 8.2, 8.4, 8.6
- module (replacing COMMON) — 19.1
- module function / module subroutine prefix — 8.3
- module hierarchy — 8.6, 36.1
- module load (HPC) — 2.1
- module map — 36.4
- module map (final solver) — 38.1
- module namespacing (f2py) — 15.2
- module procedure — 8.1
- module procedure shorthand (end procedure) — 8.3
- module variable — 8.1, 8.2
- module variable (as hidden input) — 36.5
- modulo — 3.5
- Monte Carlo integration — 22.5
- Moore's Law — 31.1
- move_alloc — 11.4
- MPI — 16.2
- MPI (Message Passing Interface) — 34.1, 34.5
- MPI-IO — 34.5
- mpi_allreduce — 34.3
- mpi_bcast — 34.3
- mpi_comm_rank — 34.1
- mpi_comm_size — 34.1
- MPI_COMM_WORLD — 34.1, 34.2, 34.3, 34.4
- MPI_DOUBLE_PRECISION (datatype) — 34.2
- mpi_finalize — 34.1
- mpi_gather — 34.3, 34.4
- mpi_init — 34.1
- mpi_irecv — 34.4
- mpi_isend — 34.4
- MPI_PROC_NULL — 34.4
- mpi_recv — 34.2
- mpi_reduce — 34.3
- mpi_scatter — 34.3
- mpi_send — 34.2
- mpi_sendrecv — 34.2, 34.4
- MPI_STATUS_SIZE (status) — 34.2
- MPI_SUM / MPI_MAX (reduce ops) — 34.3
- mpi_wait / mpi_waitall — 34.4
- mpif90 (compiler wrapper) — 34.5
- mpirun (-np) — 34.5
- MSYS2 (Windows) — 2.1
- multi-GPU (one MPI rank per GPU) — project checkpoint
- multicore (shift to) — 31.1
- multidimensional array — 5.2
- mutual exclusion — 33.4
N
- name mangling — 14.2
- name mangling (trailing underscore) — 15.4
- name mangling (trailing underscore, MAIN__) — 28.2
- name= clause — 14.2
- named constant — 3.6
- named constant in a module — 8.1
- named construct — 4.4
- named integer constant idiom ("poor man's enum") — 39.1
- named loop / named construct — 19.2
- namelist — 7.4
- namelist group — 7.4
- NaN — 20.4
- NaN / Inf (used; owned Ch. 20) — 13.3, 13.6
- national laboratories (as Fortran employers) — 40.1
- ncdump (CDL header) — 25.2, 25.5
- nearest (intrinsic) — 20.2
- nested loops — 4.4
- nested type — 9.1
- NetCDF — 16.2, 25.2, 25.4, 25.5
- netcdf module — 25.2
- netcdf-fortran (Fortran interface) — 16.2
- Neumann boundary condition — 24.5
- never rewrite what you can refactor — 18.2
- Newton's method (for implicit steps) — 23.5
- newunit — 7.3
- nf-config (compile helper) — 25.2
- nf90_close — 25.2
- nf90_create — 25.2
- nf90_def_dim — 25.2
- nf90_def_var — 25.2, 25.5
- NF90_DOUBLE / NF90_GLOBAL / NF90_CLOBBER / NF90_NETCDF4 / NF90_UNLIMITED — 25.2, 25.4
- nf90_enddef (define mode vs data mode) — 25.2
- nf90_get_att — 25.4
- nf90_get_var — 25.4
- nf90_inq_dimid — 25.4
- nf90_inq_varid — 25.4
- nf90_inquire_dimension — 25.4
- nf90_noerr / nf90_strerror (status check) — 25.2
- nf90_open — 25.4
- nf90_put_att — 25.2, 25.5
- nf90_put_var — 25.2
- nine-point stencil — 24.2
- no-aliasing advantage — 1.3, 11.4
- no-aliasing advantage (used) — 29.3, 29.4
- node (quadrature) — 22.2, 22.3
- node (self-referential derived type) — 11.3
- non-associativity (floating point, in testing) — 37.2
- non-associativity of addition — 20.3
- non-blocking communication — 34.4
- nopass — 9.2
- normal equations — case-study-02
- null-terminated string — 14.5
- nullify — 11.2
- num_images (intrinsic) — 32.1
- numerical equivalence — 18.3
- numerical stability — 20.5
- numpy.loadtxt — 26.4, 26.5
- nvfortran (-acc / -cuda / -Minfo=accel) — 35.2, 35.3
- nvfortran (NVIDIA HPC SDK) — 30.2
O
- Oak Ridge / Livermore / Los Alamos / Argonne / Sandia — 40.1
- object file — 2.3
- object file (.o) — 8.5
- obsolescent feature — 4.6, 19.5, 39.2
- offload — 35.1, 35.2
- one module per file convention — 36.1, 36.4
- one responsibility per module — 8.6
- one-based indexing — 5.1
- one-based thread index — 35.3
- open statement — 7.3
- open-source contribution — 40.5
- OpenACC — 35.2
- OpenBLAS — 16.1, 21.5
- OpenCoarrays (caf / cafrun) — 32.5
- OpenMP — 33.1, 33.2, 33.3, 33.4, 33.5
- operator precedence — 3.3
- optimal step size — 22.4
- optimization exposes latent bugs — 30.3
- optimization level — 30.1
- optimization level (-O0/-O1/-O2/-O3) — 27.1
- optimization license — 27.4
- optimization report — 27.5
- optimizing compiler — 27.1
- optional argument — 6.3
- optional argument (requires explicit interface) — 8.2
- optional output argument — 6.3
- oracle problem — 37.1
- orbital motion (two-body / Kepler) — 23.6
- order of accuracy — 22.4
- order of accuracy (observed) — 38.3
- order of accuracy (second-order) — 24.2
- ORIGIN / SPACING (VTK) — 26.2
- out-of-bounds access — 13.6
- overflow — 20.4
- overflow / NaN (from instability) — 24.4
- overriding a type-bound procedure — 10.1
P
- packed vs scalar instructions (…pd vs …sd) — 27.5
- paper structure (IMRaD for simulation) — 38.6
- parallel efficiency — 31.4
- parallel overhead — 31.4
- parallel region (
!$omp parallel) — 33.1 - parallelizable fraction — 31.2
- parallelization plan — 31.5
- parameter (named constant) — 2.7, 3.6
- parameterized derived type (PDT) — 9.3
- parametric polymorphism — 39.4
- ParaView — 26.3, 26.5
- parent component (self%parent_t) — 10.1
- parent type / base type — 10.1
- partial differential equation (PDE) — 24.1
- partial pivoting — 21.3
- particle (data structure) — 9.1, 9.5
- partitioned global address space (PGAS) — 31.3, 32.1, 32.5
- pass attribute — 9.2
- pass by reference (Fortran) — 15.4
- pass(name) — 9.2
- passed-object dummy argument — 9.2
- per-step transfer (pitfall) — 35.4 (case study 1)
- percent operator (%) — 9.1
- perceptually uniform colormap (viridis/inferno) — 26.5
- perf (hardware counters) — 28.2, 28.4
- performance analysis — 38.4
- periodic boundary condition — 24.5
- pFUnit — 16.5, 37.1
- physics module — 36.2
- PLATE (legacy kernel, modernized) — 19.1, 19.2, 19.3, Project Checkpoint
- PLATE kernel — 17.6
- PLATE kernel (modernized) — 18.4
- playground (play.fortran-lang.org) — 16.4
- pm3d (gnuplot) — 26.4
- point ordering (x fastest) — 26.2
- point-to-point communication — 34.2
- POINT_DATA — 26.2
- pointer — 11.1, 11.2, 11.4
- pointer aliasing — 1.3
- pointer assignment (=>) — 11.1
- pointer chasing — 11.3
- pointer component (vs allocatable) — 9.4
- polyglot profile (Fortran + Python + HPC) — 40.4
- polymorphic array (single dynamic type) — 10.2
- polymorphic container — 11.5
- polymorphism — 10.2
- population dynamics (logistic, Lotka-Volterra) — 23.6
- portability across compilers — 30.5
- portable precision — 3.2
- portfolio piece — 40.5, Project Checkpoint
- positional association — 17.2
- postcondition — 13.5
- power density (thermal limit) — 31.1
- precision (intrinsic) — 3.2, 20.2
- precision loss — 13.6
- precision vs accuracy — 20.6
- precondition — 13.5
- premature optimization — 28.5
- premature optimization (Knuth) — 29.5, Overview
- present (intrinsic) — 6.3
- print '(a)' (formatted) — 2.2
- print * (list-directed) — 2.2
- print statement — 2.2, 7.2
- private attribute — 8.2
- private-by-default idiom — 8.2
- problem statement (paper) — 38.2
- procedure argument (integrand) — 22.2
- procedure argument (RHS to a solver) — 23.1, 23.2, 23.4
- procedure pointer — 11.5
- process (MPI) — 34.1
- product — 5.4
- product rule (multidimensional) — 22.5
- profile-guided optimization (PGO) — 30.4
- profiling — 28.1, 28.2
- profiling instrumentation (-pg) — 28.2
- program / end program — 2.2
- provenance — 37.5
- public attribute — 8.2
- publication-quality figure — 26.5
- punch card (80 columns) — 17.1
- pure — 6.4
- pure (optimization implications) — 27.4
- pure function (from statement function) — 19.3
- put (remote write) — 32.2
- PVD collection file (.pvd) — 26.3
- Python orchestration layer — 15.1
Q
- QUADPACK — 22.2, 22.3
- quadratic formula (stable) — 20.3
- quadrature — 22.2
- quadruple precision (binary128) — 20.1, 20.6
- Quantum ESPRESSO — 36.1
- quick-reference table (Appendix E) — 19.5
R
- race condition — 32.3
- radians vs degrees — 3.5
- rainbow / jet colormap (avoid) — 26.5
- random seed (recording) — 37.5
- range (intrinsic) — 3.2
- rank — 5.1, 5.2, 34.1
- rank (intrinsic) — 5.2
- read statement — 7.2, 7.3
- read_config (namelist) — Project Checkpoint
- reading tracks — 1.6
- README / LICENSE / abstract (packaging) — Project Checkpoint
- real (type) — 3.1, 3.2
- real do counter (deleted) — 4.3, 4.6
- real equality pitfall — 4.1, 4.3
- real(dp) / _dp suffix — 2.7
- real64 — 3.2
- reassociation (compiler) — 37.2
- reassociation (floating-point) — 30.1
- recl (record length) — 7.3
- recompilation cascade — 8.3, 8.5
- record — 7.3
- record marker — 7.5
- recording the flags — 30.4
- RECTILINEAR_GRID / STRUCTURED_GRID / UNSTRUCTURED_GRID — 26.1
- recursion — 6.5
- recursive (attribute) — 6.5
- reduction — 5.4
- reduction (OpenACC clause) — 35.2 (case study 2)
- reduction identity element — 33.3
- reduction to first-order system — 23.4
- refactoring — 18.1, 18.2
- reference BLAS — 21.5
- reference BLAS (Netlib) — 16.1
- reference page (reading) — 21.4
- register pressure — 29.1
- regression reference (expected output) — 17.6
- regression test — 18.3, 37.2
- regression test (vs analytical) — 38.3
- relational operator — 4.1
- relational operators (.LT. vs <) — 19.4
- rename on use (=>) — 8.1
- repeat count (format) — 7.1
- repeat count (in DATA) — 17.5
- repeating binary fraction — 20.1
- repetition (timing) — 28.5
- reproducibility — 37.5, 38.6
- reproducibility (metadata) — 25.5
- reproducible build — 30.4
- request handle — 34.4
- research software engineer (RSE) — 40.2
- reshape — 5.4
- reshape (order=[2,1]) — 21.1
- residency (keeping data on the device) — 35.4
- residual (linear system) — 21.3
- restrict (C keyword) — 1.3
- restrict (C99) — 27.3
- result clause — 6.1
- result_image — 32.4
- results and visualization — 38.5
- revision cadence (five-year) — 39.2
- Richardson extrapolation — 22.3
- Richardson extrapolation (for integrators) — 23.3
- right-hand-side function (RHS) — 23.1, 23.4
- RK4 (classical fourth-order) — 23.2, 23.4, Project Checkpoint
- Robertson problem (stiff benchmark) — 23.6
- Romberg integration — 22.3
- roofline intuition — Case Study 2
- roofline model — 28.3, 29.2, 29.5, 38.4
- round-off floor — 22.4
- row-major vs column-major (tool display) — 25.2
- Runge-Kutta method — 23.2
- runtime aliasing check / loop versioning (C) — 27.3
- résumé, presenting Fortran on — 40.4
S
- save_every (output cadence) — 26.3, Project Checkpoint
- SCALARS / LOOKUP_TABLE — 26.2
- scaled speedup — 31.2
- scan (intrinsic) — 12.2, 12.5
- scarcity as leverage — 40.3
- scheduling — 33.4
- second difference (three-point) — 22.1, Project Checkpoint
- second-difference (spatial) operator — 23.4, Project Checkpoint
- segment (execution) — 32.3
- segment ordering — 32.3
- select case — 4.2
- select case (replacing computed GOTO) — 19.2
- select type — 10.3
- selected_int_kind — 3.2
- selected_real_kind — 3.2, 20.6
- self time vs total time — 28.2
- self-describing format — 7.5, 25.1, 25.3
- separable solution (heat equation) — 37.2
- separate memory spaces — 35.1, 35.4
- separate module procedure — 8.3
- separation of concerns (numerical) — 16.1
- sequential access — 7.3
- serial baseline — 38.4
- serial fraction — 31.2, 31.4, 31.5
- shallow copy / aliasing — 9.4
- shape — 5.1, 5.2
- shape (intrinsic) — 5.2, 5.4
- shared memory — 31.3
- short-circuit evaluation — 39.1
- shuffle filter — 25.3
- side effect — 6.4
- sign / exponent / fraction fields — 20.1
- significand (mantissa) — 20.1
- silent copy (C-to-F) — 15.3
- SIMD — 27.1, 27.5
- SIMD (
!$omp simd`, `!$omp do simd) — 33.5 - SIMD (Single Instruction, Multiple Data) — 29.3
- SIMD instruction set (AVX-512, native tuning) — 30.1
- Simpson's rule — 22.2, 22.3
- Simpson's-rule weights (in RK4) — 23.2
- sin / cos / tan — 3.5
- sind — 39.1, Project Checkpoint
- single precision — 3.2
- single precision (binary32) — 20.1, 20.6
- singular value decomposition (SVD) — 21.4
- size (intrinsic) — 5.1, 5.2, 5.4
- slash edit descriptor (new record) — 7.1
- slope field / direction field — 23.1
- solver module — 36.2
- source tree — 36.1, 36.4
- sourced allocation (allocate source=) — 10.2
- sp / dp / qp kinds — 20.6
- spacing (intrinsic) — 20.2
- sparse format (COO/CSR/CSC) — 21.6
- sparse matrix — 21.6
- speedup (10–100×, illustrative) — 15.5
- speedup ceiling — 31.2
- speedup ceiling (size of the prize) — 28.5
- SPMD (Single Program, Multiple Data) — 32.1
- SPMD (single program, multiple data) — 34.1
- sqrt — 3.5
- src/ app/ test/ layout — Project Checkpoint
- stability (numerical) — 24.4
- stable_dt (procedure) — 24.4, Project Checkpoint
- standard_name / long_name — 25.5
- standards process — 39.2
- stat (allocation) — 13.1
- statement function — 17.4
- statement function (modernizing) — 18.4
- statement function, translating — 19.3
- statement label (columns 1–5) — 17.1
- statistical sampling (profiler) — 28.2
- status (open specifier) — 7.3
- stdlib — 16.4
- stdlib (Fortran standard library) — 39.3
- stdlib_io — 16.4
- stdlib_linalg (solve wrapper) — 21.3
- stdlib_stats — 16.4
- steady state — 24.1, 24.6, 38.5
- steady state (as fixed-point test) — 37.2
- steady-state hand-check (4x4 plate, 37.5/12.5) — Project Checkpoint
- steady-state plate solution (37.5 / 12.5) — 18.4
- stencil (1-D Laplacian) — 22.1, Project Checkpoint
- stencil (procedure, optimized) — 29.1, 29.3, Project Checkpoint
- step (procedure) — 24.3, Project Checkpoint
- step doubling — 23.3
- step size — 23.1, 23.3
- step-size controller / safety factor — 23.3
- stiffness — 23.5
- stop code — 13.2
- stop vs error stop — 13.2
- storage_size (intrinsic) — 25.1
- stream I/O — 7.5
- stride — 5.2, 27.2
- strong scaling — 31.4, 38.4
- struct padding / alignment — 14.5
- structure constructor — 9.1, 9.4
- structure constructor for an extended type — 10.2
- structured grid — 24.6
- structured grid output — 26.1
- STRUCTURED_POINTS dataset — 26.1, 26.2
- submodule — 8.3
- subnormal (denormal) — 20.4
- subroutine — 6.1
- subscript triplet — 5.2
- substring — 12.3
- sum — 5.4, 5.7
- surface-to-volume ratio — 34.4
- symmetry (as test) — 37.1
- sync all — 32.3
- sync images — 32.3
- system of ODEs (first-order) — 23.4
- system_clock (intrinsic) — 28.1
T
- tag (message) — 34.2
- target (attribute) — 11.1
- task parallelism — 31.4
- Taylor series (for error analysis) — 22.1
- team — 32.4
- team_type — 32.4
- temporal blocking — 29.2
- ternary operator (see conditional expression) — 39.1
- test oracle — 37.1
- test-drive — 16.5
- text diff pitfall (compare numbers not text) — 18.3
- text vs binary I/O (at scale) — 25.1
- the 80/20 rule (Pareto principle) — 28.5
- the no-aliasing advantage — 27.3
- thermal diffusivity (alpha) — 24.1
- this_image (cosubscripts form) — 32.2
- this_image (intrinsic) — 32.1, 32.2
- thread (team) — 33.1
- threadIdx / blockIdx / blockDim — 35.3
- threads per block — 35.3
- throughput vs latency — 35.1
- time-loop dependency — 31.5
- time-series output — 26.3
- time-stepping loop (heat solver) — Project Checkpoint
- timers module (tic/toc) — 28.1, Project Checkpoint
- tiny (intrinsic) — 20.2
- token / delimiter — 12.5
- tokenizer — 12.5
- tolerance (floating-point comparison) — 37.1, 37.2
- TOML — 16.3
- TOP500 — 1.2
- topological sort of dependencies — 8.5, 8.6
- trailing-blank trap — 12.3, 12.6
- transfer (intrinsic) — 17.3
- transfer (intrinsic, replacing EQUIVALENCE) — 19.1
- transfer intrinsic — 18.1
- translation dictionary — 19.1, 19.5
- transpose — 5.4, 21.1
- trapezoidal rule — 22.2, 22.5
- trim — 12.2, 12.3
- truncation error — 22.1, 22.4
- truncation toward zero — 3.4
- tuned BLAS vs hand-rolled loop — 27.4
- two-buffer update (parallel safety) — Project Checkpoint
- two-language workflow — 15.1
- two-pass variance — case study 2
- type extension (inheritance) — 10.1
- type is (guard) — 10.3
- type promotion — 3.3
- type vs class — 10.2
- type-bound procedure — 9.2
- typed allocation (allocate type ::) — 10.6
- typeof — 39.1
U
- ULP (unit in the last place) — 20.2
- undefined behavior (aliasing violation) — 27.3, Case Study 1
- undefined pointer — 11.2
- undefined reference (link error) — 21.5
- undefined reference (linker error) — 2.3
- underflow — 20.4
- unformatted I/O — 7.5
- uninitialized variable — 13.6
- unit — 7.3
- unit roundoff — 20.2
- unit stride — 29.1, 29.3, 29.4
- unit test — 37.1
- units (UDUNITS) — 25.5
- unlimited dimension (time series) — 25.4 (exercises)
- unlimited format repeat — 7.1, 7.4
- unlimited-repeat format (*) — 26.4
- unstructured grid — 24.6
- unstructured grid (note) — 26.1
- update self / update host — 35.4
- use mpi vs mpi_f08 — 34.5
- use statement — 8.1
- use, only clause — 8.1, 8.5
- utility module — 36.2
V
- valgrind — 13.4
- validate_config (heat solver) — 13 Project Checkpoint
- validation — 38.3
- validation (vs verification) — 37.2
- value assignment through a pointer — 11.1
- value attribute — 14.3, 14.4
- value semantics — 9.4
- variance / spread (timing) — 28.5
- vector triad (STREAM) — Case Study 2
- vector width (32-byte vectors, AVX) — 27.5
- vectorization (intro) — 27.1, 27.2, 27.4, 27.5
- vectorization report (-fopt-info-vec) — 29.3, 29.4
- verification — 37.2, 38.3
- verification and validation (V&V) — 38.3
- verify (intrinsic) — 12.2, 12.5
- version control (git, for science) — 37.4
- version control (in migration) — 18.2
- VisIt — 26.3
- von Neumann stability analysis — 24.4
- VTI (.vti XML ImageData) — 26.2
- VTK (Visualization Toolkit) — 26.1, 26.2
- VTK / ParaView (time series) — 38.5
- VTK file format (legacy) — 26.1, 26.2
- VTK magic string (# vtk DataFile Version 3.0) — 26.2
- VTK XML format — 26.1, 26.2
W
- wall-clock time — 28.1
- warm-up — 28.5
- warp — 35.1, 35.5
- warp divergence — 35.5
- wave equation — 24.1, 24.4
- weak scaling — 31.4, 38.4
- weather and climate services (NOAA, ECMWF, Met Office) — 40.1
- weight (quadrature) — 22.2, 22.3
- well-conditioned / ill-conditioned — 20.5
- WG5 — 39.2
- what reviewers check — 38.6
- when GPUs help / when they don't — 35.5
- when OOP helps / hurts — 10.5
- where — 4.5, 5.7
- where state lives — 36.5
- where the time goes — 36.5
- whole-array operation — 1.3, 5.3
- WholeExtent (0-based) — 26.2
- with-the-grain vs against-the-grain traversal — 27.2
- work sharing — 33.2
- workflow (CI, .yml) — 37.3
- works-on-my-machine problem — 37.5
- workspace query (lwork = -1) — 21.4
- WRF (weather model) — 1.2, 36.1
- write statement — 7.2, 7.3
- write_field — Project Checkpoint
- write_field_netcdf (project) — Project Checkpoint
- write_vti — 26.2
- write_vtk (canonical signature) — 26.2, Project Checkpoint
- WSL (Windows) — 2.1
X
- X edit descriptor (spaces) — 7.1