How can a large, Fortran-based number crunching codebase be modernized?
Posted
by
Dave Mateer
on Programmers
See other posts from Programmers
or by Dave Mateer
Published on 2011-10-15T21:44:58Z
Indexed on
2012/04/05
11:42 UTC
Read the original article
Hit count: 362
A friend in academia asked me for advice (I'm a C# business application developer).
He has a legacy codebase which he wrote in Fortran in the medical imaging field. It does a huge amount of number crunching using vectors. He uses a cluster (30ish cores) and has now gone towards a single workstation with 500ish GPUS in it.
However where to go next with the codebase so:
- Other people can maintain it over next 10 year cycle
- Get faster at tweaking the software
- Can run on different infrastructures without recompiles
After some research from me (this is a super interesting area) some options are:
- Use Python and CUDA from Nvidia
- Rewrite in a functional language. For example, F# or Haskell
- Go cloud based and use something like Hadoop and Java
- Learn C
What has been your experience with this? What should my friend be looking at to modernize his codebase?
UPDATE: Thanks @Mark and everyone who has answered. The reasons my friend is asking this question is that it's a perfect time in the projects lifecycle to do a review. Bringing research assistants up to speed in Fortran takes time (I like C#, and especially the tooling and can't imagine going back to older languages!!)
I liked the suggestion of keeping the pure number crunching in Fortran, but wrapping it in something newer. Perhaps Python as that seems to be getting a stronghold in academia as a general-purpose programming language that is fairly easy to pick up.
See Medical Imaging and a guy who has written a Fortran wrapper for CUDA, Can I legally publish my Fortran 90 wrappers to Nvidias' CUFFT library (from the CUDA SDK)?.
© Programmers or respective owner