(Seymour Cray)
S(N, P)=tN,P=1 / tN,P
how the solution time varies with the number of processors P for a fixed total problem size N.
E(N) = t1 / (N tN)
how the solution time varies with the number of processors P for a fixed problem size per processor N/P.
Learn your development environment.
Write self-documenting code.
Modularize your code.
Use standard files: README, INSTALL, CITATION, README
Use a compilation system.
Use version control and issue-tracking.
Develop and use a unit-testing scheme.
Don't reinvent the wheel—find existing libraries.
Don't hard-code values: use configuration files instead.
Compile with all debug flags set (-Wall -Werror -g).
Don't create new file formats.
Have a long-term data management plan.
Study strong and weak scaling to not waste cluster cycles.
Nobody gets it right the first time, [including you]. (Lynne Williams)
Premature optimization is the root of all evil. (Donald Knuth)
ECE 408/CS 483 Applied Parallel Programming
ECE 492/CS 420/CSE 402 Introduction to Parallel Programming
ECE 428/CS 425/CSE 424 Distributed Systems
CS 524 Concurrent Programming Languages
CS 525 Advanced Topics in Distributed Systems
CS 533 Parallel Computer Architectures
CS 554/CSE 512 Parallel Numerical Algorithms
ECE 598HK/CS 598HK Many-Core Computing
MSE 498AF Computational Materials Science and Engineering