It’s not only common blocks, it’s also procedure variables with save attribute.
If you need to solve multiple systems of parametrized ODE’s (e.g. for different combinations of parameters or many different initial conditions) then OpenMPI or co-arrays could be an option. Here’s a table (original source) which highlights some differences between SPMD and co-arrays:
If you need to solve a single large system of ODEs in parallel I’d recommend taking a look at Sundials. Here’s the list of NVector types available in Sundials for different accelerator/parallel programming paradigms:

