Software Development at Academia, Government Labs, Industry
description
Transcript of Software Development at Academia, Government Labs, Industry
Gerhard Klimeck
High Performance Computing Group
GROUPSoftware Development atAcademia, Government Labs, Industry
John Barker Agenda/Questions:
• How can the three share development?
•Possibly cooperation like designer chemistry software?
• What are the technical challenges?
• What is the software we are talking about anyways?
• Who are the customers?
•Academia: students, who learn programming and science/engineering.+ new physical effects, push the science envelope - typically no tool development, small building blocks, fast and dirty
•Government / Government Funded Industry: Government+ software performs the required tasks- typically no realistic commercialization plan
• Industry: Industry, Government, Students=> old style: piecemeal university software together=> new style: build-up new software where there is a commercial market+ stable, functional, documented, maintained, supported- no software / science / engineering research
Gerhard Klimeck
High Performance Computing Group
GROUPA Simulation Tool’s Facets: Physics, Formalism/Technology, and
Marketing
Res
onan
ce
Find
erHybrid
C, FORTRAN
FORTRAN90
Software Engineering
Object-Oriented Principles
Graphica
l
User In
terfa
ce
Material Param.
Database
Batch Run
InterfaceLibrary of Examples
NovelGrid Gen.
Documentation
Tool
Band-
structure
Chargin
g
InterfaceRoughness
Phonons
Alloy
Disord
er
IonizedDopants
Physics
FormalismGreen Function Theory
& Boundary Cond.
• Can one use the strengths of the three software developers academia / government / industry?
• Academia: need to get serious about interacting with government / industry on REAL development
• Don’t re-invent the wheel every time, colaborate on existing packages
• Government/Industry: expect real deliverables from academia not just formulas on paper.
20/50/ 2
• • ••• •
Impurity
Phonon
InterfaceElectron
Transport/Engineering
Quantum Mechanics / Physics
MarketingModel Devices Paying Customers Care About
Gerhard Klimeck
High Performance Computing Group
GROUP
Software Structure :Hybrid C, FORTRAN, and FORTRAN 90
• Advantages of C:
• flexible data design, fast prototyping.
• simple hook-up of the graphical user interface.
• close to the UNIX system level for job scheduling.
• Advantages of FORTRAN
• speed for floating point arithmetic.
• 4x speed-up for the same algorithm comparing C and F77 on HP.
• Advantages FORTRAN90 = FORTRAN + ...
• standardized vector and matrix arithmetic.
• data structures.
• simple parallelization.
GUI
FF
C
F90F90
Motif
Gerhard Klimeck
High Performance Computing Group
GROUP
Revision Control Systems (RCS, CVS)
User gekco: locks and edits file.c r1.3he creates the new r1.4
Users lake, blanks, etc.:can look at the latest publicrevision of file.c (r1.3)
• Several people - one piece of code ?
• Break up the source code into (many) files.• Use a central library system.
• All developers can look at the latest versions. • The files cannot be changed.• Must check out and lock a file before editing.
FORGET about PRIVATE CODE VERSIONS!!!
Library of all files and all revisions
Emacsfacilitates
thecheck-out
&check-in
file.c r1.4 file.c r1.3
r1.2r1.1
file.c r1.4 file.c r1.3
r1.2r1.1
file.c r1.4 file.c r1.3
r1.2r1.1
co file.c
co -l file.c
ci file.c
Gerhard Klimeck
High Performance Computing Group
GROUP
Generic Data Structure I/O
potential=Hartreehbarovertau=0.0066Ec=FALSE< start=45, end=69 >
Translator
Data StructurePotType potentialreal hbarovertauBoolean EcRangeStruct NonEq
Graphical User InterfaceReadCre
ate
File/Batch User InterfaceReadCreate
Dynamic GUI Design.• data structure • member descriptor -> I/O for GUI or files
TheoristSoftwareEngineer
Gerhard Klimeck
High Performance Computing Group
GROUP
Novel Interactive Documentation Tool
• Pseudocode is a step by step description of a program in a natural language (high level and low level)
• Maintain pseudocode and code in one document -> easy to keep it up-to-date
• Generated automatically from comments in the code
• Cross references to
• theory description
• further pseudocode
• the actual code