Difference between revisions of "2019 Workshop:Software Engineering for Heliophysics"

From CedarWiki
Jump to: navigation, search
m (Presentation Resources)
m (Tutorials (to be finalized))
Line 69: Line 69:
 
; Asynchronous architectures : where can parallel or concurrent processing be easily applied to speed processing--examples include Python asyncio and Fortran coarray
 
; Asynchronous architectures : where can parallel or concurrent processing be easily applied to speed processing--examples include Python asyncio and Fortran coarray
  
=== Tutorials (to be finalized) ===
+
=== Tutorials ===
  
* Matthew Zettergren (ERAU): Architecting a modern Fortran OpenMPI-based 4D Model that scales to the largest HPCs
+
Please let the organizers know if you have something to present.
* Michael Hirsch (Boston Univ.): Deciding between object-oriented and functional architectures
+
* Michael Hirsch (Boston Univ.): Deploying a complex Fortran 2018 application on any platform from Raspberry Pi to Windows/Mac laptop to CentOS HPC
+
* Michael Hirsch (Boston Univ.): Automatic build & test of prereqs and programs in compiled languages (C, C++, Fortran) using Meson or CMake
+
* Michael Hirsch (Boston Univ.): Seamless integration and testing of scripted languages (Matlab, Python) with high-performance code (C++, Fortran)
+
* Michael Hirsch (Boston Univ.): Gentle introduction to asynchronous and parallel programming in Python and Fortran
+
  
 
===Workshop Summary===
 
===Workshop Summary===

Revision as of 10:41, 15 March 2019

Software Engineering for Heliophysics

Location, Date/Time and Duration

2 hours

Conveners

Michael Hirsch
Matthew Zettergren
Guy Grubbs

Workshop Categories

  • Altitudes: all
  • Latitudes: global

Format of the Workshop

Tutorials

Estimated attendance

50

Requested Specific Days

non-conflicting time with Python for Space Science and "Hackathon"

Special technology requests

tables so attendees can use laptops. WiFi.

Justification

ST #5: Fuse the Knowledge Base across Disciplines


  1. Good software engineering practices expedite reliable, repeatable science results and encourage diverse outside collaborator participation. Repeatable, traceable science analyses are better trusted and solidify community and stakeholder confidence in published results.
  2. Software sharing / collaboration sites like GitHub have matured and are widely used by the heliophysics community. We address minor changes in practice that reduce time to science closure.
  3. Progress is readily measured by semi-automated metrics such as:
    • quantity and diversity (institutional, geographical, participant) of code contributions and issues opened
    • an increase in the use of continuous integration facilities such as Travis-CI
    • increased use of public data sharing such as Zenodo

ST #6: Manage, Mine, Manipulate Geoscience Data and Models


  1. Increased scientific computing efficiencies are essential for computer-aided discovery of the growing petabytes of data collected. Extracting value from the decades of diverse existing data sources can be greatly aided by more efficient software engineering practices
  2. Effective use of software toolchains can be a significant force multiplier in avoiding mistakes and repeated or manual work.
  3. Progress might be measured by mining papers for citations / keywords used such as links to software repos used, which can themselves be mined for use of continuous integration tools, build system type and specific software libraries

Description

Would you like to be more effective at developing software and getting science closure with less time spent debugging and supporting users? This workshop is for you!

The intended audience is as broad as possible: students to senior career--we will discuss intermediate to advanced geospace software engineering at a level accessible and useful to all.

Scope includes coding languages commonly used in heliophysics, including: C++, Fortran, Matlab, Python

Use cases we address include:

  • scripting languages to analyze large data sets quickly
  • model developers reduce the time spent tutoring new users in building / modifying / using the model
  • reduce debugging effort by adding automated self-tests
  • ensure code will be usable on most current computing platforms and easily adaptable to future systems

We intend that most participants will be able to apply industry best-practices to their own work tonight, if not in the workshop itself. Topics include:


Modernizing coding practices in any language 
what should be object-oriented vs. functionalized
Making code more accessible 
How to make code in proprietary (IDL) or less common languages more easily usable by all
Version control (Git) 
sharing and developing code effectively across diverse teams
Build systems (CMake, Meson, Pip) 
make it easy for users to get prereqs and build your code on any computer
Continuous test / integration (Travis-CI) 
automatically run tests "in the cloud" on Linux, Mac, Windows for each code change--learn how to create tests in your preferred language
Asynchronous architectures 
where can parallel or concurrent processing be easily applied to speed processing--examples include Python asyncio and Fortran coarray

Tutorials

Please let the organizers know if you have something to present.

Workshop Summary

This is where the final summary workshop report will be.

Presentation Resources

Upload presentation and link to it here. We will also try to archive talks in Zenodo.

Upload Files Here

  • Add links to your presentations here, including agendas, that are uploaded above. Please add bullets to separate talks. See further information on how to upload a file and link to it.