2 項進行中

115-1 選課時程

進行中

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

加入行事曆

選擇訂閱 Google Calendar,或下載通用的 ICS 檔案。

使用 Google Calendar 時,Google 會收到這份課表的公開連結。

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

Parallel program optimization with practical applications in Bioinformatics

學期
109-2
學分
0 學分
當期課號
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

    New language features in C++11, C++14 and C++17

    講授:
    3 hrs
  • Basics of parallel computing and terminology

    Amdahl's law, Flynn's taxonomy, Classes of parallel computers, and history

    講授:
    3 hrs
  • Multithreading

    Review of OS and computer architecture, C++ multithreading

    講授:
    9 hrs
    示範:
    2 hrs
  • Massage-passing system

    Distributed system, OpenMPI, and boost::MPI, MapReduce

    講授:
    6 hrs
    示範:
    2 hrs
  • Cloud computing

    Virtualization, Linux container, Docker

    講授:
    3 hrs
    示範:
    2 hrs
  • Hardware-assisted acceleration

    SIMD and GPU computing

    講授:
    9 hrs
    示範:
    3 hrs
  • Algorithms in Bioinformatics

    Use as examples in corresponding topics (BLAST, SW, and BWT algorithms)

    講授:
    3 hrs
    示範:
    3 hrs
週次計畫
週次主題
第 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