I didn’t mean to say Fortran is the only option, but I find it hits a sweet spot between raw speed and writability. Easy dynamic arrays, good numerics.
I assume you’re familiar with the one about the scientist who spent two months optimising his/her code to shave 20 seconds off the runtime? I frequently face that kind of problem - most of what I write gets run <50 times so hand tweaking for the CPU is generally a step too far for me - but I’m happy when the libraries I use have done this.
GPUs are of course important, when your problem suits that approach. OpenCL I like a lot, as a generic interface to whatever accelerator you have, and it’s also available in Fortran (if a bit experimental).
Rust looks interesting. Based on your comments I’ve started to look into it, so thank you for that.