校際選修

115-1 選課時程

進行中

  • 初選第一階段 6/15/2026
  • 初選第二階段 6/22/2026
  • 校際選修 8/24/2026
  • 初選第三階段 8/31/2026
  • 開學後加退選 9/7/2026
  • 逾期加退選 9/21/2026
選課資源

平行程式優化與生物資訊演算法應用實務(英文授課)

Parallel program optimization with practical applications in Bioinformatics

學期
109-2
學分
3 學分
當期課號
5262
永久課號
IOC5186
開課單位
資訊科學與工程研究所
授課教師
洪瑞鴻
校區
光復
類別
選修
上課時間表
週三
週五
3
10:10–11:00
平行程式優化與生物資訊演算法應用實務(英文授課)
ED102
2 節連堂
4
11:10–12:00
8
16:30–17:20
平行程式優化與生物資訊演算法應用實務(英文授課)
ED102

* 根據陽明交大上課時間表所列

概述

本課程將介紹各種重要的平行運算與硬體加速技術,從中了解如何讓軟體充分利用到現代的硬體架構來達到更高的效能表現。本課程會利用需要大量運算資源的生物資訊演算法為例來解說,並配合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 Hours
地點
Office
時間
TBA
聯絡方式
email