The Research Computing User's Guide

February 22, 2020

Jason W. Bacon

Senior Systems Programmer
University of Wisconsin -- Milwaukee
Research Computing Support

Dr. Lars Olson

Initial HTcondor content  
Marquette University
Biomedical Engineering

Table of Contents

1. Goals
2. Self-Study Instructions
2.1. Unix Self-Study Instructions
2.2. Parallel Computing Self-Study Instructions
I. Research Computing
3. Computational Science
4. Where do I get the Software?
5. Running Your Software
6. Using Unix
7. Unix Shell Scripting
8. Data Management
II. Parallel Computing
9. Parallel Computing Overview
10. Job Scheduling
11. Job Scheduling with SLURM
12. Job Scheduling with HTCondor
13. Job Scheduling with PBS (TORQUE)
14. Job Scheduling with LSF
III. Programming for Performance
15. Software Development
16. Data Representation
17. Computer Hardware
18. Introduction to Programming
19. Data Types
20. Basic Terminal Input/Output (I/O)
21. Conditional Execution
22. Loops (Iterative Execution)
23. Subprograms
24. Memory Addresses and Pointers
25. Arrays
26. Strings
27. File I/O
28. Matrices
29. Software Performance
30. Structures
31. The Preprocessor
32. Software Project Management
IV. Parallel Programming
33. Parallel Programming
34. Programming for HTC
35. Programming for HPC
V. Systems Management
36. Systems Management
37. Platform Selection
38. System Security
39. Software Management
40. Running Multiple Operating Systems

List of Figures

6.1. Sample of a Unix File system
40.1. Windows as a Guest under VirtualBox on a Mac Host
40.2. CentOS 7 with Gnome Desktop as a Guest under VirtualBox
40.3. FreeBSD with Lumina Dekstop as a Guest under VirtualBox

List of Tables

3.1. Computation Time Line
6.1. Partial List of Unix Operating Systems
6.2. Pkgsrc Build Times
6.3. Default Key Bindings in some Shells
6.4. Globbing Symbols
6.5. Special Directory Symbols
6.6. Common hot keys in more
6.7. Unix Commands
6.8. Common Extensions
6.9. Standard Streams
6.10. Redirection Operators
6.11. Pipe Operators
7.1. Conventional script file name extensions
7.2. Shell Start Up Scripts
7.3. Printf Format Specifiers
7.4. Special Character Sequences
7.5. Test Relational Operators
7.6.
7.7. C Shell Relational Operators
7.8. Shell Conditional Operators
7.9.
15.1. Example MIPS Instruction
15.2. Selection Sort of 100,000 Integers
16.1. Basic Quantities
16.2. Prefixes for larger quantities
16.3. Unsigned Binary Integer Ranges
16.4. Two's Complement Integer Ranges
16.5. Floating Point Format
17.1. Example Memory Map
19.1. C Data Types
19.2. Fortran 90 Data Types
19.3. Memory Map
19.4. C Constants and Types
19.5. C Escape Sequences
19.6. Fortran 90 Constants and Types
19.7. C Operators
19.8. Fortran Operators
19.9. Explicit Conversion Functions
20.1. Standard Stream Names
20.2. Placeholders for printf
20.3. Placeholders for printf
20.4. Standard Stream Names
20.5. Common Format Descriptors
21.1. Relational Expressions
21.2. Fortran Relational Operators
21.3. Boolean Operators
23.1. Program Sizes
23.2. Pass by Value
23.3. Pass by Reference
25.1. Memory Map of an Array
25.2. Memory Map of list and i
28.1. Time Table
28.2. Temperature
28.3. Generic 2D Matrix
29.1. Common Orders of Operation
39.1. Computation Time Line
39.2. Package Manager Comparison

List of Examples

4.1. A Typical Caveman Installation
6.1. White space in an Argument
6.2. Pushing data with rsync
6.3. Pulling data with rsync
6.4. Simple Pipe
6.5. Filters
7.1. A Simple Bash Script
7.2. A Simple T-shell Script
7.3. Multiple File Downloads
14.1. Simple LSF Batch Script
14.2. Batch Interactive Script
14.3. Batch Parallel Script
14.4. LSF and OpenMPI
16.1. A fixed-point system
16.2. A modulo-100 System
16.3. A 4-bit unsigned binary number system
18.1. A Simple C Program
18.2. A Simple Fortran Program
19.1. Precedence and Order of Evaluation
22.1. Do-while Loop
22.2. A More Flexible Sine Printer
22.3. Predicting Loop Output
22.4. Unstructured Loop
22.5. Infinite Loop
23.1. Ordering Pizza
23.2. Sorting
23.3. Sample C Code Passing by Value
28.1. Comparison of Row-major and Col-major Access
29.1. Selection Sort
29.2. Binary Search