Term projects (A group of 2 people). Timeline: Determining a project group and topic (send me an email that contains your group members and topic): Oct. 31 Midterm project progress report: Nov. 16 Project presentation: Dec. 5 and Dec. 7. Final project report: Dec. 14 Any of the five types: 1. Survey the recent advances in one area related to PDS 2. Develop parallel software 3. Empirically evaluating a software system or application related to PDS 4. Design, analyze, evaluate new algorithms for some types of parallel and distributed systems 5. Your own topics related to PDS - Survey the recent advances in one area related to PDS Fix a good topic; find all related papers by yourselves (5 minimum); summarize the problem and the proposed solutions; identify the strengths and limitations of the solutions; identify what have been done on this topic and what are the remaining issues. Requirement: a) The area must not be out-dated. - at least 1 paper published in 2010 or later. - at least 4 papers published in 2008 or later. b) You must be able to clearly identify the (significant) topic. - What is the problem? - Why is it a problem? - Why is this problem significant? c) The survey should give the state of the art of that area. - Existing techniques for the problems - Strengths and weaknesses of the techniques - What have been solved and what have not been solved. all these must be reflected in your report and presentation. Example topics: - Transactional Memory - New parallel programming models - Compiler/OSlanguage support for Multithreading - Compiler/OS/language support for hetergeneous computing - energy aware HPC - network-on-chip - Data intensive computing - Parallel I/O - Develop parallel software Pick a well known utility, algorithm, or software package. Make sure there is no parallel (threaded or MPI) version yet. Develop the first parallel (SSE, threaded, OpenMP, MPI, or GPU) version for that utility, algorithm, or software. Requirement: a) there should not be a free version of the parallel software in the public domain. b) The parallelization process should not be trivial (no embarrassingly parallel). c) The software must either have some non-trivial research issue or your code needs to show significant speed up. Examples: - a threaded/MPI version of a well-known UNIX utility (grep), - a SSE, threaded, OpenMP, MPI, or GPU version of a well known algorithm such as a graph or a matrix algorithm (e.g. max flow algorithm, sparse matrix multiplication, etc). - Empirically evaluating a software system or application (parallel) Install a software system and related benchmarks (write your own if necessary). Empirically measure and compare the performance of the system or application. Requirement: a) The software system must not be out-updated. b) This may involve software implementation and/or software installation Example topics: 1. Evaluation of mapreduce on multi-core platforms 2. Evaluate different GPU implementation of FFT on different platforms. 3. Evaluate some lock free data structures on multi-core systems. 4. Evaluate some collective communication algorithms on clusters 5. Evaluating and improving sparse matrix/graph message passing algorithms/applications on different platforms. 6. Evaluating software overheads in common communication libraries. You can evaluate the software overheads in some commonly used libraries (e.g. MVAPICH, OPENMPI, etc). The results will provide the base line as to how much performance gain can still be achieved in such libraries when various communication optimization techniques are applied. - Design, analyze, evaluate new algorithms/applications for some types of parallel and distributed systems Anything new (new algorithm, new analysis techniques, new modeling techniques) with a reasonable justification is good. - New routing algorithms for fat-trees - New network topology - New multithreaded, or message passing algorithms - New multithreaded, or message passing applications - New collective communication algorithms - New performance modeling techniques - Your own topics related to PDS Run the topic pass me before you start working on it.