Math 6395 -- Introduction to Parallel Scientific ComputingSpring 2009Course Syllabus |
Instructor: Dr. Daniel ReynoldsTextbooks:Highly Recommended:
|
Course Description:MATH 6395 -- Introduction to Parallel Scientific Computing [3 Credits]Historically, parallel computing has addressed the demands of state-of-the-art engineering and scientific applications. Recently, however, other platforms including video game consoles, laptops and desktops have begun to transition toward chips with an increasing number of processor cores, requiring algorithms that may effectively utilize their parallel computing hardware. The goal of MATH 6395 is to introduce students to the foundations of parallel computing, including the principles of parallel computer architectures and parallel algorithm design. We will investigate a variety of algorithms, studying the relative benefits and weaknesses among different approaches for their parallel implementation. Students will learn how to use OpenMP and MPI to write their own simple parallel programs for shared- and distributed-memory systems, and will execute these programs on clusters here at SMU and at national supercomputing centers including the Texas Advanced Computing Center (TACC). Instruction will consist of both classroom lectures and computer lab tutorials. Topics include:
Students from all disciplines and computing background are welcome, as we will attempt to cover the necessary background from computer architecture, software, and numerical analysis. Although there are no specific prerequesites for the course, it is expected that students will have experience with the design and implementation of computer programs. While familiarity with the Unix operating system and programming experience in compiled languages (e.g. C, C++, Fortran77/90/95, etc.) will prove beneficial, we will assume only a minimum background in programming for interactive languages (e.g. Matlab, Python, Perl). Prerequisites: MATH 5315/CSE 7365 or by instructor's permission. |
Educational Outcomes:Upon successful completion of this course, students will have learned:
|
Tentative Lecture Schedule:
|
Computing:In this course, homework and projects will make use of Unix and Linux workstations, clusters and supercomputers. Students who are unfamiliar with the Unix/Linux operating system should complete the following tutorial, to help them gain a modest understanding of Unix/Linux. Students who own Windows computers should follow the instructions here to set up the appropriate software on their computer to allow them to emulate and/or login to Unix/Linux servers. A good text editor for programming on Windows computers may be found here. All students should request an account at the Texas Advanced Computing Center (TACC) Portal (follow the link in the "New TACC user?" box). We will be using their Ranger supercomputer (one of the largest computational resources in the world) in this class. Once you obtain your user account, email me with your username so that I can grant you access to our computing time. |
Programming:As described below, students will be expected to submit programming assignments for their evaluation in the course. These assignments may be written in any one of the programming languages {Fortran77, Fortran90, Fortran95, C, C++}, since each of these languages support the style of programs that we will encounter in this course. However, for any students without prior experience in one of these languages, I will require the use of Fortran90/95. Further information on the language is provided here, and I will be happy to discuss the relative merits of each language with students during office hours. All programming assignments (homework and projects) must be submitted electronically to the instructor via email. For assignments and projects that involve more than one file, zip them together and send the resulting single file, e.g. if the files are in the directory Project1, go to the directory containing Project1 and type tar -czf Project1.tar.gz Project1Submit the resulting file, Project1.tar.gz. |
Turning in Programs:To turn in a programming assignment, copy the tarball containing your results to the folder /shared/dreynolds/username/ on blackbeard, where username is your user name. |
Homework:Homework assignments will be assigned regularly throughout the semester, and will consist of small programming exercises and written assignments. Homework problems must be completed on your own, though discussion of the assignments with other students and the instructor is encouraged. In addition, I encourage all students to visit my office when they get stuck on bugs in their codes. |
Projects:There will be a small number of programming projects throughout the semester. These may be individal or group projects, with group projects often including individual components. Group projects must be submitted together, and all members of the group should contribute equally to their solution. Group members will be required to write a brief summary of their individual contributions to each project. These projects may involve a more substantial amount of programming or other work -- I highly recommend that you begin these early and do not procrastinate. |
Grading:Students' grades in this course will be determined based on homeworks and projects, with each accounting for about 50% of the total. |
Honor Code:Academic dishonesty is considered a serious offense, and is doubly inexcusable among graduate students. All individual assignments must represent your own individual effort. All group members must accurately describe the project portions to which they contributed. |
SMU Regulations:Disability Accommodations: Students needing academic accommodations for a disability must first contact Ms. Rebecca Marin, Coordinator, Services for Students with Disabilities (214-768-4557) to verify the disability and establish eligibility for accommodations. They should then schedule an appointment with the professor to make appropriate arrangements. (See University Policy No. 2.4.) Religious Observance: Religiously observant students wishing to be absent on holidays that require missing class should notify their professors in writing at the beginning of the semester, and should discuss with them, in advance, acceptable ways of making up any work missed because of the absence. (See University Policy No. 1.9.) Excused Absences for University Extracurricular Activities: Students participating in an officially sanctioned, scheduled University extracurricular activity should be given the opportunity to make up class assignments or other graded assignments missed as a result of their participation. It is the responsibility of the student to make arrangements with the instructor prior to any missed scheduled examination or other missed assignment for making up the work. (University Undergraduate Catalogue) |