-
Notifications
You must be signed in to change notification settings - Fork 33
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Introduce OctaminimalGaussianArray
; smaller, faster but less accurate
#595
Conversation
OctaminimalGaussianArray
, smaller, faster but less accurate
The "exact" tests with Test Summary: | Pass Fail Total Time
Transform: Individual Legendre polynomials | 665163 117 665280 7.6s
trunc = 31 | 33579 21 33600 0.7s
NF = Float32 | 16795 5 16800 0.3s
Grid = FullGaussianGrid | 3360 3360 0.1s
Grid = FullClenshawGrid | 3360 3360 0.0s
Grid = OctahedralGaussianGrid | 3360 3360 0.0s
Grid = OctahedralClenshawGrid | 3360 3360 0.0s
Grid = OctaminimalGaussianGrid | 3355 5 3360 0.1s
NF = Float64 | 16784 16 16800 0.4s
Grid = FullGaussianGrid | 3360 3360 0.1s
Grid = FullClenshawGrid | 3360 3360 0.0s
Grid = OctahedralGaussianGrid | 3360 3360 0.0s
Grid = OctahedralClenshawGrid | 3360 3360 0.0s
Grid = OctaminimalGaussianGrid | 3344 16 3360 0.2s
trunc = 63 | 128608 32 128640 1.5s
NF = Float32 | 64320 64320 0.6s
NF = Float64 | 64288 32 64320 0.9s
Grid = FullGaussianGrid | 12864 12864 0.1s
Grid = FullClenshawGrid | 12864 12864 0.1s
Grid = OctahedralGaussianGrid | 12864 12864 0.1s
Grid = OctahedralClenshawGrid | 12864 12864 0.1s
Grid = OctaminimalGaussianGrid | 12832 32 12864 0.5s
trunc = 127 | 502976 64 503040 5.4s
NF = Float32 | 251520 251520 2.1s
NF = Float64 | 251456 64 251520 3.3s
Grid = FullGaussianGrid | 50304 50304 0.4s
Grid = FullClenshawGrid | 50304 50304 0.8s
Grid = OctahedralGaussianGrid | 50304 50304 0.4s
Grid = OctahedralClenshawGrid | 50304 50304 0.4s
Grid = OctaminimalGaussianGrid | 50240 64 50304 1.3s |
Interpolation tests all pass once we switch to staggered longitudes, i.e. with an offset (not starting at 0˚E) as are also the HEALPix grids defined, first ring 45.0
135.0
225.0
315.0 second ring 22.5
67.5
112.5
157.5
202.5
247.5
292.5
337.5 etc |
So a candidate for a new default grid could be this one 2400 grid points, that's what I'd define as the vs a 24-ring octahedral Gaussian grid as ECMWF defines it, starting with 20 points, no offset, which has, however, 3168 grid points, i.e. +32% |
No proper benchmarking here, but with the |
OctaminimalGaussianArray
, smaller, faster but less accurateOctaminimalGaussianArray
; smaller, faster but less accurate
@hottad just merged, another grid in our grid zoo, the |
Motivated by #594 this reduces the number of grid points on the
OctahedralGaussianGrid
by starting at 4 points around the pole instead of 20. Atnlat_half = 24
, the default resolution, this yields 2400 grid points instead of 3168, i.e. -25%, hopefully making the parameterizations 25% faster, and the whole model by 12.5%-ish as parameterizations are currently more than 50% of total runtime.Number of grid points per ring are (old, new)