This repository has been archived by the owner on May 21, 2021. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 2
Web Lesson Outlines (by Module)
David M. Rogers edited this page Jun 17, 2020
·
10 revisions
Lead: DavidB
- Establish and setup GitHub account
- Other service accounts?
- Access to development tools (local or remote)?
Lead: DavidB
No lessons for this module
Lead: JimW
- Small Team Models, Challenges.
- Agile workflow management for small teams.
- Intro to terminology and approaches.
- Overview of Kanban.
- Free tools: Trello, GitHub.
- Epic, story, task breakdown for common example
- PSIP: Productivity and Sustainability Improvement Planning.
For now, I just copied the existing outline for this talk, except that I added a bullet for speaking directly to our example.
Lead: RinkuG and JimW
- Distributed version control
- Centralized workflows
- Branches
- More advanced workflows
- Choosing a workflow for our example
- Use cases for our example
I started with the general outline for the existing git workflow talk, and added one bullet and one subbullet to speak directly to our example.
Lead: DeborahS and AnshuD
Lead: AnshuD
Lead: AnshuD
Lead: @markcmiller86
- Can maybe use material from here
- Might be good to demo GitLab CI for sake of nod to ECP-CI but probably can't do that and GitHub example
- A CI check is not necessarily same as test. It may be but doesn't have to be.
- What are your project's priorities?
- What configurations (OS, compilers, math libs, etc.)
- In the context of heat equation example...maybe initial value problems more important than boundary value?
- Bit-for-bit identical (easy) vs. fuzzy (harder)?
- Survey project's existing tests for candidates for CI.
- We have some known inputs and outputs already we can use
- Identify dependencies and how they'll be instantiated when needed.
- Could have thread, MPI and/or GPU dependencies if we have parallel heat equation implementation
- Identify services/resources to be used as well as their constraints.
- Free: Travis, CircleCI, Azure, ...
- ECP-CI resources
- Example GitHub evolution
- Simple compilation check
- Write .travis.yml file
- Compilation and run linear steady state check
- Re-write .travis.yml file
- Re-factor CI control logic to avoid re-write of .travis.yml
- Could introduce an illustrative dependence such as Raja, Boost, PAPI counters or something
- Simple compilation check
- Define process for how to add new CI checks
Lead: AnshuD
- English Composition 101 - draft, revise, repeat
- Carefully craft take-home message / key arguments / theorems to prove
- Starting idea: "We take 2nd order finite differences in each direction and add them together."
- Revised idea: "Given a finite element basis in H^1, the Laplacian operator can be represented by a sparse matrix acting on its coefficients."
- Starting idea: "The integral of the solution temperature should be tracked over time."
- Revised idea: "The total heat energy in the domain is a linear functional of the solution (temperature), and should only change due to heat flow into the domain."
- Starting idea: "Since the heat equation is first-order in time, we can use Euler or Adams-Bashforth methods to propagate a solution over a small time interval."
- Revised idea: "The solution coefficients at the next time-point can be computed by solving a sparse linear equation whose coefficients depend on integration method."
- Arrange supporting points
- Using an outline to map your software
- Carefully craft take-home message / key arguments / theorems to prove
- Define main characters
- data structures that don't hold state
- data structures that respond to events (objects)
- Define re-usable verbs
- Re-consider whether your use cases match the design
Lead: PatG and DavidR (@frobnitzem)
- Terminology - reproducible vs. replicable
- Past Science Controversies
- Importance for HPC Specifically
- ACS TOMS
- SC20
- Increasing Attention to Computational Artifacts in other journals/confs.
- Mini-conclusion: Reproducibility is Integral to Development
- HOWTO
- Don't prematurely optimize
- During development
- After development
- Side-bar on experimental design
- Side-bar on API design by contract
- During experiments
- After experiments
- Other Resources
- Needs note on recent Covid pandemic models - flattening the curve is important, but some quantitative models were not replicable
- Needs examples of reproducibility outputs for codes doing this well - tagging, output header notes, reproducible build processes & internal storage of compile-options, nightly checks, etc.
- Needs examples of adding these to a small test code.
Lead: DavidB
- Choosing a software license
- Documenting the license in your repository
- Adding Developer Certificate of Origin sign-off to your repository
- Other "community" files
- Code of Conduct
- Support
- Citation
Lead: DavidB
No lessons for this module
Lead: JimW