Kiến trúc bó máy tính IBM1350 và IBM1600

Một phần của tài liệu Giải hệ phương trình kích thước lớn và điều kiện xấu trên bó máy tính (Trang 34 - 62)

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ình lậ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ụng dựa trên luồng với hai thư viện chuẩn là POSIX, OpenMP. Tuy nhiên thư viện POSIX (Pthread) ít hộ trợ thực hiện các thao tác song song dữ liệu thường hay

xả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ương trình với OpenMP được thực hiện bằng cách chèn vào trong mã nguồn các định hướ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ượng các luồng sử dụng được xác định thông qua các biến môi trường. Do đó, không giố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ác luồ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án cũ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 định hướ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 đối với ngôn ngữ lập trình Fortran. Ngoài ra OpenMP trừu tượng cách thức phân chia 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ác luồ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 (Message Passing) dựa trên tiến trình với hai thư viện tiêu biểu: PVM (Parallel Virtual 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 được nghiê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 trung phát triển. Trong khi đó, MPI ngày càng nhận được sự chú ý của các nhà cung cấp với các phiên bản LAM/MPI, MPICH. Trong tương lai không xa, phiên bản thố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 cho cá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ến trì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ực hiệ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án bở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ử

dụ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ình gử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ền thông điệp trong MPI đó là: truyền thông điểm tới điểm và truyền thông theo nhóm. Các thao tác truyền thông điểm tới điểm như MPI_Send/MPI_Recv thực hiệ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à Tp lần lượt là thời gian thực hiện cùng một chươ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 Sp :=T1/Tp (Đôi khi T1 được định nghĩa như thời gian tốt nhất để giải bà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 bao nhiêu lần thời gian xử lý bằng chế độ tuần tự.

Hiệu năng tính toán song songEp=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ình tính toán song song. Trong trường hợp lý tưởngTp =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ậySp≤ p.

Ngoài cách đo theo thực tế, Sp còn có thể được tính theo lý thuyết dựa trên quy tắc Amdahl như sau: Cho Fs và Fp tương ứng là tỷ lệ thời gian thực hiện phần chương trình tuần tự và song song của một chương trình. Ta cóFp+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ời gian thực hiện tuần tựT1Fs và phần song songT1Fp/p

Tp=T1(Fs+Fp/p).

Hệ số tăng tốc Sp=1/(Fs+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.

Trong 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ời gian truyền thông của chương trình trên p bộ xử lý là Tc cố định. Khi đó thời gian thực hiện chương trình song songTp trên pbộ xử lý là:

Tp =T1(Fs+Fp/p) +Tc.

Chúng ta giả thiết rằng chương trình được song song hoàn toàn với nghĩa Fp=1. Ta nhận được

Sp= T1

T1/p+Tc

.

Để Sp gần đạt tới p chúng ta có TcT1/phay pT1/Tc. Điều này có nghĩa số lượng bộ xử lý được sử dụng không nên vượt quá tỷ số giữa thời gian thực hiện tuần tự với tổng thời gian truyền thông.

Quy tắc Gustafson cũng có thể được dùng để tính Sp, theo đó chương trình được chạy trên pbộ xử lý thì hệ số tăng tốc Sp =p−(p−1)Fs.

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.

1.2 Bài toán kích thước lớn, điều kiện xấu và bàitoán đặt không chỉnh 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ích phâ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ổng hữ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ương trì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ác củ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ể.

Ả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-sinh họ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:

Z

R3

h(ξ−ξ0,η−η0,γ−γ0)f(ξ0,η0,γ0)dξ0dη0dγ0=g(ξ,η,γ), (1.1) trong đó f biểu diễn ảnh rõ, còn gbiểu diễn ảnh bị làm mờ. Nhân hlà một hàm trơn, được gọi là hàm trải điểm (point-spread funtion). Bài toán tìm hàm f biết 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ình sau:

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ứa cấ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ạc hó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ức cầu phương để tính gần đúng tích phân. Ma trận A có nhiều giá trị kỳ dị gần không với những thang bậc khác nhau, bởi vậy nó quá điều kiện xấu (severely ill-conditioned) và có thể suy biến. Mặt khác trong thực tế, vế phảib chỉ được cho 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 3 chiều cóm=100, còn cấp độ xám của ảnh là một số nguyên nằm trong khoảng

[0,255] thì ma trận của hệ (1.2) đã có kích thước106×106.

Ví dụ 2.Giải gần đúng hệ phương trình tích phân bằng phương pháp trùng khớp. Xét hệ phương trình tích phân loại 1

b

Z

a

Ki(t,s)x(s)ds= fi(t) i=1,2, . . . ,N, (1.3) trong đóKi(t,s)và fi(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

b R a h(t)dt= M ∑ l=0 γlh(tl) +r,trong đóa≤t0<t1< . . . < tM ≤blà các điểm lưới,γ0, . . . ,γM là các trọng số và rlà sai số của công thức cầu phương. Đặtxil:=xi(tl), fij:= fi(tj),áp dụng phương pháp trùng khớp (collocation

method) 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

γlKi(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 đạo hà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ân thường

f(t,x,x0,x00) =0, t0<t <T, g(x(t0),x0(t0)) =0, h(x(T),x0(T)) =0. Thay đạo hàm cấp 1 và cấp 2 bằng các tỷ sai phân tương ứng, ta đưa bài toán biên hai điểm trên về hệ 3 đường chéo các phương trình phi tuyến có dạng

               F1(x1,x2) =y1, Fi(xi−1,xi,xi+1) =yi, i=2, . . . ,N−1 FN(xN−1,xN) =yN. (1.5) Hệ (1.5) là thưa và kích thước lớn.

Tương tự như vậy, việc giải bài toán biên hai điểm bằng phương pháp bắn bội (multiple shooting method) dẫn đến hệ phương trình phi tuyến kích thước lớn. Vấn đề này sẽ được trình bày kĩ hơn khi đề cập đến bài toán điều kiện xấu. Trong mục 2.4 chúng ta sẽ đưa bài toán biên cho phương trình đạo hàm riêng- đại số tuyến tính về hai hệ phương trình kích thước lớn.

Ví dụ 4.Mô hình thương mại quốc tế [57]

Giả sử có mnướcCi, i=1, . . . ,mbuôn bán với nhau. Mỗi nướcCi 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êu thụ. 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 Gi bằng tổng các nhu cầu trong mỗi nướcCi, 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∈Rn\{0}là véctơ giá của các mặt

hà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ómGi.

ĐặtF:Rn+\{0} →Rnlà toàn thể lượng cầu vượt cung, thìF(.) = (F0(.), . . . ,Fm(.))

còn Fi(x) =Fi(x0,xi), i=1, . . . ,m là toàn thể lượng cầu vượt cung của nước Ci

đố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        F0(x0, . . . ,xm) =0, Fi(x0,xi) =0, i=1, . . . ,m. (1.6)

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 đến trong nhiều lĩnh vực của khoa học, công nghệ và kinh tế. Nhiều bài toán không chỉ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 động học, vv...), địa vật lý (thăm dò địa chấn, thăm dò trọng lực, dò siêu âm, vv..) y họ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ất lượ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án học, một số vấn đề của đại số tính toán, phương trình vi phân thường, phương trì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 đến nhữ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ục và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ải trong thực tế vì những sai số nhỏ của dữ liệu và sai số trong quá trình tính toán trê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 đến nhữ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ử

trong đó F là ánh xạ từ không gian metric (X,d) vào không gian metric (Y,ρ), còny∈Y là dữ liệu đã cho.

Bài toán (1.7) được gọi là đặt chỉnh theo nghĩa J. Hadamard [90], nếu nó giải được duy nhất với mọi vế phảiyvà nghiệm phụ thuộc liên tục vàoy.

Bài toán (1.7) gọi là đặt không chỉnh, nếu nó không phải là bài toán đặt chỉnh, tức là nó có thể vô nghiệm hoặc vô định và nghiệm có thể không phụ thuộc liên tục vào dữ liệu y. Để 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ụng quá 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ông chỉnh bằng một họ bài toán đặt chỉnh phụ thuộc vào tham số, sao cho nghiệm củ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.

Một số kết quả về phương pháp hiệu chỉnh bài toán đặt không chỉnh sẽ được trình bày ở mục 1.2.3.

Xét hệ phương trình tuyến tính

Ax=y, (1.8)

trong đó A là ma trận cấp m×n, x và y là các véctơ n và m chiều tương ứng. Giả sử hạng của ma trận A, rankA = min(m,n). Nếu m<n phương trình (1.8) có vô số nghiệm còn nếu m>n phương trình này có thể vô nghiệm. Khi m=n phương trình (1.8) giải được với mọi vế phải nếu detA6=0. Trong trường hợp này tồn tại toán tử (ma trận) ngược A−1 và nó bị chặn do không gian đang xét

Một phần của tài liệu Giải hệ phương trình kích thước lớn và điều kiện xấu trên bó máy tính (Trang 34 - 62)