Mục tiêu của học phần - Kiến thức: Lý thuyết về các thuật toán song song, mô hình xử lý song song, kiến trúc xử lý song song - Kỹ năng: Sinh viên có khả năng sử dụng thành thạo các môi
Trang 1Độc lập – Tự do – Hạnh phúc
ĐỀ CƯƠNG CHI TIẾT HỌC PHẦN TÍNH TOÁN SONG SONG – PARALLEL COMPUTING
1 Thông tin về giáo viên
TT Họ tên giáo viên Học
hàm
Học vị Đơn vị công tác (Bộ môn)
2
Thời gian, địa điểm làm việc:
Địa chỉ liên hệ:
Điện thoại, email: manhhungk12@mta.edu.vn; manhhungk12@gmail.com
Các hướng nghiên cứu chính: Cấu trúc dữ liệu hiện đại, Phân loại gói tin hiệu năng cao, Khai phá dữ liêu
2 Thông tin chung về học phần
- Tên học phần: TÍNH TOÁN SONG SONG
- Mã học phần: 12566151
- Số tín chỉ: 3
- Cấu trúc học phần: 3(2,2)
- Học phần (bắt buộc hay lựa chọn):
- Các học phần tiên quyết:
- Các yêu cầu đối với học phần (nếu có):
- Giờ tín chỉ đối với các hoạt động:
Nghe giảng lý thuyết: 30
Làm bài tập trên lớp: 15
Thảo luận:6
Thực hành, thực tập (ở PTN, nhà máy, thực tập ): 9
Hoạt động theo nhóm:
Tự học:
- Khoa/Bộ môn phụ trách học phần, địa chỉ:
3 Mục tiêu của học phần
- Kiến thức: Lý thuyết về các thuật toán song song, mô hình xử lý song song, kiến trúc xử lý song song
- Kỹ năng: Sinh viên có khả năng sử dụng thành thạo các môi trường, công cụ
hỗ trợ lập trình song song
- Thái độ, chuyên cần: Lên lớp đầy đủ và chuẩn bị theo yêu cầu của giáo viên
Trang 24 Tóm tắt nội dung học phần (khoảng 150 từ)
Giới thiệu các khái niệm, các nguyên lý cơ bản của xử lý song song Giới thiệu một số phương pháp thiết kế thuật toán song song Tìm hiểu một số thuật toán song song trên các bài toán cụ thể: nhân ma trận, giải hệ phương trình tuyến tính, tìm kiếm trên đồ thị, khai phá dữ liệu Giới thiệu và thực hành xây dựng một số chương trình song song trên thư viện Pthread, MPI và OpenMP
5 Nội dung chi tiết học phần (tên các chương, mục, tiểu mục)
Chương,
mục, tiểu
mục
Giáo trình, Tài liệu tham khảo (Ghi TT của TL ở mục 6)
Ghi chú
Chương 1: Giới thiệu chung
1 Giới thiệu
2 Phân loại kiến trúc máy tính
3 Mô hình trừu tượng của máy tính song song
5 Mô hình tổ chức các bộ xử lý trong các hệ thống xử lý song song
5.1 Các tiêu chuẩn đánh giá mô hình 5.2 Các mô hình dạng tuyến tính và dạng lưới 5.3 Các mô hình dạng cây
6 Các mô hình tính toán
7 Các mô hình lập trình song song
8 Các mức lập trình song song
3 1,2
Chương 2: Các nguyên tắc thiết kế thuật toán song song và đồng bộ hóa giữa các tác vụ
1 Giới thiệu
2 Một số kỹ thuật chia nhỏ bài toán
3 Một số kỹ thuật ánh xạ các tác vụ vào các tiến trình
4 Một số mô hình thuật toán song song
5 Đánh giá độ phức tạp của thuật toán song song
6 Luật Amdahl 7.Vùng tranh chấp - Critical section
8 Các phương pháp dùng xử lý vùng tranh chấp
3 1,2
Trang 3Chương 3: Một số thuật toán song song
1 Thuật toán xử lý mảng song song
2 Thuật toán tính số PI song song
3 Thuật toán tìm dãy con chung dài nhất song song
4 Thuật toán nhân ma trận
3 1,2
Chương 4: Một số thuật toán song song trên
đồ thị
1 Thuật toán Kruskal song song
2 Thuật toán Prim song song
3 Thuật toán Dijkstra song song
3 1,2
Chương 5: Thư viện lập trình song song Pthread
I Giới thiệu PThread
1 Cài đặt PTHREAD POSIX với VC++ 6
2 Con trỏ hàm trong C++
3 Giới thiệu các hàm chính của pthread
4 Ví dụ tạo lập và kết thúc thread
5 Trao đổi dữ liệu giữa thread chính với các thread con
6 Các ví dụ
II Xử lý vùng tranh chấp trong Pthread
1 Bài toán bán vé 1.1 Mô phỏng bài toán bán vé bằng nhiều thread
1.2 Xử ý hiện tượng đua tranh trên vùng dữ liệu
1.3 Xử lý đua tranh trong chương trình bán vé
2 Tắc nghẽn trong LT Pthread
3 Bài toán: Dining Philosophers
Chương 5: Thư viện lập trình song song Pthread (tiếp)
III Đồng bộ hóa các tác vụ trong Pthread
1 Biến điều kiện:
Trang 41.1 Tạo lập và hủy biến điều kiện 1.2 Sơ đồ đồng bộ hóa 2 thread
2 Đồng bộ hóa bằng Semaphore
IV Cài đặt một số thuật toán song song trên Pthread
1 Thuật toán nhân ma trận-vector
2 Thuật toán nhân ma trận-ma trận
Bài tập
1 Cài đặt thuật toán Kruskal song song
2 Cài đặt thuật toán Prim song song
3 Cài đặt thuật toán Dijkstra song song
Chương 6: Thư viện lập trình song song MPI
I Giới thiệu
1 Hướng dẫn cài đặt MPICH2 với VC++ 6
2 Cấu trúc một trình MPI
3 Các thủ tục chính của MPI
4 Trao đổi dữ liệu
5 Đồng bộ các tiến trình
6 Chi tiết về các lệnh trao đổi dữ liệu
7 Các lệnh trao đổi dữ liệu không bị chặn
8 Các lệnh Persistent
9 Trao đổi dữ liệu mảng 2 chiều
10 Định nghĩa kiểu dữ liệu mới trong MPI
II Các hàm truyền thông theo nhóm III Thiết lập các Topologies
1 Tạo nhóm truyền thông
2 Virtual topologies
3 Deadlock trong lập trình MPI
Bài tập MPI
1 Thiết lập môi trường làm việc MPI dùng máy ảo
2 Thiết lập môi trường làm việc MPI trên 2 máy nối trực tiếp
3 Cài đặt thuật toán nhân ma trận thưa với vector
Trang 54 Cài đặt thuật toán nhân ma trận với ma trận
Bài tập MPI
1 Cài đặt thuật toán Kruskal song song
2 Cài đặt thuật toán Prim song song
3 Cài đặt thuật toán Dijkstra song song
Chương 7: Thư viện lập trình OpenMP
1 Sử dụng OpenMP trong VC++.Net
2 Khai báo vùng Parallel
3 Quản lý việc tính toán song song (for, sections)
4 Đồng bộ hóa trong OpenMP
Bài tập OpenMP
1 Cài đặt thuật toán Kruskal song song
2 Cài đặt thuật toán Prim song song
3 Cài đặt thuật toán Dijkstra song song
6 Giáo trình, tài liệu tham khảo
TT Tên giáo trình, tài liệu Tình trạng giáo trình, tài liệu
Có ở thư viện (website)
Giáo viên hoặc khoa
có
Đề nghị mua mới
Đề nghị biên soạn mới
1 Introduction to Parallel Computing
(Second Edition), Addison Wesley,
2003
X
2 Parallel and Distributed
Programming Using C, Addison
Wesley, 2003
X
3 Using OpenMP Portable Shared
Memory Parallel Programming,
MIY, 2007
X
http://www.llnl.gov/computing/mpi
X
pthreads
http://www.awl.com/cseng/titles/0-201-63392-2
X
7 Hình thức tổ chức dạy học
7.1 Lịch trình chung: (Ghi tổng số giờ cho mỗi cột)
Trang 6Nội dung
Hình thức tổ chức dạy học học phần
Tổn
g
hành, thí nghiệm , thực tập
Tự học,
tự ng.cứ
u
Lý thuyết
Bài tập
Thả
o luận
Chương 1: Giới thiệu chung
1 Giới thiệu
2 Phân loại kiến trúc máy tính
3 Mô hình trừu tượng của máy tính
song song
5 Mô hình tổ chức các bộ xử lý
trong các hệ thống xử lý song song
5.1 Các tiêu chuẩn đánh giá mô hình
5.2 Các mô hình dạng tuyến tính và
dạng lưới
5.3 Các mô hình dạng cây
6 Các mô hình tính toán
7 Các mô hình lập trình song song
8 Các mức lập trình song song
3
Chương 2: Các nguyên tắc thiết kế
thuật toán song song và đồng bộ hóa
giữa các tác vụ
1 Giới thiệu
2 Một số kỹ thuật chia nhỏ bài toán
3 Một số kỹ thuật ánh xạ các tác vụ
vào các tiến trình
4 Một số mô hình thuật toán song
song
5 Đánh giá độ phức tạp của thuật
toán song song
6 Luật Amdahl
7.Vùng tranh chấp - Critical section
8 Các phương pháp dùng xử lý vùng
tranh chấp
3
Chương 3: Một số thuật toán song
song
1 Thuật toán xử lý mảng song song
2 Thuật toán tính số PI song song
3 Thuật toán tìm dãy con chung dài
3
Trang 7nhất song song
4 Thuật toán nhân ma trận
Chương 4: Một số thuật toán song
song trên đồ thị
1 Thuật toán Kruskal song song
2 Thuật toán Prim song song
3 Thuật toán Dijkstra song song
3
Chương 5: Thư viện lập trình song
song Pthread
I Giới thiệu PThread
1 Cài đặt PTHREAD POSIX với
VC++ 6
2 Con trỏ hàm trong C++
3 Giới thiệu các hàm chính của
pthread
4 Ví dụ tạo lập và kết thúc thread
5 Trao đổi dữ liệu giữa thread chính
với các thread con
6 Các ví dụ
3
II Xử lý vùng tranh chấp trong
Pthread
1 Bài toán bán vé
1.1 Mô phỏng bài toán bán vé bằng
nhiều thread
1.2 Xử ý hiện tượng đua tranh trên
vùng dữ liệu
1.3 Xử lý đua tranh trong chương
trình bán vé
2 Tắc nghẽn trong LT Pthread
3 Bài toán: Dining Philosophers
3
Chương 5: Thư viện lập trình song
song Pthread (tiếp)
III Đồng bộ hóa các tác vụ trong
Pthread
1 Biến điều kiện:
3
Trang 81.1 Tạo lập và hủy biến điều kiện
1.2 Sơ đồ đồng bộ hóa 2 thread
2 Đồng bộ hóa bằng Semaphore
IV Cài đặt một số thuật toán song
song trên Pthread
1 Thuật toán nhân ma trận-vector
2 Thuật toán nhân ma trận-ma trận
Bài tập
1 Cài đặt thuật toán Kruskal song
song
2 Cài đặt thuật toán Prim song song
3 Cài đặt thuật toán Dijkstra song
song
Chương 6: Thư viện lập trình song
song MPI
I Giới thiệu
1 Hướng dẫn cài đặt MPICH2 với
VC++ 6
2 Cấu trúc một trình MPI
3 Các thủ tục chính của MPI
4 Trao đổi dữ liệu
5 Đồng bộ các tiến trình
6 Chi tiết về các lệnh trao đổi dữ liệu
7 Các lệnh trao đổi dữ liệu không bị
chặn
8 Các lệnh Persistent
9 Trao đổi dữ liệu mảng 2 chiều
10 Định nghĩa kiểu dữ liệu mới
trong MPI
3
II Các hàm truyền thông theo nhóm
III Thiết lập các Topologies
1 Tạo nhóm truyền thông
2 Virtual topologies
3 Deadlock trong lập trình MPI
3
Bài tập MPI
1 Thiết lập môi trường làm việc
3
Trang 9MPI dùng máy ảo
2 Thiết lập môi trường làm việc MPI
trên 2 máy nối trực tiếp
3 Cài đặt thuật toán nhân ma trận
thưa với vector
4 Cài đặt thuật toán nhân ma trận với
ma trận
Bài tập MPI
1 Cài đặt thuật toán Kruskal song
song
2 Cài đặt thuật toán Prim song song
3 Cài đặt thuật toán Dijkstra song
song
Chương 7: Thư viện lập trình
OpenMP
1 Sử dụng OpenMP trong VC++.Net
2 Khai báo vùng Parallel
3 Quản lý việc tính toán song song
(for, sections)
4 Đồng bộ hóa trong OpenMP
3
Bài tập OpenMP
1 Cài đặt thuật toán Kruskal song
song
2 Cài đặt thuật toán Prim song song
3 Cài đặt thuật toán Dijkstra song
song
7.2 Lịch trình tổ chức dạy học cụ thể
Tuần 1
Hình thức
tổ chức
dạy học
Thời gian, địa điểm
cầu SV chuẩn
bị
Ghi chú
Lý thuyết Chương 1: Giới thiệu chung
1 Giới thiệu
2 Phân loại kiến trúc máy tính
3 Mô hình trừu tượng của máy tính song song
5 Mô hình tổ chức các bộ xử lý trong các
Trang 10hệ thống xử lý song song 5.1 Các tiêu chuẩn đánh giá mô hình 5.2 Các mô hình dạng tuyến tính và dạng lưới
5.3 Các mô hình dạng cây
6 Các mô hình tính toán
7 Các mô hình lập trình song song
8 Các mức lập trình song song Bài tập
Thảo luận
Thực hành,
thí nghiệm,
thực tập,…
Tự học, tự
nghiên cứu
Tuần 2
Hình thức
tổ chức
dạy học
Thời gian, địa điểm
cầu SV chuẩn
bị
Ghi chú
Lý thuyết Chương 2: Các nguyên tắc thiết kế thuật
toán song song và đồng bộ hóa giữa các tác
vụ
1 Giới thiệu
2 Một số kỹ thuật chia nhỏ bài toán
3 Một số kỹ thuật ánh xạ các tác vụ vào các tiến trình
4 Một số mô hình thuật toán song song
5 Đánh giá độ phức tạp của thuật toán song song
6 Luật Amdahl 7.Vùng tranh chấp - Critical section
8 Các phương pháp dùng xử lý vùng tranh chấp
Bài tập
Thảo luận
Thực hành,
thí nghiệm,
thực tập,…
Tự học, tự
nghiên cứu
Trang 11Tuần 3
Hình thức
tổ chức
dạy học
Thời gian, địa điểm
cầu SV chuẩn
bị
Ghi chú
Lý thuyết Chương 3: Một số thuật toán song song
1 Thuật toán xử lý mảng song song
2 Thuật toán tính số PI song song
3 Thuật toán tìm dãy con chung dài nhất song song
4 Thuật toán nhân ma trận
Bài tập
Thảo luận
Thực hành,
thí nghiệm,
thực tập,…
Tự học, tự
nghiên cứu
Tuần 4
Hình thức
tổ chức
dạy học
Thời gian, địa điểm
cầu SV chuẩn
bị
Ghi chú
Lý thuyết Chương 4: Một số thuật toán song song
trên đồ thị
1 Thuật toán Kruskal song song
2 Thuật toán Prim song song
3 Thuật toán Dijkstra song song
Bài tập
Thảo luận
Thực hành,
thí nghiệm,
thực tập,…
Tự học, tự
nghiên cứu
Tuần 5
Hình thức
tổ chức
Thời gian,
cầu SV
Ghi chú
Trang 12dạy học địa
điểm
chuẩn
bị
Lý thuyết Chương 5: Thư viện lập trình song song
Pthread
I Giới thiệu PThread
1 Cài đặt PTHREAD POSIX với VC++ 6
2 Con trỏ hàm trong C++
3 Giới thiệu các hàm chính của pthread
4 Ví dụ tạo lập và kết thúc thread
5 Trao đổi dữ liệu giữa thread chính với các thread con
6 Các ví dụ
Bài tập
Thảo luận
Thực hành,
thí nghiệm,
thực tập,…
Tự học, tự
nghiên cứu
Tuần 6
Hình thức
tổ chức
dạy học
Thời gian, địa điểm
cầu SV chuẩn
bị
Ghi chú
Lý thuyết II Xử lý vùng tranh chấp trong Pthread
1 Bài toán bán vé 1.1 Mô phỏng bài toán bán vé bằng nhiều thread
1.2 Xử ý hiện tượng đua tranh trên vùng
dữ liệu 1.3 Xử lý đua tranh trong chương trình bán
vé
2 Tắc nghẽn trong LT Pthread
3 Bài toán: Dining Philosophers
Bài tập
Thảo luận
Thực hành,
thí nghiệm,
thực tập,…
Tự học, tự
Trang 13nghiên cứu
Tuần 7
Hình thức
tổ chức
dạy học
Thời gian, địa điểm
cầu SV chuẩn
bị
Ghi chú
Lý thuyết Chương 5: Thư viện lập trình song song
Pthread (tiếp) III Đồng bộ hóa các tác vụ trong Pthread
1 Biến điều kiện:
1.1 Tạo lập và hủy biến điều kiện 1.2 Sơ đồ đồng bộ hóa 2 thread
2 Đồng bộ hóa bằng Semaphore
IV Cài đặt một số thuật toán song song trên Pthread
1 Thuật toán nhân ma trận-vector
2 Thuật toán nhân ma trận-ma trận
Bài tập
Thảo luận
Thực hành,
thí nghiệm,
thực tập,…
Tự học, tự
nghiên cứu
Tuần 8
Hình thức
tổ chức
dạy học
Thời gian, địa điểm
cầu SV chuẩn
bị
Ghi chú
Lý thuyết
1 Cài đặt thuật toán Kruskal song song
2 Cài đặt thuật toán Prim song song
3 Cài đặt thuật toán Dijkstra song song
Thảo luận
Thực hành,
thí nghiệm,
thực tập,…
Trang 14Tự học, tự
nghiên cứu
Tuần 9
Hình thức
tổ chức
dạy học
Thời gian, địa điểm
cầu SV chuẩn
bị
Ghi chú
Lý thuyết
Bài tập
Thảo luận
Thực hành,
thí nghiệm,
thực tập,…
1 Cài đặt thuật toán Kruskal song song
2 Cài đặt thuật toán Prim song song
3 Cài đặt thuật toán Dijkstra song song
Tự học, tự
nghiên cứu
Tuần 10
Hình thức
tổ chức
dạy học
Thời gian, địa điểm
cầu SV chuẩn
bị
Ghi chú
Lý thuyết Chương 6: Thư viện lập trình song song
MPI
I Giới thiệu
1 Hướng dẫn cài đặt MPICH2 với VC++ 6
2 Cấu trúc một trình MPI
3 Các thủ tục chính của MPI
4 Trao đổi dữ liệu
5 Đồng bộ các tiến trình
6 Chi tiết về các lệnh trao đổi dữ liệu
7 Các lệnh trao đổi dữ liệu không bị chặn
8 Các lệnh Persistent
9 Trao đổi dữ liệu mảng 2 chiều
10 Định nghĩa kiểu dữ liệu mới trong MPI
Bài tập
Thảo luận
Thực hành,
thí nghiệm,
thực tập,…
Trang 15Tự học, tự
nghiên cứu
Tuần 11
Hình thức
tổ chức
dạy học
Thời gian, địa điểm
cầu SV chuẩn
bị
Ghi chú
Lý thuyết II Các hàm truyền thông theo nhóm
III Thiết lập các Topologies
1 Tạo nhóm truyền thông
2 Virtual topologies
3 Deadlock trong lập trình MPI Bài tập
Thảo luận
Thực hành,
thí nghiệm,
thực tập,…
Tự học, tự
nghiên cứu
Tuần 12
Hình thức
tổ chức
dạy học
Thời gian, địa điểm
cầu SV chuẩn
bị
Ghi chú
Lý thuyết
1 Thiết lập môi trường làm việc MPI dùng máy ảo
2 Thiết lập môi trường làm việc MPI trên
2 máy nối trực tiếp
3 Cài đặt thuật toán nhân ma trận thưa với vector
4 Cài đặt thuật toán nhân ma trận với ma trận
Thảo luận
Thực hành,
thí nghiệm,
thực tập,…
Tự học, tự
nghiên cứu
Trang 16Tuần 13
Hình thức
tổ chức
dạy học
Thời gian, địa điểm
cầu SV chuẩn
bị
Ghi chú
Lý thuyết
Bài tập
Thảo luận 1 Xây dựng thuật toán Kruskal song song
2 Xây dựng thuật toán Prim song song
3 Xây dựng thuật toán Dijkstra song song
Thực hành,
thí nghiệm,
thực tập,…
Tự học, tự
nghiên cứu
Tuần 14
Hình thức
tổ chức
dạy học
Thời gian, địa điểm
cầu SV chuẩn
bị
Ghi chú
Lý thuyết
Bài tập 1 Cài đặt thuật toán Kruskal song song
2 Cài đặt thuật toán Prim song song
3 Cài đặt thuật toán Dijkstra song song
Thảo luận
Thực hành,
thí nghiệm,
thực tập,…
Tự học, tự
nghiên cứu
Tuần 15
Hình thức
tổ chức
dạy học
Thời gian, địa điểm
cầu SV chuẩn
bị
Ghi chú
Lý thuyết Chương 7: Thư viện lập trình OpenMP
1 Sử dụng OpenMP trong VC++.Net