Benchmarks

Performance of Terrarium.jl across architectures and resolutions. This page is generated at documentation-build time from benchmark/assets/benchmark_results.json, which is updated by benchmark/manual_benchmarking.jl. Running the benchmark on another architecture adds a series to each figure, a column to the overview table, and a section to the bottom of this page.

Every configuration runs for a fixed number of time steps without output. Initialization and - under Reactant - XLA compilation happen before the clock starts and are reported separately; the timed section covers only the stepping loop. A run is timed once and takes a few seconds, so treat the numbers as indicative: ±20% between repetitions is normal.

The benchmark grids are full Gaussian grids in which every point is an active land column (i.e. a. rock planet configuration), so a real land–sea mask at the same resolution has roughly a third as many columns. The model configurations themselves are defined in benchmark/model_configurations.jl.

Scaling with resolution

land scaling across architectures

land_no_vegetation scaling across architectures

soil_heat scaling across architectures

Overview: SYPD across architectures

Simulated years per wallclock day for each configuration and resolution. — means the architecture has not been benchmarked yet, skipped that resolution, or could not run that configuration; the per-architecture sections below say which.

ConfigurationColumnscpu-x86gpu-nvidiareactant-cpureactant-gpu
land128273316——
land51276316——
land204819242——
land46083.35189——
land81924.86142——
land184322.1885——
land414720.9644——
land737280.5438——
land1658880.2438——
land_no_vegetation1283041435——
land_no_vegetation512801429——
land_no_vegetation204820984——
land_no_vegetation46088.81602——
land_no_vegetation81924.99426——
land_no_vegetation184322.2389——
land_no_vegetation414721.01115——
land_no_vegetation737280.5694——
land_no_vegetation1658880.2599——
soil_heat1285781204884969110785
soil_heat5121481159311925111800
soil_heat2048376419683994046
soil_heat46081718447150664078
soil_heat81929.26346786241518
soil_heat184324.12171544320687
soil_heat414721.823921529516
soil_heat737281.02644858047
soil_heat1658880.46596424342

Architecture: cpu-x86

Created for Terrarium.jl v0.1.4 on Sun, 09 Aug 2026 20:35:28 in default mode (1x time steps, 1 thread(s)).

Machine details — cpu-x86

julia> versioninfo()
Julia Version 1.12.2
Commit ca9b6662be4 (2025-11-20 16:25 UTC)
Build Info:
  Official https://julialang.org release
Platform Info:
  OS: Linux (x86_64-linux-gnu)
  CPU: 128 × AMD EPYC 9554 64-Core Processor
  WORD_SIZE: 64
  LLVM: libLLVM-18.1.7 (ORCJIT, znver4)
  GC: Built with stock GC
Threads: 1 default, 1 interactive, 1 GC (on 128 virtual cores)
Environment:
  LD_LIBRARY_PATH = /usr/local/lib:/usr/local/lib:

Model configurations, default resolution — cpu-x86

ConfigurationResColumnsΔtStepsSYPDms/stepMcell-steps/sMemory
land3.75°46086002173.494710.2936.86 MiB
landnovegetation3.75°46086002179.371750.7895.76 MiB
soil_heat3.75°46086002171796.11.443.85 MiB

Land model, horizontal resolution — cpu-x86

ConfigurationResColumnsΔtStepsSYPDms/stepMcell-steps/sMemory
land22.50°12860020002736.010.639204.14 KiB
land11.25°51260019537621.50.715789.14 KiB
land5.62°20486004881985.90.7153.06 MiB
land3.75°46086002173.354900.2826.86 MiB
land2.81°81926001224.863380.72812.20 MiB
land1.88°18432600542.187550.73327.43 MiB
land1.25°41472600240.9617100.72861.71 MiB
land0.94°73728600200.5430300.73109.70 MiB
land0.62°165888600200.2468800.724246.81 MiB

Land model without vegetation, horizontal resolution — cpu-x86

ConfigurationResColumnsΔtStepsSYPDms/stepMcell-steps/sMemory
landnovegetation22.50°12860020003045.40.711171.16 KiB
landnovegetation11.25°51260019538020.60.747661.66 KiB
landnovegetation5.62°20486004882082.70.7432.56 MiB
landnovegetation3.75°46086002178.811860.7425.76 MiB
landnovegetation2.81°81926001224.993290.74610.23 MiB
landnovegetation1.88°18432600542.237380.74923.00 MiB
landnovegetation1.25°41472600241.0116300.76451.74 MiB
landnovegetation0.94°73728600200.5629100.7691.98 MiB
landnovegetation0.62°165888600200.2565600.758206.94 MiB

Soil heat conduction, horizontal resolution — cpu-x86

ConfigurationResColumnsΔtStepsSYPDms/stepMcell-steps/sMemory
soil_heat22.50°12860020005782.841.35114.63 KiB
soil_heat11.25°512600195314811.11.39443.13 KiB
soil_heat5.62°20486004883744.41.381.72 MiB
soil_heat3.75°46086002171799.41.393.85 MiB
soil_heat2.81°81926001229.261771.396.85 MiB
soil_heat1.88°18432600544.123991.3915.40 MiB
soil_heat1.25°41472600241.829031.3834.65 MiB
soil_heat0.94°73728600201.0216101.3861.60 MiB
soil_heat0.62°165888600200.4635601.4138.59 MiB

Number of soil layers — cpu-x86

ConfigurationResColumnsLΔtStepsSYPDms/stepMcell-steps/sMemory
land3.75°4608106006512274.80.6163.70 MiB
land3.75°460820600326121380.675.28 MiB
land3.75°4608306002178.22000.696.86 MiB
land3.75°4608606001094.233880.71311.62 MiB
land3.75°4608100600652.636260.73717.95 MiB

Number format, Float32 vs Float64 — cpu-x86

ConfigurationNFResColumnsΔtStepsSYPDms/stepMcell-steps/sMemory
landFloat323.75°46086002173.135240.2646.86 MiB
landFloat643.75°46086002176.72450.56413.73 MiB

Time stepper — cpu-x86

ConfigurationVariantResColumnsΔtStepsSYPDms/stepMcell-steps/sMemory
landForwardEuler3.75°46086002178.042040.6766.86 MiB
landHeun3.75°46086002174.143960.3496.86 MiB

Architecture: gpu-nvidia

Created for Terrarium.jl v0.1.4 on Sun, 09 Aug 2026 20:02:07 in default mode (1x time steps, 1 thread(s)).

Machine details — gpu-nvidia

julia> versioninfo()
Julia Version 1.12.2
Commit ca9b6662be4 (2025-11-20 16:25 UTC)
Build Info:
  Official https://julialang.org release
Platform Info:
  OS: Linux (x86_64-linux-gnu)
  CPU: 128 × AMD EPYC 9554 64-Core Processor
  WORD_SIZE: 64
  LLVM: libLLVM-18.1.7 (ORCJIT, znver4)
  GC: Built with stock GC
Threads: 1 default, 1 interactive, 1 GC (on 128 virtual cores)
Environment:
  LD_LIBRARY_PATH = /usr/local/lib:/usr/local/lib:
julia> CUDA.versioninfo()
CUDA toolchain: 
- runtime 13.3.0, artifact installation
- driver 580.126.9 for 13.3
- compiler 13.3.33, artifact installation

CUDA libraries: 
- cuBLAS: 13.6.0
- cuSPARSE: 12.8.2
- cuSOLVER: 12.2.6
- cuFFT: 12.3.0
- cuRAND: 10.4.3
- CUPTI: 2026.2.1 (API 13.3.1)
- NVML: 13.0.0+580.126.9

Julia packages: 
- CUDACore: 6.2.1
- GPUArrays: 11.5.9
- GPUCompiler: 1.23.0
- KernelAbstractions: 0.9.42
- CUDA_Driver_jll: 13.3.0+1
- CUDA_Compiler_jll: 0.4.4+1
- CUDA_Runtime_jll: 0.23.0+1
- NVPTX_LLVM_Backend_jll: 22.1.7+1

Toolchain:
- Julia: 1.12.2
- LLVM: 18.1.7

1 device:
  0: NVIDIA H100 80GB HBM3 (sm_90, 77.995 GiB / 79.647 GiB available)
     compiles to sm_90a / PTX 9.3 (LLVM: sm_90a / PTX 9.0)

Model configurations, default resolution — gpu-nvidia

ConfigurationResColumnsΔtStepsSYPDms/stepMcell-steps/sMemory
land3.75°460860021715610.513.16.86 MiB
landnovegetation3.75°46086002176762.4356.95.76 MiB
soil_heat3.75°460860021736830.4463103.85 MiB

Land model, horizontal resolution — gpu-nvidia

ConfigurationResColumnsΔtStepsSYPDms/stepMcell-steps/sMemory
land22.50°12860020003165.190.739204.14 KiB
land11.25°51260019533165.22.95789.14 KiB
land5.62°20486004882426.789.073.06 MiB
land3.75°46086002171898.715.96.86 MiB
land2.81°819260012214211.621.212.20 MiB
land1.88°18432600548519.228.827.43 MiB
land1.25°41472600244437.533.261.71 MiB
land0.94°7372860020384351.5109.70 MiB
land0.62°165888600203843.1115246.81 MiB

Land model without vegetation, horizontal resolution — gpu-nvidia

ConfigurationResColumnsΔtStepsSYPDms/stepMcell-steps/sMemory
landnovegetation22.50°128600200014351.143.35171.16 KiB
landnovegetation11.25°512600195314291.1513.4661.66 KiB
landnovegetation5.62°20486004889841.6736.82.56 MiB
landnovegetation3.75°46086002176022.7350.75.76 MiB
landnovegetation2.81°81926001224263.8563.810.23 MiB
landnovegetation1.88°18432600548918.43023.00 MiB
landnovegetation1.25°414726002411514.386.951.74 MiB
landnovegetation0.94°73728600209417.412791.98 MiB
landnovegetation0.62°165888600209916.7299206.94 MiB

Soil heat conduction, horizontal resolution — gpu-nvidia

ConfigurationResColumnsΔtStepsSYPDms/stepMcell-steps/sMemory
soil_heat22.50°1286002000120480.13628.2114.63 KiB
soil_heat11.25°5126001953115930.142108443.13 KiB
soil_heat5.62°204860048864190.2562401.72 MiB
soil_heat3.75°4608600217184470.089115503.85 MiB
soil_heat2.81°819260012234670.4745196.85 MiB
soil_heat1.88°184326005417150.95857715.40 MiB
soil_heat1.25°41472600243924.1929734.65 MiB
soil_heat0.94°73728600206442.5586761.60 MiB
soil_heat0.62°165888600205962.761810138.59 MiB

Number of soil layers — gpu-nvidia

ConfigurationResColumnsLΔtStepsSYPDms/stepMcell-steps/sMemory
land3.75°4608106006512686.137.523.70 MiB
land3.75°4608206003262227.4112.45.28 MiB
land3.75°4608306002171908.64166.86 MiB
land3.75°4608606001097920.813.311.62 MiB
land3.75°4608100600659617.226.817.95 MiB

Number format, Float32 vs Float64 — gpu-nvidia

ConfigurationNFResColumnsΔtStepsSYPDms/stepMcell-steps/sMemory
landFloat323.75°46086002171699.714.26.86 MiB
landFloat643.75°46086002171699.714.313.73 MiB

Time stepper — gpu-nvidia

ConfigurationVariantResColumnsΔtStepsSYPDms/stepMcell-steps/sMemory
landForwardEuler3.75°46086002173025.4325.46.86 MiB
landHeun3.75°460860021797178.126.86 MiB

Architecture: reactant-cpu

Created for Terrarium.jl v0.1.4 on Sun, 09 Aug 2026 20:12:54 in default mode (1x time steps, 1 thread(s)).

Machine details — reactant-cpu

julia> versioninfo()
Julia Version 1.12.2
Commit ca9b6662be4 (2025-11-20 16:25 UTC)
Build Info:
  Official https://julialang.org release
Platform Info:
  OS: Linux (x86_64-linux-gnu)
  CPU: 128 × AMD EPYC 9554 64-Core Processor
  WORD_SIZE: 64
  LLVM: libLLVM-18.1.7 (ORCJIT, znver4)
  GC: Built with stock GC
Threads: 1 default, 1 interactive, 1 GC (on 128 virtual cores)
Environment:
  LD_LIBRARY_PATH = /usr/local/lib:/usr/local/lib:

Reactant backend: cpu (selected with Reactant.set_default_backend("cpu")).

Model configurations, default resolution — reactant-cpu

ConfigurationResColumnsΔtStepsSYPDms/stepMcell-steps/sMemoryCompileStatus
land3.75°4608———————failed: MethodError
landnovegetation3.75°4608———————failed: ErrorException
soil_heat3.75°460860021714841.111253.85 MiB31.6 sok

Land model, horizontal resolution — reactant-cpu

ConfigurationResColumnsΔtStepsSYPDms/stepMcell-steps/sMemoryStatus
land22.50°128——————failed: MethodError
land11.25°512——————failed: MethodError
land5.62°2048——————failed: MethodError
land3.75°4608——————failed: MethodError
land2.81°8192——————failed: ErrorException
land1.88°18432——————failed: ErrorException
land1.25°41472——————failed: ErrorException
land0.94°73728——————failed: ErrorException
land0.62°165888——————failed: ErrorException

Land model without vegetation, horizontal resolution — reactant-cpu

ConfigurationResColumnsΔtStepsSYPDms/stepMcell-steps/sMemoryStatus
landnovegetation22.50°128——————failed: ErrorException
landnovegetation11.25°512——————failed: ErrorException
landnovegetation5.62°2048——————failed: ErrorException
landnovegetation3.75°4608——————failed: ErrorException
landnovegetation2.81°8192——————failed: ErrorException
landnovegetation1.88°18432——————failed: ErrorException
landnovegetation1.25°41472——————failed: ErrorException
landnovegetation0.94°73728——————failed: ErrorException
landnovegetation0.62°165888——————failed: ErrorException

Soil heat conduction, horizontal resolution — reactant-cpu

ConfigurationResColumnsΔtStepsSYPDms/stepMcell-steps/sMemoryCompile
soil_heat22.50°1286002000849690.0193199114.63 KiB14.6 s
soil_heat11.25°5126001953119250.138112443.13 KiB14.6 s
soil_heat5.62°204860048868390.242561.72 MiB14.7 s
soil_heat3.75°460860021715061.091273.85 MiB1.1 s
soil_heat2.81°81926001228621.91296.85 MiB15.0 s
soil_heat1.88°18432600544433.7114915.40 MiB15.7 s
soil_heat1.25°414726002415210.811534.65 MiB16.7 s
soil_heat0.94°73728600208519.311461.60 MiB18.4 s
soil_heat0.62°165888600204239.5126138.59 MiB23.2 s

Number of soil layers — reactant-cpu

ConfigurationResColumnsLΔtStepsSYPDms/stepMcell-steps/sMemoryStatus
land3.75°460810——————failed: MethodError
land3.75°460820——————failed: MethodError
land3.75°460830——————failed: MethodError
land3.75°460860——————failed: MethodError
land3.75°4608100——————failed: MethodError

Number format, Float32 vs Float64 — reactant-cpu

ConfigurationNFResColumnsΔtStepsSYPDms/stepMcell-steps/sMemoryStatus
landFloat323.75°4608——————failed: MethodError
landFloat643.75°4608——————failed: MethodError

Time stepper — reactant-cpu

ConfigurationVariantResColumnsΔtStepsSYPDms/stepMcell-steps/sMemoryStatus
landForwardEuler3.75°4608——————failed: MethodError
landHeun3.75°4608——————failed: MethodError

Architecture: reactant-gpu

Created for Terrarium.jl v0.1.4 on Sun, 09 Aug 2026 20:11:03 in default mode (1x time steps, 1 thread(s)).

Machine details — reactant-gpu

julia> versioninfo()
Julia Version 1.12.2
Commit ca9b6662be4 (2025-11-20 16:25 UTC)
Build Info:
  Official https://julialang.org release
Platform Info:
  OS: Linux (x86_64-linux-gnu)
  CPU: 128 × AMD EPYC 9554 64-Core Processor
  WORD_SIZE: 64
  LLVM: libLLVM-18.1.7 (ORCJIT, znver4)
  GC: Built with stock GC
Threads: 1 default, 1 interactive, 1 GC (on 128 virtual cores)
Environment:
  LD_LIBRARY_PATH = /usr/local/lib:/usr/local/lib:
julia> CUDA.versioninfo()
CUDA toolchain: 
- runtime 13.3.0, artifact installation
- driver 580.126.9 for 13.3
- compiler 13.3.33, artifact installation

CUDA libraries: 
- cuBLAS: 13.6.0
- cuSPARSE: 12.8.2
- cuSOLVER: 12.2.6
- cuFFT: 12.3.0
- cuRAND: 10.4.3
- CUPTI: 2026.2.1 (API 13.3.1)
- NVML: 13.0.0+580.126.9

Julia packages: 
- CUDACore: 6.2.1
- GPUArrays: 11.5.9
- GPUCompiler: 1.23.0
- KernelAbstractions: 0.9.42
- CUDA_Driver_jll: 13.3.0+1
- CUDA_Compiler_jll: 0.4.4+1
- CUDA_Runtime_jll: 0.23.0+1
- NVPTX_LLVM_Backend_jll: 22.1.7+1

Toolchain:
- Julia: 1.12.2
- LLVM: 18.1.7

1 device:
  0: NVIDIA H100 80GB HBM3 (sm_90, 19.239 GiB / 79.647 GiB available)
     compiles to sm_90a / PTX 9.3 (LLVM: sm_90a / PTX 9.0)

Reactant backend: gpu (selected with Reactant.set_default_backend("gpu")).

Model configurations, default resolution — reactant-gpu

ConfigurationResColumnsΔtStepsSYPDms/stepMcell-steps/sMemoryCompileStatus
land3.75°4608———————failed: MethodError
landnovegetation3.75°4608———————failed: ErrorException
soil_heat3.75°4608600217659410.024955503.85 MiB31.5 sok

Land model, horizontal resolution — reactant-gpu

ConfigurationResColumnsΔtStepsSYPDms/stepMcell-steps/sMemoryStatus
land22.50°128——————failed: MethodError
land11.25°512——————failed: MethodError
land5.62°2048——————failed: MethodError
land3.75°4608——————failed: MethodError
land2.81°8192——————failed: ErrorException
land1.88°18432——————failed: ErrorException
land1.25°41472——————failed: ErrorException
land0.94°73728——————failed: ErrorException
land0.62°165888——————failed: ErrorException

Land model without vegetation, horizontal resolution — reactant-gpu

ConfigurationResColumnsΔtStepsSYPDms/stepMcell-steps/sMemoryStatus
landnovegetation22.50°128——————failed: ErrorException
landnovegetation11.25°512——————failed: ErrorException
landnovegetation5.62°2048——————failed: ErrorException
landnovegetation3.75°4608——————failed: ErrorException
landnovegetation2.81°8192——————failed: ErrorException
landnovegetation1.88°18432——————failed: ErrorException
landnovegetation1.25°41472——————failed: ErrorException
landnovegetation0.94°73728——————failed: ErrorException
landnovegetation0.62°165888——————failed: ErrorException

Soil heat conduction, horizontal resolution — reactant-gpu

ConfigurationResColumnsΔtStepsSYPDms/stepMcell-steps/sMemoryCompile
soil_heat22.50°12860020001107850.0148259114.63 KiB14.4 s
soil_heat11.25°51260019531118000.01471050443.13 KiB14.4 s
soil_heat5.62°2048600488940460.017535201.72 MiB14.6 s
soil_heat3.75°4608600217640780.025653903.85 MiB1.1 s
soil_heat2.81°8192600122415180.039662106.85 MiB14.9 s
soil_heat1.88°1843260054206870.0794696015.40 MiB15.5 s
soil_heat1.25°414726002495160.173721034.65 MiB16.6 s
soil_heat0.94°737286002080470.2041080061.60 MiB18.4 s
soil_heat0.62°1658886002043420.37813200138.59 MiB23.1 s

Number of soil layers — reactant-gpu

ConfigurationResColumnsLΔtStepsSYPDms/stepMcell-steps/sMemoryStatus
land3.75°460810——————failed: MethodError
land3.75°460820——————failed: MethodError
land3.75°460830——————failed: MethodError
land3.75°460860——————failed: MethodError
land3.75°4608100——————failed: MethodError

Number format, Float32 vs Float64 — reactant-gpu

ConfigurationNFResColumnsΔtStepsSYPDms/stepMcell-steps/sMemoryStatus
landFloat323.75°4608——————failed: MethodError
landFloat643.75°4608——————failed: MethodError

Time stepper — reactant-gpu

ConfigurationVariantResColumnsΔtStepsSYPDms/stepMcell-steps/sMemoryStatus
landForwardEuler3.75°4608——————failed: MethodError
landHeun3.75°4608——————failed: MethodError