If I had to choose I would choose CUDA. I recently got myself into JAX, I think it has a fair chance of being the dominant framework in 5-10 years; but also, a native version of CUDA is coming to Python so ... idk.
deal.ii has a bunch of tutorials worth gold [1].
I learned by following them and that's why I ended up using deal.ii for almost everything. If you know C well, moving to C++ won't be quite difficult. deal.ii uses a lot of templates, that would prob. be the most unusual thing to you, coming from C, but you'll get used to the syntax.
Pay special care to the heat equation [2], tutorial #26. Diffusion is modeled by a trivially modified version of it; heat uses a constant diffusion coefficient, in molecular diffusion this can vary.
Roughly speaking, about 50% of what you'll model will be derived from effects related to diffusion, another 40% will have to do with "tangible" mechanical effects (think of pressure, structure, tension), the remaining 10% has to do with parametrizing the model properly for the Biology and Chemistry involved.
Although, 90/90 rules applies and you'll end up spending a lot of time on this "last" parametrization. A lot of these constants are unknown, you'll have to guesstimate them based on whatever plausible theory you can come up with. But this is not a bad thing, recall that we are doing simulations in silico, so, you could (and should) try all ranges of parameters and study the results. You might find something that makes a lot of sense and then you can work backwards and make a prediction on the operative range of these unknown parameters.
I did that with my plant model, there was a hormone transporter for which the rate of transport had not been determined. So, I tried a wide range of values and measured the viability of the phenotypes over it; it very clearly showed that only a narrow window of values allowed it, on a very specific time during plant development, derived from the geometrical configuration of that specific spot at that moment. We then devised an experiment for that, measured it, and it was bullseye over what I predicted. See [3].
That would have made for a killer paper if I had been rigorous enough to publish it, but I got my M.Sc. out of it and kind of forgot about it. Don't do that, publish everything you find!
1: https://dealii.org/current/doxygen/deal.II/Tutorial.html
2: https://en.wikipedia.org/wiki/Heat_equation
3: https://moralestapia.com/img/Fig.19.png
3 Footnote: PIN1,4,7 are hormone transporters in Arabidopsis thaliana (a model plant). A specific balance of transporter activity is required to recover phenotype. In the plot, the darker the region, the most likely it is to reproduce the phenotype. The red dot is the optimal value, but anything in the black area is also really good, which is what we measured and found to be within it.