Vì vậy trong thực tế người ta thường sử dụng các phương pháp lặp hiệu chỉnh không gian con bằngcách định nghĩa một không gian conSk với số chiềuk, k < N và giải bài toán cựctrị sau Ý tưở
Trang 1ĐẠI HỌC QUỐC GIA HÀ NỘI
TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN
Trang 2ĐẠI HỌC QUỐC GIA HÀ NỘI
TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN
LUẬN ÁN TIẾN SĨ TOÁN HỌC
Người hướng dẫn khoa học:
GS.TSKH PHẠM KỲ ANH
Hà Nội - 2014
Trang 3LỜI CAM ĐOAN
Tôi xin cam đoan đây là công trình nghiên cứu của riêng tôi dưới sựhướng dẫn của GS Phạm Kỳ Anh Các số liệu, kết quả trình bày trong luận án
là trung thực và chưa từng được ai công bố trong bất kỳ công trình nào khác
Nghiên cứu sinh
Vũ Tiến Dũng
Trang 4LỜI CẢM ƠN
Trước hết tôi xin gửi lời cảm ơn chân thành và sâu sắc tới Thầy hướng dẫn,
GS TSKH Phạm Kỳ Anh Trong suốt quá trình thực hiện luận án, tôi luôn nhậnđược sự giúp đỡ tận tình, quý báu của Thầy Nhờ những ý tưởng mà Thầy đã gợi
ý, những góp ý, hướng dẫn của Thầy, những tài liệu bổ ích mà Thầy đã cung cấpcũng như những cuộc trao đổi thú vị cùng Thầy về công việc nghiên cứu, tôi đãhoàn thành đề tài của mình Và hơn cả, trong suốt quá trình học tập trước đây vàtrong quá trình thực hiện luận án, tôi luôn cảm nhận được tình thương quý, tinyêu của thầy giành cho tôi, sự động viên khích lệ của thầy khi tôi gặp khó khăntạo động lực cho tôi vững tin thực hiện quá trình nghiên cứu Đối với cá nhântôi, thầy không chỉ đơn thuần là người hướng dẫn khoa học mà còn là người chathứ hai của tôi
Tôi xin chân thành cảm ơn các thầy cô và anh chị em trong Bộ môn Tin học,Khoa Toán-Cơ-Tin học, đặc biệt GS TS Đặng Huy Ruận, PGS TS Nguyễn HữuNgự, PGS TS Đỗ Trung Tuấn, PGS TS Lê Trọng Vĩnh, TS Nguyễn Thị MinhHuyền, đã luôn chia sẻ, động viên, tạo điều kiện thu xếp công việc thuận lợi,giúp đỡ tôi rất nhiều trong việc hoàn thành luận án này
Tôi xin chân thành cảm ơn các thầy cô, các anh chị và các bạn trong Xemina
"Toán học tính toán" về những thảo luận và góp ý trong các buổi Xemina Đặcbiệt, tôi xin chân thành cảm ơn GS TSKH Nguyễn Hữu Công, PGS TSKH VũHoàng Linh, PGS TS Nguyễn Hữu Điển, GS TS Đặng Quang Á, PGS TSKHPhạm Huy Điển, PGS TS Nguyễn Minh Tuấn, TS Nguyễn Trung Hiếu đã giúp
đỡ, góp những ý kiến xác đáng để luận án được hoàn thiện hơn
Tôi xin chân thành cảm ơn các thầy và anh chị em trong Trung tâm Tínhtoán Hiệu năng cao, ĐHKHTN, ĐHQG Hà Nội Trong suốt thời gian học tậptrước đây và quá trình nghiên cứu sinh, Trung tâm đã tạo điều kiện cho tôi đượctìm hiểu tiếp cận các phương tiện, máy móc và tạo môi trường làm việc thuậnlợi để tôi có thể thực hiện đề tài của mình
Tôi cũng rất biết ơn Trường ĐHKHTN, ĐHQG Hà Nội Công tác quản lýđào tạo và môi trường nghiên cứu của Trường đã góp phần không nhỏ để choluận án này được hoàn thành đúng dự định
Xin chân thành cảm ơn TS Cao Văn Chung, Lê Trung Kiên, Nguyễn Trung
Trang 5Kiên, Nguyễn Thị Thanh Lan, Vũ Anh Mỹ, Đặng Văn Hiếu và các bạn khác,những người đã chia sẻ, giúp đỡ về nhiều mặt, để tôi có thể hoàn thành quá trìnhnghiên cứu của mình.
Tôi xin gửi lời cảm ơn tới Quỹ Phát triển Khoa học Công nghệ Quốc gia ViệtNam (NAFOSTED) Luận án này được hỗ trợ một phần về mặt tài chính bởiQuỹ, trong khuôn khổ Đề tài Nghiên cứu khoa học cơ bản mã số 101.02.4209.Cuối cùng, tôi muốn bày tỏ lòng biết ơn sâu sắc tới mẹ và những người thântrong gia đình, những người đã cảm thông và chia sẻ mọi khó khăn cùng tôitrong suốt những năm tháng qua để tôi có thể hoàn thành luận án Luận án này,
và những gì tôi đang cố gắng thực hiện, là để gửi tới cha, mẹ, vợ và những ngườithân trong gia đình, với tất cả lòng biết ơn sâu sắc nhất
Trang 6Mục lục
Lời cam đoan i
Lời cảm ơn ii
Danh mục các ký hiệu và chữ viết tắt viii
Danh mục các bảng x
Danh mục các hình vẽ xi
Mở đầu 1
Chương 1 Kiến thức chuẩn bị 12
1.1 Nguyên lý tính toán song song 12
1.1.1 Kiến trúc máy tính song song 13
1.1.2 Lập trình song song 21
1.1.3 Đánh giá hiệu quả của tính toán song song 23
1.2 Bài toán kích thước lớn, điều kiện xấu và bài toán đặt không chỉnh 24 1.2.1 Bài toán kích thước lớn 24
1.2.2 Bài toán đặt không chỉnh và bài toán điều kiện xấu 27
1.2.3 Một số phương pháp hiệu chỉnh 30
1.2.4 Quy trình giải một bài toán kích thước lớn và điều kiện xấu trên bó máy tính 32
1.2.5 Một số phương pháp tuần tự và song song giải hệ phương trình toán tử 33
Trang 7Chương 2 Phương pháp song song giải hệ phương trình toán tử tuyến tính và ứng
dụng 35
2.1 Phương pháp chỉnh lặp song song 36
2.2 Giải hệ phương trình đại số tuyến tính quá xác định và ứng dụng trong bài toán khôi phục ảnh 38
2.2.1 Phương pháp chỉnh lặp hiện song song và chỉnh lặp ẩn song song cho hệ phương trình đại số tuyến tính quá xác định 39
2.2.2 Ước lượng sai số của phương pháp 43
2.3 Thử nghiệm số 46
2.3.1 Giải hệ phương trình đại số tuyến tính quá xác định 46
2.3.2 Bài toán khôi phục ảnh đa cấp xám 52
2.4 Phương pháp song song toàn phần giải một lớp phương trình đạo hàm riêng đại số 61
2.4.1 Phân rã bài toán biên cho phương trình đạo hàm riêng đại số thành bài toán biên cho phương trình elliptic và phương trình parabolic 62
2.4.2 Phương pháp phân rã song song giải bài toán biên cho phương trình elliptic và parabolic 67
2.4.3 Thử nghiệm số 70
Chương 3 Phương pháp chỉnh lặp Gauss-Newton song song giải hệ phương trình toán tử phi tuyến và ứng dụng 75
3.1 Phương pháp chỉnh lặp Gauss-Newton và phương pháp chỉnh lặp Gauss -Newton song song 76
3.2 Sự hội tụ của phương pháp chỉnh lặp Gauss-Newton song song 80
3.3 Áp dụng cho hệ phi tuyến dưới xác định 86
3.4 Hệ phương trình có cấu trúc thưa 92
Trang 83.5 Mối liên hệ giữa phương pháp chỉnh lặp Gauss-Newton song song
và các phương pháp chỉnh lặp song song 95
Kết luận 97
Danh mục công trình khoa học của tác giả liên quan đến luận án 99
Tài liệu tham khảo 100
Trang 9Danh mục các ký hiệu và
chữ viết tắt
h·, ·i Tích vô hướng (hoặc tích đối ngẫu).
kxk Chuẩn của véc tơ x.
kDk Chuẩn của ma trận D.
F0(x) Đạo hàm Frechet của F tại điểm x.
cond(A) Số điều kiện của ma trận A.
>> Ký hiệu lớn hơn nhiều.
AT Ma trận chuyển vị của ma trận A.
Toeplitz Ma trận Toeplitz.
vec(F) Phép dãn ma trận F thành véc tơ.
⊗ Tích Kronecker.
A? Toán tử liên hợp của toán tử A.
H Không gian Hilbert.
PIIRM (PEIRM) Phương pháp chỉnh lặp ẩn (hiện) song song.
PEIRMm Phương pháp PEIRM với m bước lặp trong.
IRGNM Phương pháp chỉnh lặp Gauss Newton.
PIRGNM Phương pháp chỉnh lặp song song Gauss Newton PSU Phương pháp phân rã song song.
PFS Phương pháp song song với bước phân.
LW Phương pháp lặp Landweber.
TSVD Phương pháp khai triển kỳ dị chặt cụt.
CGLS Phương pháp bình phương tối thiểu gradient liên hợp.
x† Nghiệm của hệ phương trình.
Trang 10IVP Bài toán giá trị ban đầu.
x δ
n Nghiệm xấp xỉ thứ n của x†.
TOL(REN = T OL/kx†k) Sai số (Sai số tương đối).
nmax Tổng số bước lặp.
nmin Số n nhỏ nhất khi sai số tương đối (REN) của phương
pháp tương ứng nhỏ hơn một giá trị cho trước.
span(V k ) Không gian con sinh bởi tập k véc tơ
V k = {v1, , vk}.
IBVP Bài toán biên - ban đầu.
T p (T s ) Thời gian (giây) khi chạy song song (tuần tự).
S p = Ts/Tp (E p = Sp/N) Tỷ lệ tăng tốc độ (Hiệu suất trung bình mỗi CPU) SISD Đơn lệnh, đơn dòng dữ liệu.
SIMD Đơn lệnh, đa dòng dữ liệu.
MISD Đa lệnh, đơn dòng dữ liệu.
MIMD Đa lệnh, đa dòng dữ liệu.
UMA Kiến trúc máy tính song song với bộ nhớ chia sẻ
truy cập ngang quyền.
SMP Máy tính đa bộ xử lý đối xứng.
NUMA Kiến trúc máy tính song song với bộ nhớ chia sẻ
truy cập không ngang quyền.
GPU Đơn vị xử lý đồ họa.
CUDA Kiến trúc thiết bị tính toán hợp nhất.
Trang 11Danh mục các bảng
Chương 2.
2.1 Sai số tương đối của PIIRM và PEIRM theo số bước lặp 48
2.2 Sai số tương đối của PIIRM và PEIRM theo số bước lặp 49
2.3 Sai số tương đối của PIIRM, PEIRM và LW theo số bước lặp 51
2.4 Sai số tương đối của PIIRM, PEIRM và LW theo số bước lặp 52
2.5 Hệ số tăng tốc và Hiệu suất thực thi các phương pháp 52
2.6 Thời gian thực hiện thuận toán cải tiến và PEIRM1 60
2.7 Hệ số tăng tốc và hiệu suất của phương pháp PEIRM1 60
2.8 Kết quả với tỷ lệ τ h 2 không đổi 71
2.9 Hệ số tăng tốc và hiệu suất của phương pháp PFS 72
2.10 Thời gian thực thi phương pháp PSU 72
2.11 Tốc độ và hiệu suất trên một node tính toán 73
2.12 Tốc độ và hiệu suất trên một node tính toán 73
2.13 Số các phép lặp 73
2.14 Thời gian thực hiện 74
Chương 3. 3.1 Sai số tương đối và thời gian thực hiện chương trình tuần tự với η = 2 90
3.2 Chỉ số dừng của phương pháp PIRGNM với η = 0.02 90
3.3 Hiệu suất và tốc độ của phương pháp PIRGNM 90
3.4 Sai số tương đối và thời gian thực hiện chương trình tuần tự với η = 0.4 91
3.5 Chỉ số dừng của phương pháp PIRGNM với η = 0.02 91
3.6 Kết quả nhận được của hai phương pháp với cùng một số bước lặp cố định 94
Trang 123.7 Hiệu suất và tốc độ của phương pháp PIRGNM trên bó máy tính
IBM 1350 94
Trang 13Danh mục các hình vẽ
Chương 1.
1.1 Kiến trúc của máy tính với bộ xử lý mảng 15
1.2 UMA 17
1.3 NUMA 18
1.4 Máy tính với bộ nhớ phân tán 19
1.5 Kiến trúc bó máy tính IBM1350 và IBM1600 21
Chương 2. 2.1 Sai số tương đối của phương pháp PIIRM và PEIRM 48
2.2 Sai số tương đối của PIIRM và PEIRM 49
2.3 Sai số tương đối của phương pháp PIIRM, PEIRM và LW 50
2.4 Sai số tương đối của các phương pháp PIIRM, PEIRM và LW 51
2.5 Ảnh nhiễu 58
2.6 Ảnh khôi phục 58
2.7 Ảnh khôi phục 58
2.8 Ảnh gốc 58
2.9 Ảnh nhiễu 59
2.10 Ảnh khôi phục 59
2.11 Ảnh khôi phục 59
2.12 Ảnh gốc 59
Trang 14Mở đầu
Nhiều vấn đề trong các lĩnh vực khai phá dữ liệu, chuẩn đoán bệnh bằnghình ảnh, tìm kiếm và bào chế dược phẩm đặc dụng, công nghệ đa phương tiện,phát triển đồ họa và thực tại ảo, dự báo thời tiết, cảnh báo động đất, sóng thần,vv , đòi hỏi phải thực hiện một khối lượng tính toán khổng lồ với lượng dữ liệurất lớn trong thời hạn quy định Những bài toán này không thể giải được trênnhững máy tính đơn lẻ, với bộ nhớ hạn chế
Ví dụ như khi giải bài toán giá trị biên-ban đầu cho phương trình động học để dự báo trạng thái của khí quyển cho ngày hôm sau, nhưng do nănglực máy tính hạn chế, nên tính toán phải cần 10 ngày thì kết quả thu được sẽ mấthết ý nghĩa
thủy-nhiệt-Để giải quyết các bài toán có khối lượng tính toán rất lớn, người ta thường
sử dụng những thuật toán song song trên các máy tính hiệu năng cao Tính toánsong song liên quan đến các vấn đề sau:
1) hệ thống máy tính song song,
2) các công cụ phần mềm lập trình song song,
3) các thuật toán song song
Sau đây chúng ta sẽ đề cập đến ba vấn đề nêu trên
Tính toán song song [13] là hình thức tính toán trong đó nhiều phép tínhđược thực hiện đồng thời; nó hoạt động trên nguyên tắc là những vấn đề lớn đều
có thể chia thành nhiều phần nhỏ hơn, sau đó được giải quyết tương tranh Tínhtoán song song có ưu điểm tiết kiệm thời gian và bộ nhớ, do đó nó có thể giảiquyết thành công các vấn đề rất phức tạp trong thực tế
Máy tính song song sử dụng đồng thời nhiều bộ xử lý để giải quyết nhữngthành phần khác nhau của một bài toán Như vậy thời gian giải bài toán sẽ được
Trang 15giảm đi Theo lý thuyết, trong trường hợp lý tưởng nếu có n bộ xử lý thì thờigian giải quyết vấn đề sẽ giảm đinlần so với dùng một bộ xử lý Tuy nhiên, thờigian giải quyết trong thực tế sẽ lớn hơn thời gian lý tưởng tính trên lý thuyết donhiều nguyên nhân Thứ nhất là ngoài thời gian xử lý bài toán thì còn thời gianđồng bộ và giao tiếp giữa các công việc xử lý song song Thứ hai là không phảibài toán nào cũng có thể chia thành n phần nhỏ bằng nhau để giao cho các bộ
xử lý Nguyên nhân thứ hai phải khắc phục bằng cách xây dựng các giải thuậtkhả song song hợp lý Đối với nguyên nhân thứ nhất thì ngoài việc chú ý đếngiải thuật giải quyết vấn đề, ta nên chú ý đến khả năng truyền dữ liệu trong hệthống máy tính Như vậy hiệu quả của việc xây dựng một ứng dụng song songkhông chỉ phụ thuộc vào giải thuật giải quyết mà còn phụ thuộc nhiều vào hệthống máy tính
Các hệ thống máy tính song song lần lượt ra đời với nhiều kiến trúc và kỹthuật xây dựng khác nhau Hiện tại, các máy tính song song có thể tạm chia làmcác loại sau [67]:
i Máy tính song song dùng chung bộ nhớ với bộ xử lý đa lõi (Multicorescomputers) hoặc với các bộ xử lý đối xứng
ii Hệ thống máy tính song song quy mô lớn với bộ nhớ phân tán (Massivelyparallel systems) dựa trên hệ thống mạng tốc độ cao Ví dụ như Intel-Paragon, IBM 6000/SP, Cray T3E, vv
iii Các trạm làm việc liên kết qua đường mạng (Network of workstation).Phần quan trọng quyết định xu hướng của tính toán hiệu năng cao liên quanđến vấn đề xây dựng các siêu máy tính và các phần mềm chạy trên nó Ở vàothời điểm năm 1980, một siêu máy tính phải là máy tính có khả năng tính toántrên 100 Mflops (Mflops: triệu phép toán thực trên giây) nhưng ngày nay mộtmáy tính cá nhân cũng có khả năng tính toán mạnh hơn thế
Vấn đề rất được quan tâm là làm sao xây dựng được các siêu máy tính cónăng lực tính toán mạnh nhưng giá thành lại thấp Phương án liên kết các máytính cá nhân qua đường mạng theo dạng (iii) đã và đang là giải pháp được lựachọn hiện nay, vì có tỉ lệ giữa giá cả và độ hiệu quả tốt hơn so với các máy tính
đa bộ xử lý Tuy nhiên, trong các ứng dụng song song, thời gian truyền dữ liệucũng được quan tâm như thời gian tính toán Vì vậy, các hệ thống bó máy tínhđược xây dựng dựa trên việc liên kết các đơn vị tính toán (computing units) qua
Trang 16bộ chuyển mạch tốc độ cao, nhằm bảo đảm tốc độ truyền dữ liệu giữa các núttính toán mà vẫn không tăng giá thành toàn hệ thống.
Vì lý do nói trên, hướng nghiên cứu xây dựng bó máy tính và mô hình tínhtoán cụm được phát triển mạnh từ hơn thập kỷ qua Một vấn đề quan trọng khithiết lập hệ thống này là xây dựng phần mềm quản lý tài nguyên, phân bổ côngviệc, quản lý công việc, giám sát, vv Các phần mềm hệ thống này giúp chúng
ta sử dụng dễ dàng và hiệu quả tài nguyên trong hệ thống
Gần đây, nhu cầu giải quyết các bài toán thật lớn trong thực tế dẫn đến việcliên kết các trung tâm máy tính mạnh lại với nhau Sự hợp tác trong công việc,cùng chia sẻ tài nguyên giữa các cơ quan cũng thúc đẩy ra đời một mô hình hệthống máy tính mạnh mới là lưới tính toán (Grid Computing) và hướng tính toánmạng lưới Lưới tính toán [14] là một hệ thống cho phép chia sẻ, lựa chọn vàkết hợp các tài nguyên độc lập, rải rác ở nhiều nơi khác nhau để thực thi chươngtrình tùy thuộc vào tính sẵn sàng, khả năng đáp ứng, độ hiệu quả, giá cả và cácyêu cầu về dịch vụ của người sử dụng
Trong thời gian gần đây, tính toán đa năng trên các đơn vị xử lý đồ họa(GPU) là một hướng nghiên cứu mạnh trong kỹ thuật máy tính GPUs là các bộ
xử lý đồng bộ được tối ưu hóa mạnh cho việc xử lý đồ họa máy tính
Tùy thuộc vào các kiến trúc máy tính song song chúng ta có các mô hình lậptrình song song phù hợp Một mô hình lập trình song song sử dụng một tập hợpcác kỹ thuật phần mềm để thể hiện các giải thuật song song và đưa ứng dụngvào thực hiện trong hệ thống song song Mô hình bao gồm các ứng dụng, ngônngữ, bộ biên dịch, thư viện Trong thực tế, chưa có một máy tính song song nàocũng như cách phân chia công việc cho các bộ xử lý nào có thể áp dụng có hiệuquả cho mọi bài toán Do đó, người lập trình phải lựa chọn chính xác mô hìnhlập trình song song hoặc pha trộn các mô hình đó để phát triển các ứng dụngsong song trên một hệ thống riêng biệt Hiện nay có rất nhiều mô hình lập trìnhsong song: mô hình đa luồng (Threads), mô hình truyền thông điệp (MessagePassing), mô hình song song dữ liệu (Data Parallel) và mô hình lai (Hybird)được phát triển phù hợp với các kiến trúc của máy tính song song
Đối với các kiến trúc máy tính song song có bộ nhớ chia sẻ, mô hình lập trìnhsong song đa luồng thường được lựa chọn dựa trên chuẩn đang được sử dụngrộng rãi nhất để phát triển các chương trình song song là OpenMP (Open Multi-Processing) Quá trình song song hóa chương trình với OpenMP được thực hiệnbằng cách chèn vào trong mã nguồn các định hướng biên dịch (directive hoặc
Trang 17pragmas) OpenMP có thể hỗ trợ các ngôn ngữ thuộc dòng Fortran (Fortran77/90/95) và C, C++.
Với các kiến trúc máy tính song song có bộ nhớ phân tán, mô hình lập trìnhtruyền thông điệp (Message Passing) với hai thư viện tiêu biểu: PVM (ParallelVirtual Machine) và MPI (Message Passing Interface) thường được sử dụng đểphát triển các ứng dụng song song Mô hình lập trình truyền thông điệp còn đượcnghiên cứu áp dụng cho các hệ thống có bộ nhớ dùng chung (ví dụ như các hệthống Nec SX-6, Cray SV1ex) Hiện nay, PVM đã không còn được tập trungphát triển Trong khi đó, MPI ngày càng nhận được sự chú ý của các nhà cungcấp với các phiên bản LAM/MPI, MPICH Trong tương lai không xa, phiên bảnthống nhất OpenMPI của cộng đồng mã nguồn mở (MPI Forum) được xem là
có nhiều triển vọng
Bộ công cụ Globus Toolkit là bộ phần mềm mã nguồn mở, được sử dụngphổ biến để xây dựng các hệ thống tính toán lưới và các ứng dụng trên lưới tínhtoán
Để tính toán song song trên các đơn vị xử lý đồ họa (GPU), người ta sử dụngkiến trúc tính toán song song CUDA (Compute Unified Device Architecture -Kiến trúc thiết bị tính toán hợp nhất) do NVIDIA phát triển Lập trình viên cóthể sử dụng ngôn ngữ C for CUDA, dùng trình biên dịch PathScale Open64 C,
để cài đặt các thuật toán chạy trên GPU Kiến trúc CUDA hỗ trợ mọi chức năngtính toán thông qua ngôn ngữ C Ngoài ra CUDA cũng hỗ trợ các ngôn ngữPython, Fortran, Java và MATLAB CUDA cho phép các nhà phát triển truynhập vào tập các chỉ lệnh ảo và bộ nhớ của các phần tử tính toán song songtrong đơn vị xử lý đồ họa của CUDA (CUDA GPU) Sử dụng CUDA, các GPUmới nhất do NVIDIA sản xuất có thể dễ dàng thực hiện các tính toán như nhữngCPU
Nói chung, các thuật toán tuần tự đều không khai thác tốt được hiệu năngcủa máy tính song song Cùng với sự phát triển của các kiến trúc máy tính songsong, vấn đề cấp thiết được nhiều nhà khoa học trong nước cũng như trên thếgiới quan tâm là phát triển các thuật toán song song
Luận án này nghiên cứu một số phương pháp song song giải hệ phương trìnhtuyến tính hoặc phi tuyến kích thước lớn và điều kiện xấu Xét bài toán:
Trang 18trong đó F là ánh xạ đưa không gian tuyến tính định chuẩn X vào không giantuyến tính định chuẩnY, còn y ∈ Y là dữ liệu đã cho trên bó máy tính.
Một hệ phương trình điều kiện xấu và kích thước lớn được hiểu theo nghĩasau:
• Hệ phương trình tuyến tính được gọi là điều kiện xấu nếu một sai số nhỏcủa vế phải hoặc của ma trận hệ số có thể gây nên sai số rất lớn ở nghiệm
• Hệ phương trình phi tuyến là điều kiện xấu nếu ma trận Jacobi của vế phải
"gần suy biến" tại một số bước lặp nào đó [35]
Ngoài tính chất điều kiện xấu, chúng ta còn quan tâm đến các hệ có kích thướclớn theo nghĩa số biến và số phương trình, cũng như khối lượng tính toán và bộnhớ lưu trữ lớn
Ta đã biết, nhiều bài toán của khoa học, công nghệ, kinh tế, sinh thái, vv đưa về hệ phương trình vi phân thường, phương trình đạo hàm riêng và tíchphân Việc giải các bài toán bằng phương pháp rời rạc hóa thường dẫn đến giải
hệ phương trình đại số tuyến tính hoặc phi tuyến kích thước lớn và điều kiệnxấu Hơn nữa, một số hệ phương trình đại số lại có tính chất tính điều kiện xấutăng tỷ lệ thuận với số chiều
Ví dụ trong lĩnh vực xử lý ảnh của tin học người ta cần khôi phục hình ảnhban đầu của đối tượng bị nhiễu (làm mờ) trong quá trình xử lý Bài toán khôiphục ảnh dẫn đến giải hệ phương trình đại số tuyến tính kích thước lớn và điềukiện xấu (1)
Một số mô hình trong kinh tế như mô hình thương mại quốc tế [57] cũngđưa đến bài toán (1)
Bài toán xác định cấu trúc bên trong của một hệ thống dựa trên các thông
số độ đo bên ngoài, ví dụ như xác định cấu trúc bên trong của mặt trời dựa trêncác độ đo từ trái đất cũng dẫn đến bài toán (1) Không những thế bài toán (1)xuất hiện trong y học liên quan đến các bài toán chụp cắt lớp và bài toán ngượctrong điện từ
Mặc dù các bài toán điều kiện xấu là những bài toán đặt chỉnh, song trênthực tế chúng có thể coi như những bài toán đặt không chỉnh và phải được xử lýbằng các phương pháp hiệu chỉnh
Bài toán (1) được gọi là đặt không chỉnh theo nghĩa J Hadamard nếu nókhông giải được duy nhất với một số vế phải hoặc nghiệm không phụ thuộc liêntục vào các dữ kiện
Trang 19Để giải số bài toán đặt không chỉnh một cách ổn định, người ta phải sử dụngquá trình chỉnh hóa, hay hiệu chỉnh bài toán, tức là thay bài toán đặt khôngchỉnh bằng một họ bài toán đặt chỉnh phụ thuộc vào tham số, sao cho nghiệmcủa những bài toán đặt chỉnh hội tụ đến nghiệm của bài toán đặt không chỉnh,khi tham số hiệu chỉnh dần tới không.
Năm 1963, trong [88,89], A N Tikhnov đã đề xuất phương pháp hiệu chỉnhnổi tiếng mang tên ông Trong phương pháp hiệu chỉnh này, tác giả đã thay bàitoán đặt không chỉnh (1) bằng một họ bài toán đặt chỉnh
Tα ,δ(x) := kF(x) − y δ k2+ αkx − x0k2−→ min x∈X , (2)
trong đó α > 0 là tham số hiệu chỉnh, x0 ∈ X là phần tử cho trước cố định, còn
y δ là dữ liệu có nhiễu của vế phải (1), sao choky − y δ k ≤ δ
Trong trường hợp hệ (1) là kích thước lớn và điều kiện xấu, người ta hay sửdụng các phương pháp lặp Landweber [59] hoặc ν-methods (M Hanke [49]).Tuy nhiên các phương pháp lặp nói trên thường hội tụ chậm Vì vậy trong thực
tế người ta thường sử dụng các phương pháp lặp hiệu chỉnh không gian con bằngcách định nghĩa một không gian conSk với số chiềuk, k < N và giải bài toán cựctrị sau
Ý tưởng chính của các phương pháp này là, trước hết chúng ta sử dụng mộtkhông gian con để giảm số chiều của bài toán trong khi vẫn bảo đảm các véctơtương ứng với giá trị kỳ dị lớn Tiếp theo ta sử dụng phương pháp hiệu chỉnhTikhonov trên các không gian con này Nhìn chung nghiệm của phương pháp
Trang 20lai là nghiệm của bài toán
Tα ,δ(x) := kF(x) − y δ k2+ αkx − x0k2 −→ minx∈Sk (4)
Các phương pháp lai Krylov(Hybrid Krylov methods), các phương pháp lai lặpKrylov (Iterated Hybrid Krylov methods), các phương pháp lai dựa trên Gradi-ents (Hybrid methods based on Gradients) được đề xuất bởi Oldenburf [72, 73],Kennet and Williamson [55] đều dựa trên ý tưởng này
Khi F là toán tử phi tuyến thì việc giải bài toán cực tiểu nói trên nói chungkhông đơn giản, thậm chí không giải được Phương pháp lặp Landweber phituyến là một trong những đề xuất cho trường hợp này ( [18, 25, 40] và các tàiliệu tham chiếu) Phương pháp này áp dụng cho toán tửF khả vi liên tục Frechet,trong đó việc cực tiểu hóa phiếm hàm làm trơn Tikhonov ở trên sẽ được thựchiện bằng một quá trình lặp Tuy nhiên do tốc độ hội tụ chậm nên trong thực
tế phương pháp lặp Landweber ít được sử dụng hơn các phương pháp lặp kiểuNewton
Ý tưởng chính của bất kỳ phương pháp kiểu Newton là, thực hiện một số lầntuyến tính hóa phương trình toán tửF(x) = y xung quanh một xấp xỉ nghiệm x δ
k
và sau đó giải bài toán tuyến tính hóa
F0(x δ
k )(x δ k+1 − x δ
k ) = y δ − F(x δ
để tìm xấp xỉ nghiệmx δ
k+1 tiếp theo
Tuy vậy, nếu F là liên tục và compact thì F0(x δ
k ) là compact và do đó bài toán(5) đặt không chỉnh, dẫn đến nghiệm của bài toán tuyến tính hóa có thể khôngtồn tại (ngay cả theo nghĩa bình phương tối thiểu) Trong các trường hợp này,hai phương pháp được sử dụng phổ biến là phương pháp Levenberg-Marquardt
và phương pháp chỉnh lặp Gauss-Newton [18]
Năm 1967, trong [58], M M Lavrentiev đã đề xuất một phương pháp hiệuchỉnh sử dụng phương trình xấp xỉ Trong trường hợpX = Y = H là không gianHilbert, F là toán tử tuyến tính xác định không âm, thì thay cho (5) ta giảiphương trình hiệu chỉnh
Fx + α(x − x0) = y δ ,
trong đóα > 0là tham số Với cách chọnα thích hợp, nghiệm phương trình trên
sẽ hội tụ tới nghiệm của bài toán ban đầu, khiα → 0 Các kỹ thuật hiệu chỉnh doLavrentiev đề xuất đã được phát triển để giải bài toán đặt không chỉnh với toán
Trang 21lý riêng các bài toán thành phần, với kích thước bé hơn, được đặt ra một cách
tự nhiên Chính vì thế các phương pháp phân rã đã được nghiên cứu từ rất sớm.Chẳng hạn như các phương pháp dạng Kaczmarz Ý tưởng chung của phươngpháp Kaczmarz là phân rã bài toán lớn thành nhiều bài toán nhỏ và luân phiênthực hiện phép lặp cho từng bài toán nhỏ
Các phương pháp Kaczmarz không hiệu quả trên máy tính song song, bởi tạimỗi thời điểm, chỉ có một bài toán con được giải quyết Trên thực tế, để sử dụnghiệu quả các phương pháp tuần tự trên máy tính song song, người ta đã thựchiện song song hóa trên từng bước tính toán Đến nay, các kết quả song songtrên mức tính toán tại mỗi bước như vậy đã phát triển khá mạnh Có rất nhiều góiphần mềm hỗ trợ song song hóa khi giải hệ đại số tuyến tính đặt chỉnh, tính toán
ma trận với véctơ, như gói phần mềm LAPACK (http://www.netlib.org/lapack/),ScaLAPACK (http://www.netlib.org/scalapack/) Thậm chí các công cụ songsong hóa khi tính toán ma trận với véctơ đã được nhúng cứng vào các vi mạch
xử lý, ví dụ kiến trúc hỗ trợ tính toán song song trên các card đồ họa CUDA(Compute Unified Device Architecture) Cùng với kiến trúc này, các nghiêncứu để véctơ hóa dữ liệu xử lý đã và đang phát triển mạnh
Năm 1938, nhà toán học Ý G Cimmino đã đề xuất một phương pháp độcđáo giải hệ quá xác định Trong đó, các bài toán thành phần được xử lý đồngthời tại mỗi bước Xấp xỉ tiếp theo được lấy bằng trung bình cộng của các kếtquả thành phần Rõ ràng đề xuất này là một phương pháp song song
Tiếp thu ý tưởng của Cimmino, nhiều nhà toán học đã đề xuất các thuật toánsong song giải hệ phương trình đại số tuyến tính, bài toán chấp nhận lồi (convexfeasibility problem) cũng như giải hệ phương trình phi tuyến
Vào những năm 1990, các tác giả M A Dinz-Ehrhardt, J M Martinez, S A.Santos, G Zlilli và L Bergamaschi đã đề xuất một số phương pháp dạng Cimino
Trang 22giải các hệ phương trình phi tuyến trong không gian hữu hạn chiều [37, 38, 86].Nhưng các kết quả quả này đều dựa trên giả thiết bài toán (1) là đặt chỉnh.Cùng thời gian này, T Lu, P Neittaanm¨aki và X-C Tai [64] đã nghiên cứuphương trình dạng (1) và đề xuất phương pháp phân rã song song [64] tìm dãyxấp xỉ qua bước trung gian theo công thức
Dễ thấy bước trung gian tìm xik có thể tính toán một cách đồng thời trên N bộ
xử lý Nhưng để phương pháp này hội tụ, các toán tửFi cần liên tục Lipschitz vàđơn điệu mạnh, tức là phương trình F i (x) = y i phải đặt chỉnh Do đó không thể
áp dụng trực tiếp phương pháp này cho các bài toán đặt không chỉnh
Năm 2001, Y Censor, D Gordon và R Gordon [29–31] đề xuất phươngpháp giải hệ đại số tuyến tính kích thước lớn và thưa dạng Cimmino, còn đượcgọi là phương pháp trung bình thành phần (component averaging method - CAV).Một biến thể của phương pháp trên, trong đó việc giải đồng thời được thực hiệntheo từng nhóm kết hợp với lấy trung bình giữa các nhóm, gọi là lặp theo khối(block-iterative component averaging - BICAV) cũng được đề xuất trong các tài liệunày Các phương pháp cải biên này được chứng minh là hiệu quả hơn phươngpháp Cimmino nguyên thủy Tuy nhiên các tác giả trên chưa xét đến trường hợpphương trình toán tử phi tuyến đặt không chỉnh
P L Combettes, H Attouch, L M Brice˜no-Arias [12, 32] cũng đã đề xuấtmột số phương pháp song song cho phương trình dạng (1) Ở đó, các tác giả sửdụng một công cụ gọi là toán tử điểm gần kề (proximal operator) Để xác địnhđược toán tử này, ta cần giải một bài toán tối ưu lồi, nên không phải mọi trườnghợp đều có thể thực hiện hiệu quả
Cho đến nay hầu hết các bài toán đặt không chỉnh được giải trên máy tínhsong song theo nguyên tắc sau: Trước hết người ta sử dụng kỹ thuật hiệu chỉnh
để thay bài toán đặt không chỉnh ban đầu bằng các bài toán đặt chỉnh Sau đógiải bài toán đặt chỉnh thu được bằng những giải thuật song song cho đến khiđạt độ chính xác cần thiết, hoặc sử dụng một phương pháp tuần tự đã có và chỉtính toán song song cho một số công đoạn, như giải hệ phương trình đại số tuyếntính, tính tích phân, tìm cực trị phiếm hàm Tức là cách xử lý song song ở mứctính toán tại mỗi bước đã đề cập đến trong phần trên Như vậy, trong các phương
Trang 23pháp song song đã có, các thao tác hiệu chỉnh và phân rã song song cũng nhưquá trình giải thuộc các mức khác nhau và không gắn kết với nhau.
Các nhà tin học cũng như toán học Việt Nam đã có nhiều kết quả thú vị liênquan đến tính toán song song Tác giả Nguyễn Thanh Thủy cùng các cộng sự
đã nghiên cứu kết nối các cụm máy tính để tạo thành lưới tính toán để giải một
số bài toán thực tế, như dự báo thời tiết trên lưới tính toán Các tác giả NguyễnHữu Công, Nguyễn Thị Hồng Minh, Đặng Quang Á, vv đã nghiên cứu một sốphương pháp song song giải phương trình vi phân, phương trình đạo hàm riêng.Thời gian gần đây, các tác giả Phạm Kỳ Anh và Cao Văn Chung đã đề xuấtmột số phương pháp dạng Cimmino để giải bài toán đặt không chỉnh với toán tửđơn điệu, như phương pháp chỉnh lặp song song [7], phương pháp Newton hiệuchỉnh song song [8], phương pháp chiếu-điểm gần kề song song [9] và phươngpháp lai ghép song song [10]
Điểm đặc biệt của những phương pháp này là các thao tác hiệu chỉnh vàphân rã song song, cũng như chiếu-lặp, được gắn kết với nhau trong một quátrình lặp thống nhất Nghĩa là, các thao tác đó được thực hiện trong mỗi bướclặp, một cách đồng thời cho các bài toán thành phần Do đó, những thuật toánnày có thể áp dụng trực tiếp trên máy tính song song cho các bài toán đặt khôngchỉnh
Luận án này phát triển ý tưởng kết hợp giữa hiệu chỉnh và phân rã song songnói trên, sau đó áp dụng để giải một số bài toán kích thước lớn, điều kiện xấu.Ngoài phần mở đầu, kết luận và tài liệu tham khảo, luận án được chia thành
3 chương
• Trong Chương 1 chúng tôi trình bày một số kiến thức chuẩn bị như nguyên
lý chung của tính toán song song, bài toán kích thước lớn, điều kiện xấu
và bài toán đặt không chỉnh, một số phương pháp hiệu chỉnh, phương pháptuần tự và song song giải hệ phương trình đặt không chỉnh
• Chương 2 trình bày phương pháp song song giải hệ phương trình toán tửtuyến tính và một số ứng dụng Chương này tập trung trình bày ứng dụngcủa phương pháp chỉnh lặp song song trong việc giải hệ phương trình tuyếntính quá xác định và trong bài toán khôi phục ảnh Cuối Chương 2, chúngtôi giới thiệu một phương pháp song song toàn phần giải hệ phương trìnhđại số nhận được sau khi sai phân hóa bài toán biên-ban đầu cho một lớpphương trình đạo hàm riêng đại số
Trang 24• Chương 3 đề xuất phương pháp chỉnh lặp song song Gauss-Newton giải hệphương trình toán tử phi tuyến Tiếp theo, chúng tôi áp dụng phương phápnày để giải hệ phương trình phi tuyến dưới xác định và hệ phương trình phituyến thưa Với một số giả thiết thích hợp về điều kiện nguồn, chúng tôi đãđánh giá được tốc độ hội tụ của phương pháp.
Tương ứng với mỗi phương pháp và các ứng dụng, chúng tôi đã thực hiện thửnghiệm số trên máy tính song song Tất cả các kết quả tính toán đều được chạy
ở chế độ song song, trên bó máy tính IBM1350 với 8 node tính toán - 16 bộ xử
lý lõi kép tại Trung tâm Tính toán hiệu năng cao - ĐHKHTN - ĐHQG Hà Nội
Trang 25ii. Khái niệm về bài toán điều kiện xấu, bài toán đặt không chỉnh Những bàitoán dẫn đến việc giải hệ phương trình tuyến tính hoặc phi tuyến kích thướclớn và điều kiện xấu.
iii. Quy trình giải một bài toán kích thước lớn và điều kiện xấu trên bó máytính Một số phương pháp tuần tự và song song giải bài toán kích thước lớn,điều kiện xấu và bài toán đặt không chỉnh
Các khái niệm được trình bày dưới đây chủ yếu được tham khảo từ [1,2,4,13]
và các tài liệu tham chiếu trong đó
Tính toán song song là quá trình tính toán trong đó nhiều phép tính đượcthực hiện đồng thời Tính toán song song hoạt động dựa trên nguyên tắc phân rã
Trang 26bài toán lớn thành những bài toán nhỏ hơn độc lập, và giải chúng trên máy tínhsong song.
Cho P i và P j là hai đoạn của chương trình thể hiện thuật toán giải bài toán
i và j Với P i ta đặt I i là tất cả các biến đầu vào, O i là biến đầu ra, tương tự tacũng làm như vậy vớiP j Ta nói rằng,P i vàP j là độc lập theo Bernstein [21], nếuchúng thỏa mãn:
Khi đó, ta có thể hiểu bài toán i và j độc lập theo nghĩa như sau: Cho Pi và Pj
là hai đoạn của chương trình thể hiện thuật toán giải bài toán i và j Khi đó bàitoáni và j được gọi là độc lập nếu P i vàP j độc lập
Tính toán song song là một trong những lĩnh vực nghiên cứu của khoa họcmáy tính Mục đích của tính toán song song là giảm thời gian tính toán bằngcách sử dụng đồng thời nhiều bộ xử lý Xu hướng này xuất phát từ yêu cầu cần
có một lời giải nhanh cho bài toán có kích thước lớn trong các ứng dụng như dựbáo thời tiết, mô phỏng các hệ thống lớn, xử lí và truy xuất thông tin, xử lí ảnh,vv
Tính toán song song liên quan đến các yếu tố sau: kiến trúc máy tính songsong, thuật toán song song, ngôn ngữ lập trình song song và đánh giá hiệu năng
1.1.1 Kiến trúc máy tính song song
Máy tính song song là một tập các phần tử tính toán có khả năng truyềnthông và kết hợp với nhau để giải quyết các bài toán lớn trong khoảng thời gianchấp nhận được [13]
Mặc dù đều dựa trên nguyên lý phối hợp nhiều tài nguyên tính toán để giảiquyết bài toán, các máy tính song song có thể có nhiều kiến trúc khác nhau.Nguyên tắc phân loại kiến trúc máy tính song song theo Flynn dựa trên hai yếu
tố cơ bản là lệnh và dữ liệu: Đơn lệnh đơn dữ liệu (SISD - Single InstructionSingle Data), đơn lệnh đa dữ liệu (SIMD - Single Instruction Multiple Data), đalệnh đơn dữ liệu (MISD- Multiple Instruction Single Data) và đa lệnh đa dữ liệu(MIMD-Multiple Instruction Multiple Data) Trong các kiến trúc trên, kiến trúcSISD tương ứng với máy tính tuần tự Cho tới thời điểm này, kiến trúc MISDvẫn chưa có một phiên bản chính thức nào được xây dựng hay nghiên cứu pháttriển Các máy tính song song chủ yếu thuộc một trong hai kiến trúc SIMD hoặcMIMD
Trang 27• Kiến trúc SIMD: Các máy tính SIMD gồm nhiều bộ vi xử lý (các máy tínhhiện đại có hàng ngàn bộ vi xử lý) Tại một thời điểm, các bộ vi xử lý đềuhoạt động dựa trên cùng một nhịp đồng hồ và thực hiện cùng một phép toántác động trên các dữ liệu khác nhau.
Lớp kiến trúc SIMD gồm 2 loại chính: Máy tính với bộ xử lý mảng và máytính với bộ xử lý véctơ
Máy tính với bộ xử lý mảng
Cấu trúc của máy tính song song (SIMD) với bộ xử lý mảng bao gồmmột máy tính điều khiển đầu cuối và tập các bộ vi xử lý (có thể gồm hàngtrăm hoặc hàng ngàn bộ vi xử lý) được ghép lại thành mảng Mỗi bộ vi xử
lý trong mảng có bộ nhớ cục bộ riêng
Máy tính điều khiển đầu cuối gồm một bộ vi xử lý điều khiển, bộ nhớchương trình, vi xử lý truy nhập đầu cuối Tại mỗi thời điểm bộ vi xử lýđiều khiển có nhiệm vụ chuyển các câu lệnh chương trình được lưu trữ tại
bộ nhớ chương trình cho các vi xử lý trong mảng, vi xử lý truy nhập đầucuối điều khiển các truy nhập đầu-cuối, các kết nối giữa vi xử lý điều khiểnvới các đường dữ liệu Ngoài ra các lệnh không thể thực hiện bởi vi xử lýđiều khiển hay mảng các vi xử lý sẽ được chuyển cho vi xử lý điều khiểntruy nhập đầu cuối xử lý
Các bộ vi xử lý trong mảng có thể được ghép với nhau theo kiểu lưới 2chiều (2-D grid), nối vòng, nối chéo, lưới 3 chiều hoặc phức tạp hơn Cácmáy tính với bộ vi xử lý mảng thường được chế tạo và sử dụng cho các mụcđích đặc biệt, khi bài toán được song song hóa tối đa, không cần trao đổithông tin giữa các vi xử lý, thường phù hợp với các chương trình xử lý tínhiệu số, xử lý ảnh, mô phỏng Monte-Carlo
Một số máy song song có kiến trúc bộ vi xử lý mảng như: Kết nối máyCM-2, MasPar MP-1 và MP-2, ILLIAC IV
Trang 28Hình 1.1: Kiến trúc của máy tính với bộ xử lý mảng
Máy tính với bộ xử lý véctơ
Cấu trúc của máy tính song song véctơ bao gồm một bộ vi xử lý véctơhoạt động theo nguyên lý hình ống Mỗi câu lệnh thực hiện được chia thànhcác giai đoạn (nạp câu lệnh, giải mã, xác định toán hạng, vv ) và tại mỗithời điểm có thể có nhiều câu lệnh được thực hiện theo những giai đoạnkhác nhau Các giai đoạn khác nhau của mỗi câu lệnh có thể được thực hiệngối đầu nhau, đầu ra của giai đoạn này là đầu vào của giai đoạn tiếp theo.Một trong những đặc điểm của đa số máy tính véctơ với bộ vi xử lývéctơ (vector processing unit – VPU) là không có bộ nhớ cache Một thực
tế là dung lượng của bộ nhớ cache không đủ để nạp các dữ liệu kiểu véctơ,
do đó dẫn đến thường xuyên bị tràn bộ nhớ Đa số máy tính véctơ thế hệtrước cho phép các toán hạng và kết quả được đọc và ghi trực tiếp trên bộnhớ (CDC Cyber 205, ETA-10) Tuy nhiên, các máy tính véctơ hiện nayđều sử dụng thanh ghi véctơ (vector register)
Kiểu kiến trúc với bộ xử lý véctơ: IBM 9000, Cray X-MP, Cray Y-MP
và Fujitsu VP, NEC SX-2, Hitachi S820, ETA10
Hầu hết các máy tính hiện đại, đặc biệt là với máy xử lý đồ họa (GPUs)
sử dụng kiểu máy tính SIMD
• Kiến trúc MIMD:Các máy tính MIMD là một hệ thống đa bộ xử lý hoặc đamáy tính Mỗi bộ xử lý trong hệ thống này có một bộ điều khiển riêng và
Trang 29thực thi những chương trình của riêng chúng Tùy theo cách thức mà các bộ
xử lý truy cập vào bộ nhớ của nhau, máy tính MIMD được chia thành hailoại sau: Máy tính với bộ nhớ dùng chung (SM-MIMD) và máy tính với bộnhớ phân tán (DM-MIMD)
Máy tính với bộ nhớ dùng chung: Cấu trúc của máy tính với bộ nhớ dùngchung gồm một số vi xử lý hoặc bộ vi xử lý đa lõi (cores), bộ nhớ và mộtmạng liên kết giữa các vi xử lý với bộ nhớ Các vi xử lý trong kiến trúc nàycùng nhau chia sẻ một bộ nhớ chung
Một trong những khó khăn chính khi thiết kế máy tính có bộ nhớ dùngchung là giải quyết vấn đề kết nối giữa các vi xử lý và giữa các vi xử lývới bộ nhớ Băng thông tổng cộng truy cập đến bộ nhớ tăng tỷ lệ thuận với
số lượng vi xử lý Các vi xử lý được thiết kế tương tác trực tiếp với nhaunhờ cơ chế chuyển mạch tập trung: dùng cách chuyển mạch chéo (CrossbarSwitch), dùng mạng đa giai đoạn (Multi stage Network), sử dụng chungđường dẫn (Common Bus) Mỗi giải pháp đều có ưu điểm và nhược điểmriêng
Với các máy MIMD, có thể cùng một lúc nhiều tiến trình khác nhauđược thực hiện trên các vi xử lý Do đó, cần phải đồng bộ hóa các tiến trình.Các bộ vi xử lý đều có các thanh ghi riêng đóng vai trò truyền thông và traođổi trực tiếp với nhau thông qua các thanh ghi này Việc đồng bộ hóa cóthể thông qua vùng nhớ dùng chung, tuy rằng chậm hơn trao đổi trực tiếp.Việc truyền thông giữa các vi xử lý và trao đổi dữ liệu được thực hiện trêncác đường dẫn (bus) khác nhau nhằm đảm bảo tốc độ cho quá trình đồng
bộ hóa
Máy tính song song SM-MIMD có thể được chia thành 2 loại:
Máy tính song song với bộ nhớ chia sẻ truy cập ngang quyền UMA(Uniform Memory Acces): Đây là máy tính có nhiều bộ vi xử lý Các vi xử
lý truy cập vào vùng nhớ chung với thời gian như nhau nên các máy nàycũng thường được gọi là các máy đa xử lý đối xứng SMP (Symmetric MultiProcessor)
Trang 30do đó NUMA được phân loại thuộc kiến trúc SM-MIMD Các máy tínhsong song với kiến trúc NUMA được bán trên thị trường bao gồm BBNTC-2000, Cray 3TE, và SGI Origin 3000 Về mặt vật lý, các phần tử dữ liệunằm trong vùng nhớ của các nút tính toán khác nhau, do đó thời gian đểcác vi xử lý truy cập cùng một phần tử dữ liệu sẽ khác nhau phụ thuộc vàokhoảng cách của bộ xử lý.
Trang 31Hình 1.3: NUMA
Để tăng tốc độ truy cập bộ nhớ của các vi xử lý, các vi xử hiện đại ngàynay thường trang bị thêm một hệ thống bộ nhớ cache với dung lượng nhỏnhưng thời gian truy cập nhanh Tuy nhiên một yêu cầu quan trọng đó là giátrị của các biến nằm trong bộ nhớ cache của các vi xử lý phải đồng nhất vớinhau (Cache Coherent) Giải pháp đồng bộ cache được sử dụng phổ biến
là dùng giao thức snoopy bus, trong đó các bộ nhớ cache sẽ theo dõi việctruyền các biến giữa các vi xử lý và cập nhật giá trị, nếu trong cache chứabiến tương ứng hoặc sử dụng vùng nhớ để theo dõi và cập nhật các bản saocủa biến, gọi là directory memory
Một số máy song song với kiến trúc này bao gồm: Bull NovaScale, HPSuperdome và SGI Altix3000, các máy tính cá nhân gồm một bộ xử lý đalõi
Máy tính với bộ nhớ phân tán: Cấu trúc gồm một số nút tính toán và mộtmạng liên kết giữa các nút tính toán cũng như hỗ trợ quá trình truyền thônggiữa các nút tính toán Mỗi nút tính toán hoạt động độc lập bao gồm một số
bộ xử lý, mỗi bộ xử lý trong mỗi nút tính toán có bộ nhớ riêng không chia
sẻ với bất cứ bộ xử lý nào khác Kiến trúc này còn được gọi là hệ thống bộnhớ phân tán hay hệ thống đa máy tính
Dữ liệu chương trình thường được lưu trữ tại bộ nhớ cục bộ của một haymột số nút Do bộ nhớ cục bộ là bộ nhớ riêng của bộ xử lý cục bộ tươngứng nên khi một bộ xử lý nào đó yêu cầu truy cập vào dữ liệu trong bộ nhớcục bộ của bộ xử lý khác, thường đó là tác vụ mà lập trình viên cần phảixác định một cách rõ ràng và chính xác: Dữ liệu được truyền như thế nào
Trang 32và khi nào được truyền và ở vùng nhớ nào Việc đồng bộ hóa giữa các tác
vụ cũng là trách nhiệm của lập trình viên
Hình 1.4: Máy tính với bộ nhớ phân tán
Ưu điểm các máy tính DM-MIMD giải quyết được nhược điểm cố hữu
về băng thông khi truy cập bộ nhớ của các bộ vi xử lý Một trong nhữngvấn đề đáng quan tâm khi cải thiện hiệu năng của các kiến trúc chia sẻ bộnhớ là tốc độ của bộ nhớ Để đạt được tốc độ tính toán tương đương với cácmáy tính DM-MIMD, các vi xử lý trong các máy tính bộ nhớ chia sẻ phải
có tốc độ rất cao và do vậy, đòi hỏi tốc độ truy cập bộ nhớ cũng phải caotương ứng
Nhược điểm của các máy tính DM-MIMD so với các máy SM-MIMD
là tốc độ truyền thông giữa các bộ vi xử lý và trao đổi dữ liệu giữa các vi
xử lý rất chậm Với các bài toán cần nhiều thao tác truyền thống, hiệu năngthực sự của các máy DM-MIMD rất nhỏ so với hiệu năng cực đại
Tôpô kết nối giữa các vi xử lý và tốc độ đường truyền dữ liệu ảnhhưởng rất lớn đến hiệu năng hệ thống Giải pháp phổ biến nhất là khối đadiện (hypercube) Điểm nổi bật của cấu trúc khối đa diện với 2d nút là sốbước cực đại kết nối hai nút bất kỳ là d Do đó, độ phức tạp kết nối lưới sẽtăng lên theo hàm logarit của số nút Về lý thuyết, các tôpô khác như: cây,vòng, mạng 2-D, mạng 3-D đều có thể mô phỏng được với cấu trúc khối đadiện Tùy mục đích cụ thể sẽ chọn tôpô kết nối tối ưu Ví dụ, với bài toán
mô phỏng vật lý, thích hợp nhất là kiểu mạng 2-D hoặc mạng 3-D Trongcác máy tính có số bộ vi xử lý nhỏ (ít hơn 64), kiểu kết nối thích hợp nhất
là crossbars
Trang 33Ví dụ về các máy thuộc kiến trúc máy DM-MIMD: Meiko CS-2, nCUBE/2,iPSC/2, iPSC/860, CM-5.
Các bó máy tính, hệ thống tính toán lưới cũng đều dựa trên kiến trúcDM-MIMD Cụ thể như kiến trúc bó IBM 1600 của Trung tâm Tính toánHiệu năng Cao, Trường Đại học Khoa học Tự nhiên, Đại học Quốc gia Hànội:
– 5 nút tính toán pSeries 655, mỗi nút gồm 8 CPU Power 4+ 64 bit RISC1.7 GHz của IBM, cache 5.6MB ECC L2, 128MB ECC L3, băng thông:72.3 GBps, 32GB RAM, băng thông bộ nhớ 51.2 GBps, 6x36 GB HDD.Năng lực tính toán tổng cộng khoảng 240 GFlops (mở rộng tối đa 768GFlops/16 nút)
– 1 nút quản lý phần mềm CSM p630: Power4+ 64 bit 1.2 GHz, cache 1.5
MB ECC L2, 8MB ECC L3, băng thông: 12.8 GBps, 1GB RAM, băngthông: 6.4 GBps, 6x36 GB HDD, DVD ROM
– 1 nút điều khiển phần cứng HCM: Intel Xeon 3.06 GHz, 1GB RAM, 40
GB HDD, DVD RAM
– Các nút được kết nối với nhau thông qua HPS (High Performance Switch– Switch hiệu năng cao), băng thông 2GBps và GEthernet
– Hệ thống lưu trữ chung: IBM DS4400 và EXP700 kết nối với cụm IBM
1600 thông qua cáp quang với băng thông 2Gbps
– Các nút chạy HĐH AIX 5L phiên bản 5.2
Kiến trúc của bó IBM 1350 của Trung tâm TTHNC, Trường ĐHKHTN,ĐHQGHN:
– 8 nút tính toán, mỗi nút gồm 2 chip Intel Xeon Dual Core 3.2 GHz,2GB RAM, 1x36 GB HDD, DVD ROM Tổng năng lực tính toán của 8nút là khoảng 51.2 GFlops
– 2 nút phục vụ lưu trữ, mỗi nút gồm 2 chip Intel Xeon Dual Core 3.2GHz, 3 GB RAM, 4x72 GB HDD
– 1 nút đóng vai trò quản lý bao gồm chip Intel Xeon Dual Core 3.2, 3
GB RAM, 2x36 GB HDD
Trang 34– Năng lực lưu trữ: thiết bị lưu trữ dùng chung EXP400 với 10x73 GBHDD SCSI 320 MBps 15KRpm, dùng hệ thống chia sẻ file: GPFS choLinux v2.3.0.5.
– Các nút chạy hệ điều hành Redhat Enterprise Linux 3.0 và được kết nốivới nhau thông qua mạng GEthernet
(a) IBM Cluster 1350 (b) IBM Cluster 1600
Hình 1.5: Kiến trúc bó máy tính IBM1350 và IBM1600
1.1.2 Lập trình song song
Dựa trên các kiến trúc cơ bản của máy tính song song ta có các mô hìnhlập trình song song tương ứng
• Mô hình lập trình chia sẻ bộ nhớ dựa vào luồng
• Mô hình lập trình truyền thông báo
Lập trình với kiến trúc máy tính bộ nhớ chia sẻ
Với các hệ thống chia sẻ bộ nhớ mô hình lập trình để phát triển ứng dụngdựa trên luồng với hai thư viện chuẩn là POSIX, OpenMP Tuy nhiên thư việnPOSIX (Pthread) ít hộ trợ thực hiện các thao tác song song dữ liệu thường hay
Trang 35xảy ra trong các tính toán khoa học Vì vậy OpenMP là chuẩn thường được sửdụng hơn đối với các hệ thống chia sẻ bộ nhớ Quá trình song song hóa chươngtrình với OpenMP được thực hiện bằng cách chèn vào trong mã nguồn các địnhhướng biên dịch (directive hoặc pragmas) Các định hướng biên dịch được sửdụng để xác định các đoạn chương trình được thực hiện song song Số lượngcác luồng sử dụng được xác định thông qua các biến môi trường Do đó, khônggiống như Pthread, người lập trình không cần quản lý thời gian thực hiện của cácluồng Lập trình viên không cần quan tâm đến phân hoạch khối lượng tính toáncũng như ánh xạ các tác vụ cho các luồng Lập trình viên chỉ cần xác định địnhhướng biên dịch để thể hiện một vùng song song, ví dụ #pragma omp parallelđối với ngôn ngữ lập trình C/C++ và cặp !$omp parallel, !$omp end parallel đốivới ngôn ngữ lập trình Fortran Ngoài ra OpenMP trừu tượng cách thức phânchia khối lượng tính toán cho các tác vụ cũng như việc gán các tác vụ cho cácluồng tương ứng OpenMP cung cấp một số cấu trúc hỗ trợ cho quá trình đồng
bộ hóa ẩn mà lập trình viên chỉ cần xác định nơi đồng bộ hóa xảy ra
Lập trình với kiến trúc máy tính bộ nhớ phân tán
Với các hệ thống DM-MIMD, mô hình lập trình truyền thông điệp (MessagePassing) dựa trên tiến trình với hai thư viện tiêu biểu: PVM (Parallel VirtualMachine) và MPI (Message Passing Interface) thường được sử dụng để pháttriển các ứng dụng song song Mô hình lập trình truyền thông điệp còn đượcnghiên cứu áp dụng cho các hệ thống có bộ nhớ dùng chung (ví dụ như các hệthống Nec SX-6, Cray, SV1ex) Hiện nay, PVM đã không còn được tập trungphát triển Trong khi đó, MPI ngày càng nhận được sự chú ý của các nhà cungcấp với các phiên bản LAM/MPI, MPICH Trong tương lai không xa, phiên bảnthống nhất OpenMPI của cộng đồng mã nguồn mở (MPI Forum) được xem là
có nhiều triển vọng
Trong mô hình truyền thông điệp với thư viện MPI, các tiến trình được quản
lý tự động ẩn, chúng ta không cần tạo, lập lịch, hủy bỏ các tiến trình Thay chocác việc này chúng ta chỉ cần sử dụng câu lệnh mpirun với tham số là số tiếntrình chúng ta cần tạo và tùy chọn ánh xạ các tiến trình lên trên các bộ xử lý.Sau đó dựa trên các thông tin này, cơ sở hạ tầng thực thi (runtime infrastructure)
sẽ thực hiện việc quản lý các tiến trình
Phân hoạch khối lượng tính toán và ánh xạ thành các tác vụ phải được thựchiện bởi lập trình viên Lập trình viên phải quản lý các tác vụ được tính toánbởi mỗi tiến trình Ví dụ, với một mảng dữ liệu 2 chiều cho trước, chúng ta sử
Trang 36dụng chỉ số định danh của tiến trình để xác định vùng dữ liệu mà tiến trình này
sẽ thực hiện tính toán Việc trao đổi dữ liệu giữa các tiến trình thông qua cơchế truyền thông điệp trong đó dữ liệu được chia sẻ bằng cách mỗi tiến trìnhgửi thông điệp dữ liệu tới các tiến trình khác Có hai nhóm các thao tác truyềnthông điệp trong MPI đó là: truyền thông điểm tới điểm và truyền thông theonhóm Các thao tác truyền thông điểm tới điểm như MPI_Send/MPI_Recv thựchiện trên từng cặp tiến trình trong khi các thao tác truyền thông theo nhóm nhưMPI_Bcast thực hiện trên nhiều tiến trình hoặc MPI_Barrier được sử dụng đểđồng bộ các tiến trình, đảm bảo dữ liệu toàn cục không bị phân tán
1.1.3 Đánh giá hiệu quả của tính toán song song
Để đánh giá hiệu quả của tính toán song song, trong thực tế ta quan tâmđến một số thông số sau
Hệ số tăng tốc Sp: Ký hiệu T1 và T p lần lượt là thời gian thực hiện cùng mộtchương trình lần lượt trên một bộ xử lý và pbộ xử lý tương ứng Khi đó tốc độtăng tốc S p := T1/Tp (Đôi khi T1 được định nghĩa như thời gian tốt nhất để giảibài toán trên một bộ xử lý với các thuật toán khác nhau) Hệ số tăng tốc phảnánh với cùng một bài toán, thời gian xử lý bằng chế độ song song nhanh gấp baonhiêu lần thời gian xử lý bằng chế độ tuần tự
Hiệu năng tính toán song song Ep = Sp/p: Thông số này được đánh giá thông qua
độ đo trực tiếp và phản ánh hiệu suất sử dụng của mỗi bộ xử lý trong mô hìnhtính toán song song Trong trường hợp lý tưởngT p = T1/p Nhưng trong thực tếchúng ta không hy vọng đạt được tốc độ lý tưởng do vậyS p ≤ p
Ngoài cách đo theo thực tế, S p còn có thể được tính theo lý thuyết dựa trênquy tắc Amdahl như sau: Cho F s và F p tương ứng là tỷ lệ thời gian thực hiệnphần chương trình tuần tự và song song của một chương trình Ta cóF p + Fs= 1
và thời gian thực hiện chương trình song song Tp trên p bộ xử lý là tổng thờigian thực hiện tuần tựT1Fs và phần song songT1Fp/p
T p = T1(F s + F p /p).
Hệ số tăng tốc S p = 1/(F s + Fp/p) với ý nghĩa sự tăng tốc của một chương trình
đa xử lý trong tính toán song song phụ thuộc vào tỷ lệ phần được song song hóa
và được giới hạn bởi 1/(Fs)thời gian cần thiết để thực hiện phần tính toán tuần
tự của chương trình
Trang 37Trong trường hợp xét thêm thời gian truyền thông với giả thiết rằng tổng thờigian truyền thông của chương trình trên p bộ xử lý là T c cố định Khi đó thờigian thực hiện chương trình song songT p trên pbộ xử lý là:
Quy tắc Gustafson cũng có thể được dùng để tính S p, theo đó chương trìnhđược chạy trên pbộ xử lý thì hệ số tăng tốc S p = p − (p − 1)F s
Từ các thông sốSp vàEp ta nhận thấy hiệu suất của việc tính toán song song chỉcao khi tỷ lệ xử lý bài toán thành phần, tức là phần song song được, cao đáng kể
so với phần được xử lý tuần tự cũng như tổng thời gian truyền thông
toán đặt không chỉnh
1.2.1 Bài toán kích thước lớn
Nhiều bài toán của khoa học, công nghệ, kinh tế, sinh thái, vv đưa về hệphương trình vi phân thường, phương trình đạo hàm riêng và phương trình tíchphân Bằng phương pháp rời rạc hóa, trong đó tích phân được thay bởi các tổnghữu hạn nhờ công thức cầu phương, toán tử vi phân được thay bằng các toán tửsai phân, chúng ta quy bài toán giải phương trình trong không gian hàm về giải
hệ phương trình đại số tuyến tính hoặc phi tuyến Kích thước của các hệ phươngtrình này thường rất lớn do ta sử dụng các bước lưới nhỏ để tăng độ chính xáccủa các công thức cầu phương hoặc của các lược đồ sai phân Sau đây là một số
ví dụ cụ thể
Ví dụ 1.Bài toán khôi phục ảnh ba chiều [63]
Trang 38Ảnh ba chiều xuất hiện trong một số ứng dụng của khoa học và công nghệ,như sử dụng kính hiển vi tiêu cự chập (confocal microscopy), xử lý ảnh y-sinhhọc (biomedical imaging), vv Hiện tượng một ảnh bị mờ trong quá trình xử lýđược mô tả bởi phương trình tích chập:
hvà g bằng cách giải phương trình tích chập (1.1) là bài toán đặt không chỉnh,
vì nghiệm f nếu tồn tại cũng không phụ thuộc liên tục vào dữ liệu g
Giả sử các hàm f , g triệt tiêu ngoài hình hộp đơn vị Ω ⊂ R3 Sử dụng lướiđều với bước1/m để rời rạc hóa phương trình (1.1) ta thu được hệ phương trìnhsau:
Ax = b, A ∈ Rm3×m3, x , b ∈ Rm3, (1.2)
trong đó các véctơ x và b là rời rạc hóa của các hàm f và g tương ứng và chứacấp độ xám của các điểm ảnh được xếp theo thứ tự từ điển Ma trận Alà rời rạchóa của toán tử tích phân trong (1.1), xác định bởi hàm trải điểmhvà công thứccầu phương để tính gần đúng tích phân Ma trận A có nhiều giá trị kỳ dị gầnkhông với những thang bậc khác nhau, bởi vậy nó quá điều kiện xấu (severelyill-conditioned) và có thể suy biến Mặt khác trong thực tế, vế phảib chỉ đượccho với sai số, tức là thay vì chobta chỉ biết véctơ ˜b := b + d, trong đódlà véctơnhiễu với các thành phần chứa sai số đo đạc và sai số truyền ảnh
Hệ (1.2) thông thường là một hệ kích thước rất lớn Ví dụ với ảnh xám 3chiều cóm = 100, còn cấp độ xám của ảnh là một số nguyên nằm trong khoảng
trong đóK i (t, s) và f i (t) tương ứng là các nhân và hàm liên tục cho trước
Xét công thức cầu phương
Trang 39method) cho hệ (1.3) và sử dụng công thức cầu phương nói trên chúng ta nhậnđược hệN(M + 1)phương trình tuyến tính với M + 1ẩn.
M
∑
l=0
γ l Ki(tj,tl)xil = fij j = 0, 1, , M, i = 1, 2, , N, (1.4)
NếuM lớn thì hệ phương trình (1.4) thu được có kích thước lớn và quá xác định
Ví dụ 3. Bài toán biên cho phương trình vi phân thường và phương trình đạohàm riêng
Để đơn giản chúng ta xét bài toán biên hai điểm cho phương trình vi phânthường
Ví dụ 4.Mô hình thương mại quốc tế [57]
Giả sử có mnướcC i , i = 1, , mbuôn bán với nhau Mỗi nướcC i sản xuất
ni mặt hàng quốc nội trong nhóm hàng Gi chỉ để tiêu thụ trong nước Ngoài ra
cón0 mặt hàng quốc tế trong nhóm hàngG0được các nước cùng sản xuất và tiêuthụ Gọi n = ∑mi=0ni là số hàng hóa tiêu thụ trên thị trường nội địa và quốc tế.Mỗi nước đều có nhu cầu sản xuất và tiêu thụ cho các mặt hàng quốc nội, quốc
tế của mình Nhu cầu của thị trường đối với các mặt hàng quốc nội trong nhóm
G i bằng tổng các nhu cầu trong mỗi nướcC i , còn nhu cầu đối với hàng quốc tếthì bằng tổng các yêu cầu của các nước Gọix ∈ R n
+ \{0}là véctơ giá của các mặt
Trang 40hàng Khi đó ta sẽ biểu diễn véctơ giáx = (x0, x1, , xm),vớixi∈ Rni
+ là các véctơgiá của các mặt hàng trong nhómG i
ĐặtF : Rn+ \{0} → R nlà toàn thể lượng cầu vượt cung, thìF(.) = (F0(.), , F m (.))
còn F i (x) = Fi(x0, xi), i = 1, , m là toàn thể lượng cầu vượt cung của nước C i
đối với véctơ giá x Lưu ý rằng F0(x) = F0(x0, , xm) vì nhóm hàng quốc tế G0
bao gồm tất cả hàng quốc tế của các nước
Bài toán cân bằng là tìm véctơ giá x∗= (x∗0, , x∗m) ∈ Rn để thị trường sạch,nghĩa làF(x∗) = 0.
Như vậy ta thu được hệ phương trình phi tuyến kích thước lớn
1.2.2 Bài toán đặt không chỉnh và bài toán điều kiện xấu
Từ giữa thế kỷ 20 đến nay, các thuật ngữ "bài toán đặt không chỉnh" và
"bài toán điều kiện xấu" đã trở nên quen thuộc và được thường xuyên nhắc đếntrong nhiều lĩnh vực của khoa học, công nghệ và kinh tế Nhiều bài toán khôngchỉnh có nguồn gốc vật lý (cơ học lượng tử, âm học, vật lý thiên văn, điện độnghọc, vv ), địa vật lý (thăm dò địa chấn, thăm dò trọng lực, dò siêu âm, vv ) yhọc (chụp quang phổ, chụp cắt lớp máy tính, vv ), sinh thái học (quản lý chấtlượng không khí và nước, giám sát không gian, vv ), kinh tế (toán tài chính,điều khiển tối ưu, vv ), vv đã được tập trung nghiên cứu Ngay trong toánhọc, một số vấn đề của đại số tính toán, phương trình vi phân thường, phươngtrình đạo hàm riêng, phương trình tích phân, giải tích hàm, vv cũng dẫn đếnnhững bài toán đặt không chỉnh Đặc điểm của những bài toán này là lời giải cóthể không tồn tại hoặc không duy nhất, hoặc lời giải không phụ thuộc liên tụcvào dữ liệu của bài toán Những bài toán đặt không chỉnh như vậy rất khó giảitrong thực tế vì những sai số nhỏ của dữ liệu và sai số trong quá trình tính toántrên máy tính (sai số làm tròn, sai số tính toán với dấu phẩy động, vv ) dẫn đếnnhững sai số lớn của nghiệm gần đúng, khiến nó khác xa nghiệm đúng
Xét phương trình toán tử