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: 366

Filed under:
|
|

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

Related posts about math

Related posts about legacy