Nghiên cứu tính toán lưới và thử nghiệm một số thuật toán lý thuyết đồ thị

138 863 4
Nghiên cứu tính toán lưới và thử nghiệm một số thuật toán lý thuyết đồ thị

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

Thông tin tài liệu

Tài liệu tham khảo công nghệ thông tin Nghiên cứu tính toán lưới và thử nghiệm một số thuật toán lý thuyết đồ thị

TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN KHOA CÔNG NGHỆ THÔNG TIN BỘ MÔN CÔNG NGHỆ PHẦN MỀM HUỲNH BÁ THANH TÙNG - 0112079 TRẦN VIỆT CƯỜNG - 0112339 NGHIÊN CỨU TÍNH TOÁN LƯỚI THỬ NGHIỆM MỘT SỐ THUẬT TOÁN THUYẾT ĐỒ THỊ KHÓA LUẬN CỬ NHÂN TIN HỌC GIÁO VIÊN HƯỚNG DẪN TS. TRẦN ĐAN THƯ Th.S NGUYỄN THANH SƠN NIÊN KHÓA 2001-2005 NHẬN XÉT CỦA GIÁO VIÊN HƯỚNG DẪN NHẬN XÉT CỦA GIÁO VIÊN PHẢN BIỆN LỜI CẢM ƠN Chúng em xin bày tỏ lòng biết ơn chân thành nhất đến thầy Trần Đan Thư thầy Nguyễn Thanh Sơn, hai thầy đã tận tâm hướng dẫn, giúp đỡ chúng em trong suốt thời gian thực hiện luận văn này. Chúng con xin gửi tất cả lòng biết ơn sâu sắc sự kính trọng đến ông bà, cha mẹ, cùng toàn thể gia đình, những người đã nuôi dạy chúng con trưởng thành đến ngày hôm nay. Chúng em cũng xin chân thành cám ơn quý Thầy cô trong Khoa Công nghệ thông tin, trường Đại học Khoa học Tự nhiên Tp.Hồ Chí Minh đã tận tình giảng dạy, hướng dẫn, giúp đỡ tạo điều kiện cho chúng em thực hiện tốt luận văn này. Xin chân thành cám ơn sự giúp đỡ, động viên chỉ bảo rất nhiệt tình của các anh chị tất cả các bạn, những người đã giúp chúng tôi có đủ nghị lực ý chí để hoàn thành luận văn này. Mặc dù đã cố gắng hết sức, song chắc chắn luận văn không khỏi những thiếu sót. Chúng em rất mong nhận được sự thông cảm chỉ bảo tận tình của quý Thầy Cô các bạn. TP.HCM, 7/2005 Nhóm sinh viên thực hiện Huỳnh Bá Thanh Tùng - Trần Việt Cường LỜI NÓI ĐẦU Nhân lọai ngày nay đang chứng kiến sự phát triển mạnh mẽ của ngành Công nghệ Thông tin, một trong những ngành mũi nhọn của nhiều quốc gia trên thế giới. Sự phát triển vượt bậc của nó là kết quả tất yếu của sự phát triển kèm theo các thiết bị phần cứng cũng như phần mềm tiện ích. Sự phát triển đó đã kéo theo rất nhiều các ngành khác phát triền theo, trong đó có lĩnh vực nghiên cứu khoa học. Tuy công nghệ ngày càng phát triển, tốc độ xử của các thiết bị cũng không ngừng tăng cao, nhưng nhu cầu tính toán của con người vẫn còn rất lớn. Cho đến hiện nay vẫn còn rất nhiều vấn đề mà các nhà khoa học cùng với khả năng tính toán của các máy tính hiện nay vẫn chưa giải quyết được hay giải quyết được nhưng với thời gian rất lớn. Các vấn đề đó có thể là : • Mô hình hóa giả lập • Xử thao tác trên các dữ liệu rất lớn • Các vấn đề “grand challenge” (là các vấn đề không thể giải quyết trong thời gian hợp lý) Lời giải cho những vấn đề này đã dẫn đến sự ra đời của các thế hệ siêu máy tính. Tuy nhiên việc đầu tư phát triển cho các thiết bị này gần như là điều quá khó khăn đối với nhiều người, tổ chức, trường học…. Chính vì lẽ đó mà ngày nay người ta đang tập trung nghiên cứu cách cách sử dụng các tài nguyên phân bố một cách hợp để tận dụng được khả năng tính toán của các máy tính đơn. Những giải pháp này được biết đến với nhiều tên gọi khác nhau như meta-computing, salable-computing, global- computing, internet computing gần nhất hiện nay là peer to peer computing hay Grid computing. Đây là phương pháp nhằm tận dụng khả năng của các máy tính trên toàn mạng thành một máy tính “ảo” duy nhất, nhằm hợp nhất tài nguyên tính toán ở nhiều nơi trên thế giới để tạo ra một khả năng tính toán khổng lồ, góp phần giải quyết các vấn đề khó khăn trong khoa học công nghệ. Ngày nay nó đang càng được sự hỗ trợ mạnh hơn của các thiết bị phần cứng, băng thông… Grid Computing có khả năng chia sẻ, chọn lựa, thu gom một số lượng lớn những tài nguyên khác nhau bao gồm những siêu máy tính, các hệ thống lưu trữ, cùng với những nguồn dữ liệu, các thiết bị đặt biệt… Những tài nguyên này được phân bố ở các vùng địa khác nhau thuộc về các tổ chức khác nhau. Nhận thấy được nhu cầu phát triển ấy, nhóm chúng em đã quyết định chọn thực hiện đề tài “Nghiên cứu tính toán lưới thực nghiệm trên một số thuật toán thuyết đồ thị” Mục tiêu của đề tài đề ra là tìm hiểu về tính toán lưới, qua đó tận dụng các kiến thức có được để có thể cài đặt một số thuật toán thuyết đồ thị, nhằm có thể giải quyết các vấn đề tìm đường đi khi số đỉnh tương đối lớn… Các nội dung chính: • Nghiên cứu tính toán lưới • Tìm hiểu các môi trường hỗ trợ • Tìm hiểu lập trinh song song phân tán • Cài đặt một số thuật toán với kiến thức có được Nội dung của luận văn được chia làm 6 chương : Chương 1. Giới thiệu : Giới thiệu tổng quan về tính toán lưới, khái niệm lịch sử phát triển. Chương 2. Tính toán song song phân bố : Trình bày về các kiến trúc, mô hình xử song song phân bố, cách thức xây dựng chương trình, thiết kế thuật toán… Chương 3. Các môi trường hỗ trợ tính toán lưới : Tìm hiểu về các môi trường đang được sử dụng nghiên cứu hiện nay trên thế giới. Chương 4. Mô hình lập trình truyền thông điệp - MPI : Mô hình cụ thể được dùng để phát triển ứng dụng MPI. Chương 5. Thử nghiệm các thuật toán thuyết đồ thị : Cách thức xây dựng chương trình , các khái niệm thuyết, thực nghiệm thực tế … Chương 6. Tổng kết : Nêu các kết quả đã đạt được, một số vấn đề còn tồn tại, định hướng mục tiêu mở rộng phát triển đề tài trong tương lai. Mục lục Danh sách hình . 11 Chương 1. Giới thiệu . 13 1.1. Các khái niệm 13 1.2. Những thách thức đối với tính toán lưới . 16 Chương 2. Tính toán song song phân bố 17 2.1. Khái niệm 17 2.2. Nền tảng tính toán song song phân bố . 18 2.2.1. Kiến trúc xử song song phân bố 18 2.2.2. Tổ chức vật của các nền tảng song song phân bố 25 2.3. Một số mô hình lập trình song song thông dụng . 26 2.3.1. Mô hình chia sẽ không gian bộ nhớ 26 2.3.2. Mô hình truyền thông điệp .27 2.4. Cách thức xây dựng một chương trình song song phân bố 29 2.4.1. Các thuật ngữ căn bản .29 2.4.2. Thiết kế thuật toán song song .31 2.4.3. Một số phương pháp tối ưu .43 2.4.4. Các mô hình thuật toán song song 48 Chương 3. Các môi trường hỗ trợ tính toán lưới . 52 3.1. Giới thiệu . 52 3.2. Các vấn đề khi lập trình luới . 53 3.2.1. Tính mang chuyển, tính khả thi khả năng thích ứng 53 3.2.2. Khả năng phát hiện tài nguyên .54 3.2.3. Hiệu năng 54 3.2.4. Dung lỗi 55 3.2.5. Bảo mật .55 3.2.6. Các siêu mô hình .55 3.3. Tổng quát về các môi trường hỗ trợ 56 3.3.1. Một số môi trường Grid 56 3.3.2. Những mô hình lập trình công cụ hỗ trợ 59 3.3.3. Môi trường cài đặt 64 3.4. Những kỹ thuật nâng cao hỗ trợ lập trình . 75 3.4.1. Các kỹ thuật truyền thống .76 3.4.2. Các kỹ thuật hướng dữ liệu .76 3.4.3. Các kỹ thuật suy đoán tối ưu 77 3.4.4. Các kỹ thuật phân tán 77 3.4.5. Nhập xuất hướng Grid 78 3.4.6. Các dịch vụ giao tiếp cấp cao .78 3.4.7. Bảo mật .80 3.4.8. Dung lỗi 80 3.4.9. Các siêu mô hình hệ thống thời gian thực hướng Grid 82 3.5. Tóm tắt 83 Chương 4. Mô hình lập trình truyền thông điệp - MPI . 85 4.1. Các khái niệm cơ bản 86 4.2. Cấu trúc chương trình MPI . 89 4.3. Trao đổi thông tin điểm-điểm . 90 4.3.1. Các thông tin của thông điệp 90 4.3.2. Các hình thức truyền thông .91 4.3.3. Giao tiếp blocking .92 4.3.4. Giao tiếp non-blocking .96 4.4. Trao đổi thông tin tập hợp . 101 4.4.1. Đồng bộ hóa 101 4.4.2. Di dời dữ liệu trong nhóm 101 4.4.3. Tính toán gộp 105 4.5. Các kiểu dữ liệu . 109 4.5.1. Những kiểu dữ liệu đã được định nghĩa .109 4.5.2. Các kiểu dữ liệu bổ sung .110 4.5.3. Pack UnPack 113 Chương 5. Thử nghiệm các thuật toán thuyết đồ thị . 114 5.1. Các khái niệm cơ bản 114 5.2. Dijkstra 115 5.2.1. Tuần tự 115 5.2.2. Song song 119 5.2.3. Thực nghiệm chương trình .120 5.3. Prim . 122 5.3.1. Tuần tự 122 5.3.2. Song song 124 5.3.3. Thực nghiệm chương trình .126 5.4. Bellman – Ford 128 5.4.1. Tuần tự 128 5.4.2. Song song 130 5.4.3. Thực nghiệm chương trình .132 5.5. Đánh giá chung 134 Chương 6. Tổng kết . 136 6.1. Kết luận . 136 6.2. Hướng phát triển . 136 Tài liệu tham khảo . 138 [...]... thiết kế phân tử hiển thị đồ họa máy tính Trong khi đó các nhóm nghiên cứu khác đã kết hợp các siêu máy tính lớn lại với nhau thành một siêu máy tính ảo duy nhất, rồi phân phối các phần của một ứng dụng rất lớn cho các máy tính trên một mạng diện rộng, ví dụ như máy tính giả lập các ứng dụng tương tác giữa chất lỏng cánh quạt của chân vịt tàu…Thêm vào đó phạm vi của các dự án nghiên cứu này đã nêu... cãi trong cộng đồng các nhà nghiên cứu 1 MPP – massively or moderately parallel processor Việc xây dựng một bộ xử song song từ một số lượng nhỏ các bộ xử Trang 23 mạnh mẽ hay từ một số lượng rất lớn các bộ xử bình thường (một “bầy voi” hay là một “đàn kiến”) thì cách nào sẽ hiệu quả hơn ? Theo luật của Amdahl thì cách đầu tiên thích hợp hơn cho những phần tuần tự của một tính toán, trong khi... một chuỗi tuần tự những bước cơ bản để giải quyết một vấn đề được đặt ra bằng cách sử dụng máy tính tuần tự Tương tự, một thuật tóan song song là một phương pháp giải quyết vấn đề dựa trên việc sử dụng nhiều bộ xử Tuy nhiên, để chỉ ra được một thuật tóan song song không đơn giản như là chỉ ra từng bước cụ thể Mà là ở một mức độ nào đó, một thuật tóan song song phải được thêm vào tính đồng thời và. .. sẽ mô tả một vài kỹ thuật phân họach phổ biến cho xử đồng hành Các kỹ thuật này không phải là tất cả các kỹ thuật phân họach có thể có Thêm vào đó, những phương pháp phân họach ở đây không bảo đảm sẽ dẫn tới những thuật toán song song tốt nhất cho một vấn đề nào đó Mặc dù còn một vài thiếu sót, nhưng các kỹ thuật phân họach được đề cập trong phần này là điểm bắt đầu tốt cho nhiều vấn đề một hay... phân họach Xử đồng thời nhiều tác vụ là điều Trang 29 kiện tiên quyết để rút ngắn thời gian giải quyết toàn bộ vấn đề Các tác vụ có thể không cùng kích thước Đồ thị phụ thuộc : là một thể hiện sự phụ thuộc giữa các tác vụ trật tự thực hiện giữa chúng Một đồ thị phụ thuộc là một đồ thị có hướng trong đó mỗi nút của cây là một tác vụ cạnh có hướng thể hiện sự phụ thuộc giữa chúng Một tác vụ chỉ... trong đồ thị tương tác thế hiện các tác vụ còn các cạnh nối thể hiện tưong tác giữa chúng Các cung trong đồ thị tương tác thường là cung vô hướng Tập hợp cạnh thuờng là tập hợp cha của tập hợp cạnh của đồ thị phụ thuộc Trang 30 Hình 2-9 :Đồ thi tương tác trong bài toán nhân ma trận với vector 2.4.2 Thiết kế thuật toán song song Phân chia một công việc tính toán thành các phần nhỏ hơn ánh xạ chúng vào... xuất trung gian cùng với chương trình • Quản truy cập vào dữ liệu chung giữa các bộ xử • Đồng bộ hóa các bộ xử khi thực thi các chương trình song song 2.4.1 Các thuật ngữ căn bản Phân họach : là quá trình phân chia một vấn đề cần tính toán thành các phần nhỏ hơn, một vài hay tất cả các phần đó có thể xử song song Tác vụ : là đơn vị do người lập trình định nghĩa để chỉ ra các phần tính toán. .. quảng cáo kết xuất báo cáo • Thiết kế các nghi thức mạng cho việc trao đổi định dạng thông điệp Trang 16 Chương 2 Tính toán song song phân bố 2.1 Khái niệm Ngày nay trong khi công nghệ ngày một phát triển thì nhu cầu về tốc độ tính toán của các hệ thống máy tính cũng ngày một tăng cao Các lĩnh vực đòi hỏi tính tóan hiệu năng cao như là mô hình số giả lập các vấn đề của khoa học công nghệ... ngọai trừ một số nhỏ các tiến trình (là những tiến trình “gốc”) Điều này không có nghĩa là những tiến trình làm việc theo lock-step Các chương trình SPMD có thể là ít đồng bộ hay là hoàn toàn bất đồng bộ 2.4 Cách thức xây dựng một chương trình song song phân bố Phát triển thuật toánmột phần quan trọng trong việc giải quyết vấn đề khi sử dụng máy tính Một thuật toán tuần tự về cơ bản là một phương... được thực hiện Trong đồ thị phụ thuộc tập hợp cạnh có thể rỗng Hình 2-8 : Đồ thị phụ thuộc tác vụ Granularity : số lượng kích thước của các tác vụ sau bước phân họach được gọi là granularity của bước phân họach Bước phân họach một vấn đề lớn thành một số lượng lớn các vấn đề nhỏ được gọi là fine-grained thành một số lượng nhỏ các vấn đề lớn đựơc gọi là coarse-grained Đồ thị tương tác : là mô . Nghiên cứu tính toán lưới và thực nghiệm trên một số thuật toán lý thuyết đồ thị Mục tiêu của đề tài đề ra là tìm hiểu về tính toán lưới, và qua đó tận. TRẦN VIỆT CƯỜNG - 0112339 NGHIÊN CỨU TÍNH TOÁN LƯỚI VÀ THỬ NGHIỆM MỘT SỐ THUẬT TOÁN LÝ THUYẾT ĐỒ THỊ KHÓA LUẬN CỬ NHÂN TIN HỌC GIÁO

Ngày đăng: 23/11/2012, 08:09

Hình ảnh liên quan

Hình 1-1 :3 tầng của Grid - Nghiên cứu tính toán lưới và thử nghiệm một số thuật toán lý thuyết đồ thị

Hình 1.

1 :3 tầng của Grid Xem tại trang 15 của tài liệu.
Hình 2- 1: Phân lọai hệ thống máy tính theo Flynn-Johnson 2.2.1.1.  SISD  - Nghiên cứu tính toán lưới và thử nghiệm một số thuật toán lý thuyết đồ thị

Hình 2.

1: Phân lọai hệ thống máy tính theo Flynn-Johnson 2.2.1.1. SISD Xem tại trang 19 của tài liệu.
Hình 2- 3: Kiến trúc SIMD - Nghiên cứu tính toán lưới và thử nghiệm một số thuật toán lý thuyết đồ thị

Hình 2.

3: Kiến trúc SIMD Xem tại trang 20 của tài liệu.
Hình 2- 4: Kiến trúc MISD - Nghiên cứu tính toán lưới và thử nghiệm một số thuật toán lý thuyết đồ thị

Hình 2.

4: Kiến trúc MISD Xem tại trang 22 của tài liệu.
Hình 2- 5: Kiến trúc MIMD - Nghiên cứu tính toán lưới và thử nghiệm một số thuật toán lý thuyết đồ thị

Hình 2.

5: Kiến trúc MIMD Xem tại trang 23 của tài liệu.
Hình 2- 7: Mơ hình truyền thơng điệp - Nghiên cứu tính toán lưới và thử nghiệm một số thuật toán lý thuyết đồ thị

Hình 2.

7: Mơ hình truyền thơng điệp Xem tại trang 28 của tài liệu.
Hình 2-9 :Đồ thi tương tác trong bài tốn nhân ma trận với vector - Nghiên cứu tính toán lưới và thử nghiệm một số thuật toán lý thuyết đồ thị

Hình 2.

9 :Đồ thi tương tác trong bài tốn nhân ma trận với vector Xem tại trang 31 của tài liệu.
Hình 2-10 : (a) Phân các ma trận nhập và xuất thành các ma trận con       (b) Phân hoạch phép nhân ma trận thành 4 tác vụ - Nghiên cứu tính toán lưới và thử nghiệm một số thuật toán lý thuyết đồ thị

Hình 2.

10 : (a) Phân các ma trận nhập và xuất thành các ma trận con (b) Phân hoạch phép nhân ma trận thành 4 tác vụ Xem tại trang 33 của tài liệu.
Hình 2-1 2: Phân họach bài tốn nhân ma trận theo ma trận trung gian 3-chiều  - Nghiên cứu tính toán lưới và thử nghiệm một số thuật toán lý thuyết đồ thị

Hình 2.

1 2: Phân họach bài tốn nhân ma trận theo ma trận trung gian 3-chiều Xem tại trang 36 của tài liệu.
Hình 2-1 3: Các bước phát sinh theo phân hoạch thăm dị - Nghiên cứu tính toán lưới và thử nghiệm một số thuật toán lý thuyết đồ thị

Hình 2.

1 3: Các bước phát sinh theo phân hoạch thăm dị Xem tại trang 38 của tài liệu.
Hình 2-1 6: phân chia theo (a) 1 chiều và (b) hai chiều của ma trận xuất. Những phần màu xám là dữ liệu mà tiến trình cần để  tính tốn - Nghiên cứu tính toán lưới và thử nghiệm một số thuật toán lý thuyết đồ thị

Hình 2.

1 6: phân chia theo (a) 1 chiều và (b) hai chiều của ma trận xuất. Những phần màu xám là dữ liệu mà tiến trình cần để tính tốn Xem tại trang 43 của tài liệu.
Hình 3- 1: Mơ hình NetSolve - Nghiên cứu tính toán lưới và thử nghiệm một số thuật toán lý thuyết đồ thị

Hình 3.

1: Mơ hình NetSolve Xem tại trang 56 của tài liệu.
Hình 3- 2: Các thành phần của Globus - Nghiên cứu tính toán lưới và thử nghiệm một số thuật toán lý thuyết đồ thị

Hình 3.

2: Các thành phần của Globus Xem tại trang 59 của tài liệu.
Hình 4- 1: Các tiến trình tạo lập trên mơ hình lập trình MPI - Nghiên cứu tính toán lưới và thử nghiệm một số thuật toán lý thuyết đồ thị

Hình 4.

1: Các tiến trình tạo lập trên mơ hình lập trình MPI Xem tại trang 86 của tài liệu.
Hình 4- 6: Giao tiếp blocking 4.3.3.1. Blocking Send  - Nghiên cứu tính toán lưới và thử nghiệm một số thuật toán lý thuyết đồ thị

Hình 4.

6: Giao tiếp blocking 4.3.3.1. Blocking Send Xem tại trang 92 của tài liệu.
Hình 4- 7: Thứ tự các xử lý - Nghiên cứu tính toán lưới và thử nghiệm một số thuật toán lý thuyết đồ thị

Hình 4.

7: Thứ tự các xử lý Xem tại trang 95 của tài liệu.
Hình 4-10 : Broadcast dữ liệu - Nghiên cứu tính toán lưới và thử nghiệm một số thuật toán lý thuyết đồ thị

Hình 4.

10 : Broadcast dữ liệu Xem tại trang 102 của tài liệu.
Hình 4-1 1: Ví dụ hàm Scatter - Nghiên cứu tính toán lưới và thử nghiệm một số thuật toán lý thuyết đồ thị

Hình 4.

1 1: Ví dụ hàm Scatter Xem tại trang 103 của tài liệu.
Hình 4-1 4: Hàm MPI_Alltoall - Nghiên cứu tính toán lưới và thử nghiệm một số thuật toán lý thuyết đồ thị

Hình 4.

1 4: Hàm MPI_Alltoall Xem tại trang 104 của tài liệu.
Hình 4-1 3: Hàm MPI_Allgather - Nghiên cứu tính toán lưới và thử nghiệm một số thuật toán lý thuyết đồ thị

Hình 4.

1 3: Hàm MPI_Allgather Xem tại trang 104 của tài liệu.
Hình 4-1 5: Hàm MPI_Reduce - Nghiên cứu tính toán lưới và thử nghiệm một số thuật toán lý thuyết đồ thị

Hình 4.

1 5: Hàm MPI_Reduce Xem tại trang 105 của tài liệu.
Hình 4-16 : Sử dụng 8 xử lý để tính giá trị tuyệt đối - Nghiên cứu tính toán lưới và thử nghiệm một số thuật toán lý thuyết đồ thị

Hình 4.

16 : Sử dụng 8 xử lý để tính giá trị tuyệt đối Xem tại trang 107 của tài liệu.
Hình 4-1 8: Hàm MPI_Reduce_scatter - Nghiên cứu tính toán lưới và thử nghiệm một số thuật toán lý thuyết đồ thị

Hình 4.

1 8: Hàm MPI_Reduce_scatter Xem tại trang 108 của tài liệu.
Hình 4-2 2: MPI_Type_indexed 4.5.2.4. Struct  - Nghiên cứu tính toán lưới và thử nghiệm một số thuật toán lý thuyết đồ thị

Hình 4.

2 2: MPI_Type_indexed 4.5.2.4. Struct Xem tại trang 112 của tài liệu.
Hình 5-1.1. - Nghiên cứu tính toán lưới và thử nghiệm một số thuật toán lý thuyết đồ thị

Hình 5.

1.1 Xem tại trang 116 của tài liệu.
Hình 5-1.3. - Nghiên cứu tính toán lưới và thử nghiệm một số thuật toán lý thuyết đồ thị

Hình 5.

1.3 Xem tại trang 117 của tài liệu.
Hình 5-1.5 - Nghiên cứu tính toán lưới và thử nghiệm một số thuật toán lý thuyết đồ thị

Hình 5.

1.5 Xem tại trang 118 của tài liệu.
Hình 5-3. Thuật tốn Prim tuần tự - Nghiên cứu tính toán lưới và thử nghiệm một số thuật toán lý thuyết đồ thị

Hình 5.

3. Thuật tốn Prim tuần tự Xem tại trang 124 của tài liệu.
Hình c b4  - Nghiên cứu tính toán lưới và thử nghiệm một số thuật toán lý thuyết đồ thị

Hình c.

b4 Xem tại trang 129 của tài liệu.

Từ khóa liên quan

Tài liệu cùng người dùng

Tài liệu liên quan