Hi to all,
I just wanted to share some insights that I made during a GPU focused
hackathon last week. For the full glory of details, see a series of blog
posts on Eurohack 2016 in Dresden (Germany):
https://gcoe-dresden.de/?page_id=4
The hackathon had 6 teams come into Dresden with their HPC codes. The
goal was to accelerate the apps to run on GPUs using a more recent
programming paradigm called OpenACC as well as traditional CUDA. The
codes were from weather forecasting (CFD based), simulating rescue paths
for fire fighters in underground stations (also CFD based), correlating
genomics with neuron activity (a matlab port), polymer simulation,
bacteria simulation and planet hunting in interferrometric astronomy
data (python based).
First observation, 2 out of 6 teams came with unit tests at all! The
team I mentored had a minimal test tool that compared the ascii output
of a simulation run with some reference output - so something on the
level of an integration test with the full application.
We spent 2 days trying to understand the code and hunting bugs in an
existing GPU based execution path which gave different results than the
legacy CPU part. As we only had integration style tests, this was a
tedious process as the code base was ~70 kloc large. At some point we
ditched the existing GPU implementation and started from scratch.
I have to say that my team was very open to new ideas and promised to
look into unit testing and the like, we didn't have time to refactor the
code to become (unit) testable. If they'll do it, I don't know as it
depends mostly on social factors.
Bottom line for SWC: defensive programming and testing are important and
we should try to keep it in the curriculum as much as possible. My team
were 3 meteorologists that received introductory level fortran training
during their studies - nothing more.
Best,
Peter
_______________________________________________
Discuss mailing list
Discuss@lists.software-carpentry.org
http://lists.software-carpentry.org/mailman/listinfo/discuss_lists.software-carpentry.org