last update: 23 August 2002

CSC 445 Parallel Processing 4 cr.

      This course deals with the hardware and software aspects of multiprocessor systems (two or more processors in use simultaneously). The reasons for using such systems, including processor speed limitations and non-uniform capabilities of processors or computers, are examined. Basic hardware concepts such as machine models, parallel programs, networks, and performance and scalability are discussed. Relevant compiler and operating system concepts, programming models, and program development methodologies are introduced. Three lecture hours and one scheduled laboratory hour per week, plus additional laboratory work outside of class.
      Prerequisite: CSC 245.

Goals:
      The goals for this course include the following:
  • CG1: to provide an introduction to the conceptual basis of parallel processing that is independent of any particular technology;
  • CG2: to introduce several modern parallel programming enviroments;
  • CG3: to illustrate the solution of typical numerical and graphical problems in one or more of these environments.
Objectives:
      Upon successful completion of this course the student will have:
  • CO1: properly defined parallel processing and given examples of problems for which parallelization is appropriate;
  • CO2: presented a discussion of several past or present parallel machines;
  • CO3: programmed a heat flow problem or other applicable problem on a sequential machine and subsequently implemented that problem as a parallel program;
  • CO4: programmed a clustered parallel machine made up of PCs networked together running PVM or another parallel package.
Topics:
  • parallel computer models
    • shared memory
    • distributed memory
    • SIMD and MIMD
    • PRAM, VLSI, and LogP models
  • program and network properties
    • dependencies
    • partitioning
    • control flow vs. data flow
    • interconnect methods
  • scalable performance
  • parallel programming models
    • shared variable model
    • message passing model
    • data flow model
  • parallel program design
    • partitioning
    • granularity
    • mapping techniques (indexing, hashing)
    • load balancing techniques (bin packing, randomization, pressure models)
  • parallel languages
    • Fortran 90
    • Parallel C/C++
    • Ada95
  • program development environments
  • parallel operating systems

Case studies and laboratory exercises:
      There will be 4 to 6 design and programming assignments in which students will be asked to implement selected techniques in parallel programming. There will also be periodic written homework assignments.
      Problems will be assigned for solution in some of the following environments:

  • PVM (parallel virtual machine) on a PC LAN
  • concurrent programming on a single-processor machine
  • shared-memory parallel processing on a multiprocessor UNIX system
  • use of (part of) a massively parallel processor (MPP) via Internet access

      The examples studied in class and used for programming projects will be drawn from the following list or from similar projects:

  • multiplication of large matrices
  • parallel solution to the Producer/Consumer Problem
  • parallel sorting and searching
  • numerical analysis techniques such as Simpson's Rule for numeric integration
  • numerical solution to the wave equation
Careful attention will be paid to design and implementation details.

Grading:
      The course grade will be determined using the following approximate weights: laboratory reports — 45% total; written homework — 15%; two one-hour exams — 10% each; final examination — 20%.

Bibliography:
Topic references

  • Andrews, Greg.   Concurrent Programming: Principles and Practice. Addison Wesley, 1991.
  • Chandy, K. Mani; Taylor, Stephen.   An Introduction to Parallel Programming.   Jones and Bartlett, 1992.
  • Foster, Ian.   Designing and Building Parallel Programs: Concepts and Tools for Parallel Software Engineering.   Addison Wesley, 1995.
  • Hwang, Kai.   Advanced Computer Architecture: Parallelism, Scalability, Programmability.   McGraw-Hill, 1993.
  • Kumar, Vipin; Grama, Anrath; Gupta, Anshul; Karypis, George.   An Introduction to Parallel Computing: Design and Analysis of Algorithms.   Second Edition.   Addison Wesley, 2003.
  • Nevison, C. H., et. al.   Laboratories for Parallel Computing.   Jones and Bartlett, 1994.
Language references
  • Adams, Brainerd, Martin, Smith & Wagener.   Fortran 90 Handbook: Complete ANSI/ISO Reference.   Intertext/McGraw-Hill, 1992.
  • Forsythe, Chester.   Contemporary Computing for Engineers and Scientists using Fortran 90.   PWS Publishing Company, 1997.
  • Metcalf, Michael; Reid, John.   Fortran 90 Explained.   Oxford University Press, 1993 reprint.
  • Cohen, Norman H.   Ada as a Second Language.   Second Edition.   McGraw-Hill, 1996.
  • Gehani, Narain.   Ada.   An Advanced Introduction including Reference Manual for the Ada Programming Language.   Prentice Hall, 1984.

Salem State Home Computer Science Home Faculty Computer Studies Major Flow Sheet
Computer Studies Minor Courses Course Sequence Diagram Computer Laboratories