平行程式優化與生物資訊演算法應用實務(英文授課)
Parallel program optimization with practical applications in Bioinformatics
| 節 | 週三 | 週五 |
|---|---|---|
3 10:10–11:00 | 平行程式優化與生物資訊演算法應用實務(英文授課) ED202 2 節連堂 | |
4 11:10–12:00 | ||
8 16:30–17:20 | 平行程式優化與生物資訊演算法應用實務(英文授課) ED202 |
* 根據陽明交大上課時間表所列
本課程將介紹各種重要的平行運算與硬體加速技術,從中了解如何讓軟體充分利用到現代的硬體架構來達到更高的效能表現。本課程會利用需要大量運算資源的生物資訊演算法為例來解說,並配合Modern C++的技術來實作。 課堂中會介紹許多跨領域的應用,幫助學生觸類旁通理解所學理論與技術,提昇將來投入領域的廣度。 In this class, we will learn an array of parallelization techniques, ranged from SIMD, multithreading, distributed/cloud computing to CUDA that can utilizing fulling all the computing resource available. We will use Bioinformatics algorithms as examples and implement them by modern C++ (i.e. C++17).
C++ programming language, Data structures, Algorithms , Operating systems, Computer architecture and organization.
助教一名,線上參考資料: Parallel computing: https://computing.llnl.gov/tutorials/parallel_comp/ C++: http://en.cppreference.com , SIMD: https://www.kernel.org/pub/linux/kernel/people/geoff/cell/ps3-linux-docs/CellProgrammingTutorial/ CUDA: http://docs.nvidia.com/cuda/cuda-c-programming-guide/index.html#axzz4UHwzrl7r
課堂表現 (20%), 作業 (40%), 期末專題 (40%) Involvement (20%), homework (40%), final project (40%)
- Modern C++ feature review
- Basics of parallel computing and terminology
- Multithreading
- Massage-passing system
- Cloud computing
- Hardware-assisted acceleration
- Algorithms in Bioinformatics
| 週次 | 主題 |
|---|---|
| 第 1 週 | Introduction: 1. The description and objectives of this course 2. Briefing what and how you will learn from this course 3. My teaching methods and principles 4. Instructional materials of the course 5. Performance evaluation: how will you be rated? 6. Knowing each other and your background 7. Scheduling meeting |
| 第 2 週 | New language features in C++11, C++14 and C++17 1. lambda function 2. decltype and auto 3. rvalue reference 4. etc. |
| 第 3 週 | Basics of parallel computing 1. Amdahl's law 2. Flynn's taxonomy 3. Classes of parallel computing 4. SIMD/MIMD/GPU computing/FPGA 5. History |
| 第 4 週 | The basic of parallel computing 1. Parallel computing hardware architecture 2. OS: process 3. OS: thread 4. OS: Mutex, lock and semaphore |
| 第 5 週 | Multithread programming in C++ (I) 1. std::thread 2. std::mutex 3. std::lock 4. std::unique_lock and shared_lock |
| 第 6 週 | Multithread programming in C++ (II) 1. std::promise 2. std::packaged_task 3. std::future 4. std::async |
| 第 7 週 | Demonstration with related algorithms (BLAST) |
| 第 8 週 | Project Proposal |
| 第 9 週 | Introduction to massage-passing system 1. MPI and PVM 2. OpenMPI 3. MapReduce |
| 第 10 週 | OpenMPI and Boost::MPI |
| 第 11 週 | Demonstration with related algorithms (Crossbow) |
| 第 12 週 | Introduction to Cloud computing 1. Virtualization 2. AWS and Eucalyptus 3. Linux container 4. Docker |
| 第 13 週 | Introduction to hardware-assisted acceleration 1. SIMD 2. GPU computing 3. FPGA 4. ASIC |
| 第 14 週 | Introduction to SIMD 1. SIMD Operation 2. SIMD-Ready Vectors 3. Elimination of Conditional Branches 4. Intel SSE |
| 第 15 週 | Demonstration with related algorithms (SW algorithm) |
| 第 16 週 | Introduction to GPU computing 1. CUDA 2. Host and device 3. Thread and Memory management 4. GPU Cluster |
| 第 17 週 | Demonstration with related algorithms (BWT algorithm) |
| 第 18 週 | Final project demonstration |
Introduction to Parallel Computing by Blaise Barney C++ Concurrency in Action: Practical Multithreading 1st Edition by Anthony Williams
- 地點
- Office
- 時間
- TBA
- 聯絡方式