1. Trang chủ
  2. » Công Nghệ Thông Tin

Nâng cao tốc độ sắp xếp dữ liệu với thuật toán PSRS trên hệ thống xử lý song song

6 8 0

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

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 6
Dung lượng 655,53 KB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

Nhu cầu khai thác, tìm kiếm thông tin của con người ngày càng cao thì việc nâng cao tốc độ sắp xếp dữ liệu, phục vụ cho quá trình tìm kiếm thông tin lại càng trở nên quan trọng hơn bao giờ hết. Có rất nhiều thuật toán có thể giải quyết bài toán nâng cao tốc độ sắp xếp dữ liệu, bài báo này tập trung nghiên cứu và ứng dụng lập trình song song cài đặt thuật toán PSRS (Parallel Sorting by Regular Sampling- Sắp xếp song song dựa trên mẫu chuẩn). Tác giả sử dụng hệ thống IBM Linux Cluster 2350 để mô phỏng, thuật toán PSRS đã cho kết quả tốc độ sắp xếp dữ liệu tốt hơn khi chạy trên hệ thống xử lý tuần tự.

Trang 1

TẠP CHÍ KHOA HỌC

QUẢN LÝ VÀ CÔNG NGHỆ

NÂNG CAO TỐC ĐỘ SẮP XẾP DỮ LIỆU VỚI THUẬT TOÁN PSRS

TRÊN HỆ THỐNG XỬ LÝ SONG SONG

ThS Bùi Thanh Tuyền

Giảng viên Khoa Cảnh sát phòng, chống tội phạm sử dụng công nghệ cao

Học viện Cảnh sát nhân dân

Ngày tòa soạn nhận được bài báo: 06/03/2020

Ngày phản biện đánh giá:16/03/2020 Ngày bài báo được duyệt: 26/03/2020

Tóm tắt: Nhu cầu khai thác, tìm kiếm thông tin của con người ngày càng cao thì việc nâng cao tốc độ sắp xếp dữ liệu, phục vụ cho quá trình tìm kiếm thông tin lại càng trở nên quan trọng hơn bao giờ hết Có rất nhiều thuật toán có thể giải quyết bài toán nâng cao tốc độ sắp xếp dữ liệu, bài báo này tập trung nghiên cứu và ứng dụng lập trình song song cài đặt thuật toán PSRS (Parallel Sorting by Regular Sampling- Sắp xếp song song dựa trên mẫu chuẩn) Tác giả sử dụng hệ thống IBM Linux Cluster 2350 để mô phỏng, thuật toán PSRS đã cho kết quả tốc độ sắp xếp dữ liệu tốt hơn khi chạy trên hệ thống xử

lý tuần tự.

Từ Khóa: PSRS, Xử lý song song, Sắp xếp dữ liệu lớn…

1 Giới thiệu thuật toán sắp xếp song

song dựa trên các mẫu chuẩn PSRS

So với các thuật toán sắp xếp thông

thường, PSRS là một thuật toán sắp xếp song

song với nhiều ưu điểm Nó giữ nguyên được

kích thước của mảng, giữ được sự cân bằng

tải trong các tác vụ, tránh được việc truyền

thông lặp lại các khóa.

PSRS là sự kết hợp của một thuật toán

sắp xếp tuần tự, một quá trình trao đổi dữ liệu

và một bước trộn song song Mặc dù bất kỳ

một thuật toán sắp xếp và trộn tuần tự nào

đều có thể sử dụng được, nhưng PSRS sử

dụng thuật toán sắp xếp Quicksort và liên

tiếp 2 cách trộn Thuật toán này phù hợp với

hầu hết các mô hình song song hiện tại đang được sử dụng với số bộ xử lí là tùy ý Tác giả

sẽ mô tả, tính toán độ phức tạp, mô phỏng về giải thuật PSRS tại các phần tiếp theo.[2]

2 Giải thuật PSRS

Thuật toán PSRS bao gồm có 6 pha phân biệt PSRS sử dụng mô hình truyền thông điệp để gửi, nhận, truyền thông, phân chia và tập hợp các dữ liệu Trên hệ thống sử dụng

p bộ xử lí và sắp xếp mảng có kích cỡ n, khi

đó, thuật toán trải qua 6 bước thực hiện như sau [2]:

Bước 1 Khởi tạo ban đầu

Với p bộ xử lí, lựa chọn một bộ xử lí làm

Trang 2

4 TẠP CHÍ KHOA HỌC

QUẢN LÝ VÀ CÔNG NGHỆ

gốc (bộ xử lí 0), khởi tạo bộ dữ liệu với kích

cỡ n.

Bước 2 Phân chia dữ liệu, sắp xếp cục

bộ và lựa chọn các mẫu chuẩn.

Phân chia dữ liệu ban đầu cho p bộ xử lí

Mỗi bộ xử lí sẽ sắp xếp cục bộ tập dữ liệu với kích thước

bộ xử lí là tùy ý Tác giả sẽ mô tả, tính toán độ phức tạp, mô phỏng về giải

thuật PSRS tại các phần tiếp theo.[2]

2 Giải thuật PSRS

Thuật toán PSRS bao gồm có 6 pha phân biệt PSRS sử dụng mô hình truyền thông điệp để gửi, nhận, truyền thông, phân chia và tập hợp các dữ liệu Trên hệ thống sử dụng 𝑝𝑝 bộ xử lí

và sắp xếp mảng có kích cỡ 𝑛𝑛, khi đó, thuật toán trải qua 6 bước thực hiện

như sau [2]:

Bước 1 Khởi tạo ban đầu

Với 𝑝𝑝 bộ xử lí, lựa chọn một bộ

xử lí làm gốc (bộ xử lí 0), khởi tạo bộ

dữ liệu với kích cỡ 𝑛𝑛

Bước 2 Phân chia dữ liệu, sắp xếp cục bộ và lựa chọn các mẫu chuẩn

Phân chia dữ liệu ban đầu cho 𝑝𝑝

bộ xử lí Mỗi bộ xử lí sẽ sắp xếp cục

bộ tập dữ liệu với kích thước 𝑛𝑛

𝑝𝑝 bằng cách sử dụng thuật toán QuickSort

tuần tự Sau đó, mỗi bộ xử lí sẽ lựa chọn ra 𝑝𝑝 phần tử từ tập dữ liệu của mình để làm mẫu Các mẫu được lựa

chọn có khoảng cách đều nhau Cụ thể, các phẩn tử ở vị trí 1, 𝑤𝑤 + 1, 2𝑤𝑤 +

1, , (𝑝𝑝 − 1)𝑤𝑤 + 1 với 𝑤𝑤 = [𝑝𝑝𝑛𝑛2] được chọn để làm mẫu

Bước 3 Tập hợp và trộn các mẫu, lựa chọn phần tử chốt

Bộ xử lí gốc sẽ tập hợp tất cả các phần tử đã được chọn ra làm mẫu ở

𝑝𝑝 bộ xử lí Điều quan trọng cần để ý đó

là mỗi tập hợp các phần tử mẫu tại mỗi

bộ xử lí đã được sắp xếp Có 𝑝𝑝 tập hợp được sắp xếp và sử dụng thuật toán trộn để trộn chúng lại với nhau Từ 𝑝𝑝2

phần tử đã sắp xếp này, lựa chọn ra

𝑝𝑝 − 1 giá trị để làm phần tử chốt bằng cách lấy ra các phần tử có chỉ số 𝑝𝑝 +

𝑓𝑓, 2𝑝𝑝 + 𝑓𝑓, … , (𝑝𝑝 − 1)𝑝𝑝 + 𝑓𝑓 với 𝑓𝑓 =

⌊𝑝𝑝2⌋ Tiếp theo, bộ xử lí gốc sẽ truyền thông các phần tử chốt này đến 𝑝𝑝 − 1

bộ xử lí còn lại

Bước 4 Phân chia dữ liệu cục bộ tại các

bộ xử lí dựa trên các phần tử chốt

Mỗi bộ xử lí sẽ phân chia dữ liệu cục bộ đã được sắp xếp của nó ra

bằng cách sử dụng thuật toán QuickSort tuần tự Sau đó, mỗi bộ xử lí sẽ lựa

chọn ra p phần tử từ tập dữ liệu của mình để

làm mẫu Các mẫu được lựa chọn có khoảng cách đều nhau Cụ thể, các phẩn tử ở vị trí 1,w+1,2w+1, ,(p-1)w+1 với w=

bộ xử lí là tùy ý Tác giả sẽ mô tả, tính

toán độ phức tạp, mô phỏng về giải

thuật PSRS tại các phần tiếp theo.[2]

2 Giải thuật PSRS

Thuật toán PSRS bao gồm có 6

pha phân biệt PSRS sử dụng mô hình

truyền thông điệp để gửi, nhận, truyền

thông, phân chia và tập hợp các dữ

liệu Trên hệ thống sử dụng 𝑝𝑝 bộ xử lí

và sắp xếp mảng có kích cỡ 𝑛𝑛, khi đó,

thuật toán trải qua 6 bước thực hiện

như sau [2]:

Bước 1 Khởi tạo ban đầu

Với 𝑝𝑝 bộ xử lí, lựa chọn một bộ

xử lí làm gốc (bộ xử lí 0), khởi tạo bộ

dữ liệu với kích cỡ 𝑛𝑛

Bước 2 Phân chia dữ liệu, sắp xếp

cục bộ và lựa chọn các mẫu chuẩn

Phân chia dữ liệu ban đầu cho 𝑝𝑝

bộ xử lí Mỗi bộ xử lí sẽ sắp xếp cục

bộ tập dữ liệu với kích thước 𝑛𝑛𝑝𝑝 bằng

cách sử dụng thuật toán QuickSort

tuần tự Sau đó, mỗi bộ xử lí sẽ lựa

chọn ra 𝑝𝑝 phần tử từ tập dữ liệu của

mình để làm mẫu Các mẫu được lựa

chọn có khoảng cách đều nhau Cụ thể, các phẩn tử ở vị trí 1, 𝑤𝑤 + 1, 2𝑤𝑤 +

1, , (𝑝𝑝 − 1)𝑤𝑤 + 1 với 𝑤𝑤 = [𝑝𝑝𝑛𝑛2] được chọn để làm mẫu

Bước 3 Tập hợp và trộn các mẫu, lựa chọn phần tử chốt

Bộ xử lí gốc sẽ tập hợp tất cả các phần tử đã được chọn ra làm mẫu ở

𝑝𝑝 bộ xử lí Điều quan trọng cần để ý đó

là mỗi tập hợp các phần tử mẫu tại mỗi

bộ xử lí đã được sắp xếp Có 𝑝𝑝 tập hợp được sắp xếp và sử dụng thuật toán trộn để trộn chúng lại với nhau Từ 𝑝𝑝2

phần tử đã sắp xếp này, lựa chọn ra

𝑝𝑝 − 1 giá trị để làm phần tử chốt bằng cách lấy ra các phần tử có chỉ số 𝑝𝑝 +

𝑓𝑓, 2𝑝𝑝 + 𝑓𝑓, … , (𝑝𝑝 − 1)𝑝𝑝 + 𝑓𝑓 với 𝑓𝑓 =

⌊𝑝𝑝2⌋ Tiếp theo, bộ xử lí gốc sẽ truyền thông các phần tử chốt này đến 𝑝𝑝 − 1

bộ xử lí còn lại

Bước 4 Phân chia dữ liệu cục bộ tại các

bộ xử lí dựa trên các phần tử chốt

Mỗi bộ xử lí sẽ phân chia dữ liệu cục bộ đã được sắp xếp của nó ra

được chọn để làm mẫu.

Bước 3 Tập hợp và trộn các mẫu, lựa chọn phần tử chốt.

Bộ xử lí gốc sẽ tập hợp tất cả các phần tử

đã được chọn ra làm mẫu ở p bộ xử lí Điều

quan trọng cần để ý đó là mỗi tập hợp các phần tử mẫu tại mỗi bộ xử lí đã được sắp xếp

Có p tập hợp được sắp xếp và sử dụng thuật toán trộn để trộn chúng lại với nhau Từ p2

phần tử đã sắp xếp này, lựa chọn ra p-1 giá

trị để làm phần tử chốt bằng cách lấy ra các

phần tử có chỉ số p+f,2p+f,…,(p-1)p+f với f=

bộ xử lí là tùy ý Tác giả sẽ mô tả, tính

toán độ phức tạp, mô phỏng về giải

thuật PSRS tại các phần tiếp theo.[2]

2 Giải thuật PSRS

Thuật toán PSRS bao gồm có 6

pha phân biệt PSRS sử dụng mô hình

truyền thông điệp để gửi, nhận, truyền

thông, phân chia và tập hợp các dữ

liệu Trên hệ thống sử dụng 𝑝𝑝 bộ xử lí

và sắp xếp mảng có kích cỡ 𝑛𝑛, khi đó,

thuật toán trải qua 6 bước thực hiện

như sau [2]:

Bước 1 Khởi tạo ban đầu

Với 𝑝𝑝 bộ xử lí, lựa chọn một bộ

xử lí làm gốc (bộ xử lí 0), khởi tạo bộ

dữ liệu với kích cỡ 𝑛𝑛

Bước 2 Phân chia dữ liệu, sắp xếp

cục bộ và lựa chọn các mẫu chuẩn

Phân chia dữ liệu ban đầu cho 𝑝𝑝

bộ xử lí Mỗi bộ xử lí sẽ sắp xếp cục

bộ tập dữ liệu với kích thước 𝑛𝑛

𝑝𝑝 bằng cách sử dụng thuật toán QuickSort

tuần tự Sau đó, mỗi bộ xử lí sẽ lựa

chọn ra 𝑝𝑝 phần tử từ tập dữ liệu của

mình để làm mẫu Các mẫu được lựa

chọn có khoảng cách đều nhau Cụ thể, các phẩn tử ở vị trí 1, 𝑤𝑤 + 1, 2𝑤𝑤 +

1, , (𝑝𝑝 − 1)𝑤𝑤 + 1 với 𝑤𝑤 = [𝑝𝑝𝑛𝑛2] được chọn để làm mẫu

Bước 3 Tập hợp và trộn các mẫu, lựa chọn phần tử chốt

Bộ xử lí gốc sẽ tập hợp tất cả các phần tử đã được chọn ra làm mẫu ở

𝑝𝑝 bộ xử lí Điều quan trọng cần để ý đó

là mỗi tập hợp các phần tử mẫu tại mỗi

bộ xử lí đã được sắp xếp Có 𝑝𝑝 tập hợp được sắp xếp và sử dụng thuật toán trộn để trộn chúng lại với nhau Từ 𝑝𝑝2

phần tử đã sắp xếp này, lựa chọn ra

𝑝𝑝 − 1 giá trị để làm phần tử chốt bằng cách lấy ra các phần tử có chỉ số 𝑝𝑝 +

𝑓𝑓, 2𝑝𝑝 + 𝑓𝑓, … , (𝑝𝑝 − 1)𝑝𝑝 + 𝑓𝑓 với 𝑓𝑓 =

⌊𝑝𝑝2⌋ Tiếp theo, bộ xử lí gốc sẽ truyền thông các phần tử chốt này đến 𝑝𝑝 − 1

bộ xử lí còn lại

Bước 4 Phân chia dữ liệu cục bộ tại các

bộ xử lí dựa trên các phần tử chốt

Mỗi bộ xử lí sẽ phân chia dữ liệu cục bộ đã được sắp xếp của nó ra

Tiếp theo, bộ xử lí gốc sẽ truyền thông

các phần tử chốt này đến p-1 bộ xử lí còn lại.

Bước 4 Phân chia dữ liệu cục bộ tại các bộ xử lí dựa trên các phần tử chốt.

Mỗi bộ xử lí sẽ phân chia dữ liệu cục bộ

đã được sắp xếp của nó ra thành p phân lớp

dựa vào p-1 phần tử chốt đã chọn.

Bước 5 Tập hợp và trộn các phân lớp tại các bộ xử lí.

Bộ xử lí thứ i sẽ tập hợp dữ liệu trong phân

lớp thứ i(1≤i≤p) từ các bộ xử lí khác Mỗi phân

lớp này sẽ được sắp xếp và trộn lại với nhau.

Bước 6 Tập hợp dữ liệu cuối cùng

Bộ xử lí gốc sẽ tập hợp tất cả dữ liệu và lắp ráp các danh sách được sắp xếp trên mỗi

bộ xử lí thành danh sách được sắp xếp gồm n phần tử ban đầu Thuật toán kết thúc.

3 Tính toán độ phức tạp thuật toán PSRS

Độ phức tạp của giải thuật được xem xét dưới ba yếu tố: Độ phức tạp về thời gian, độ phức tạp về không gian sử dụng, độ độ phức tạp khi truyền thông phần tử Trong đó, độ phức tạp về không gian sử dụng là tổng số lượng không gian yêu cầu chuyển qua tất các các bộ xử lí để hoàn thành việc tính toán Thời gian truyền thông là thời gian yêu cầu cho các

bộ xử lí để di chuyển tất cả các thông điệp trong quá trình tính toán.[1]

thành 𝑝𝑝 phân lớp dựa vào 𝑝𝑝 − 1 phần

tử chốt đã chọn

Bước 5 Tập hợp và trộn các phân lớp tại các bộ xử lí

Bộ xử lí thứ 𝑖𝑖 sẽ tập hợp dữ liệu trong phân lớp thứ 𝑖𝑖(1 ≤ 𝑖𝑖 ≤ 𝑝𝑝) từ các

bộ xử lí khác Mỗi phân lớp này sẽ được sắp xếp và trộn lại với nhau

Bước 6 Tập hợp dữ liệu cuối cùng

Bộ xử lí gốc sẽ tập hợp tất cả dữ liệu và lắp ráp các danh sách được sắp xếp trên mỗi bộ xử lí thành danh sách được sắp xếp gồm n phần tử ban đầu

Thuật toán kết thúc

3 Tính toán độ phức tạp thuật toán PSRS

Độ phức tạp của giải thuật được xem xét dưới ba yếu tố: Độ phức tạp

về thời gian, độ phức tạp về không gian sử dụng, độ độ phức tạp khi truyền thông phần tử Trong đó, độ phức tạp về không gian sử dụng là tổng số lượng không gian yêu cầu chuyển qua tất các các bộ xử lí để hoàn

thành việc tính toán Thời gian truyền thông là thời gian yêu cầu cho các bộ

xử lí để di chuyển tất cả các thông điệp trong quá trình tính toán.[1]

3.1 Độ phức tạp về thời gian

Trong pha thứ 2 của giải thuật, mỗi bộ xử lí thực hiện sắp xếp dữ liệu

Trang 3

TẠP CHÍ KHOA HỌC

QUẢN LÝ VÀ CÔNG NGHỆ

3.1 Độ phức tạp về thời gian

Trong pha thứ 2 của giải thuật, mỗi bộ xử

lí thực hiện sắp xếp dữ liệu bằng QuickSort

Kích thước của dữ liệu trên mỗi bộ xử lí là

bằng QuickSort Kích thước của dữ liệu trên mỗi bộ xử lí là 𝑛𝑛𝑝𝑝 và sau đó chọn ra 𝑝𝑝 phần tử làm mẫu Do đó thời gian yêu cầu tính toán trong pha này là:

𝑂𝑂 (𝑛𝑛𝑝𝑝 log𝑛𝑛𝑝𝑝 + 𝑝𝑝) Trong pha thứ 3, bộ xử lí gốc trộn 𝑝𝑝 danh sách đã được sắp xếp với kích cỡ là 𝑝𝑝 thành một danh sách được sắp xếp với kích cỡ là 𝑝𝑝2, và sau đó chọn ra 𝑝𝑝 − 1 phần tử làm chốt Sử dụng thuật toán trộn, quá trình xử lí trộn này thực hiện hết 𝑂𝑂(𝑝𝑝2log 𝑝𝑝)

Tổng thời gian yêu cầu là:

𝑂𝑂(𝑝𝑝2log 𝑝𝑝 + (𝑝𝑝 − 1)) Trong pha 4, mỗi bộ xử lí phân chia 𝑛𝑛𝑝𝑝 phần tử được sắp xếp Thời gian cần thiết là: 𝑂𝑂 (𝑛𝑛𝑝𝑝).

Trong pha thứ 5, bộ xử lí thứ 𝑖𝑖 trộn 𝑝𝑝 danh sách được sắp xếp Mỗi danh sách này được tạo ra bằng các sử dụng các phần tử chốt được chọn trong pha 3, trong trường hợp lý tưởng, mỗi

danh sách có kích thước 𝑝𝑝𝑛𝑛2 mà sau khi trộn mỗi danh sách trên mỗi bộ xử lí sẽ

có kích cỡ 𝑛𝑛𝑝𝑝 Sử dụng thuật toán trộn trong trường hợp này yêu cầu thời gian

là 𝑂𝑂(𝑛𝑛𝑝𝑝log 𝑝𝑝)

Tổng thời gian xử lí song song

sẽ là:

𝑂𝑂 (𝑛𝑛𝑝𝑝 log𝑛𝑛𝑝𝑝 + 𝑝𝑝 +𝑛𝑛𝑝𝑝 +𝑛𝑛𝑝𝑝 log 𝑝𝑝 )

= 𝑂𝑂(𝑛𝑛𝑝𝑝 (log𝑛𝑛𝑝𝑝) + log 𝑝𝑝 + 𝑝𝑝 + 1

= 𝑂𝑂(𝑛𝑛𝑝𝑝 𝑙𝑙𝑙𝑙𝑙𝑙 𝑛𝑛 + 𝑝𝑝 + 1)

Do đó ta có hệ số tăng tốc Speedup được tính bằng:

𝑆𝑆(𝑛𝑛, 𝑝𝑝) = 𝑛𝑛 𝑛𝑛 log 𝑛𝑛

𝑝𝑝 (log𝑛𝑛𝑝𝑝 + log 𝑝𝑝 + 𝑝𝑝 + 1)

=log 𝑛𝑛 + 𝑝𝑝 + 1𝑝𝑝 log 𝑛𝑛

3.2 Độ phức tạp về không gian

Bộ xử lí gốc (0) chứa được mảng có kích cỡ 𝑛𝑛, mỗi bộ xử lí còn lại cần chứa được mảng kích cỡ 𝑛𝑛𝑝𝑝 Mỗi

và sau đó chọn ra p phần tử làm mẫu Do đó

thời gian yêu cầu tính toán trong pha này là:

bằng QuickSort Kích thước của dữ liệu trên mỗi bộ xử lí là 𝑛𝑛

𝑝𝑝 và sau đó chọn ra 𝑝𝑝 phần tử làm mẫu Do đó thời gian yêu cầu tính toán trong pha này

là:

𝑂𝑂 (𝑛𝑛𝑝𝑝 log𝑛𝑛𝑝𝑝 + 𝑝𝑝) Trong pha thứ 3, bộ xử lí gốc trộn 𝑝𝑝 danh sách đã được sắp xếp với kích cỡ là 𝑝𝑝 thành một danh sách được sắp xếp với kích cỡ là 𝑝𝑝2, và sau đó chọn ra 𝑝𝑝 − 1 phần tử làm chốt Sử dụng thuật toán trộn, quá trình xử lí trộn này thực hiện hết 𝑂𝑂(𝑝𝑝2log 𝑝𝑝)

Tổng thời gian yêu cầu là:

𝑂𝑂(𝑝𝑝2log 𝑝𝑝 + (𝑝𝑝 − 1)) Trong pha 4, mỗi bộ xử lí phân chia 𝑛𝑛𝑝𝑝 phần tử được sắp xếp Thời

gian cần thiết là: 𝑂𝑂 (𝑛𝑛𝑝𝑝).

Trong pha thứ 5, bộ xử lí thứ 𝑖𝑖 trộn 𝑝𝑝 danh sách được sắp xếp Mỗi danh sách này được tạo ra bằng các sử dụng các phần tử chốt được chọn trong pha 3, trong trường hợp lý tưởng, mỗi

danh sách có kích thước 𝑛𝑛

𝑝𝑝2 mà sau khi trộn mỗi danh sách trên mỗi bộ xử lí sẽ

có kích cỡ 𝑛𝑛

𝑝𝑝 Sử dụng thuật toán trộn trong trường hợp này yêu cầu thời gian

là 𝑂𝑂(𝑛𝑛𝑝𝑝log 𝑝𝑝)

Tổng thời gian xử lí song song

sẽ là:

𝑂𝑂 (𝑛𝑛𝑝𝑝 log𝑛𝑛𝑝𝑝 + 𝑝𝑝 +𝑛𝑛𝑝𝑝 +𝑛𝑛𝑝𝑝 log 𝑝𝑝 )

= 𝑂𝑂(𝑛𝑛

𝑝𝑝 (log

𝑛𝑛 𝑝𝑝) + log 𝑝𝑝 + 𝑝𝑝 + 1

= 𝑂𝑂(𝑛𝑛𝑝𝑝 𝑙𝑙𝑙𝑙𝑙𝑙 𝑛𝑛 + 𝑝𝑝 + 1)

Do đó ta có hệ số tăng tốc Speedup được tính bằng:

𝑆𝑆(𝑛𝑛, 𝑝𝑝) =𝑛𝑛 𝑛𝑛 log 𝑛𝑛

𝑝𝑝 (log𝑛𝑛𝑝𝑝 + log 𝑝𝑝 + 𝑝𝑝 + 1)

=log 𝑛𝑛 + 𝑝𝑝 + 1𝑝𝑝 log 𝑛𝑛

3.2 Độ phức tạp về không gian

Bộ xử lí gốc (0) chứa được mảng có kích cỡ 𝑛𝑛, mỗi bộ xử lí còn lại cần chứa được mảng kích cỡ 𝑛𝑛𝑝𝑝 Mỗi

Trong pha thứ 3, bộ xử lí gốc trộn p danh

sách đã được sắp xếp với kích cỡ là p thành một danh sách được sắp xếp với kích cỡ là p2

, và sau đó chọn ra p-1 phần tử làm chốt Sử

dụng thuật toán trộn, quá trình xử lí trộn này

thực hiện hết O( p 2 logp) Tổng thời gian yêu cầu là:

bằng QuickSort Kích thước của dữ liệu trên mỗi bộ xử lí là 𝑛𝑛𝑝𝑝 và sau đó chọn ra 𝑝𝑝 phần tử làm mẫu Do đó thời gian yêu cầu tính toán trong pha này là:

𝑂𝑂 (𝑛𝑛

𝑝𝑝 log

𝑛𝑛

𝑝𝑝 + 𝑝𝑝) Trong pha thứ 3, bộ xử lí gốc trộn 𝑝𝑝 danh sách đã được sắp xếp với kích cỡ là 𝑝𝑝 thành một danh sách được sắp xếp với kích cỡ là 𝑝𝑝2, và sau đó chọn ra 𝑝𝑝 − 1 phần tử làm chốt Sử dụng thuật toán trộn, quá trình xử lí trộn này thực hiện hết 𝑂𝑂(𝑝𝑝2log 𝑝𝑝)

Tổng thời gian yêu cầu là:

𝑂𝑂(𝑝𝑝2log 𝑝𝑝 + (𝑝𝑝 − 1)) Trong pha 4, mỗi bộ xử lí phân chia 𝑛𝑛𝑝𝑝 phần tử được sắp xếp Thời gian cần thiết là: 𝑂𝑂 (𝑛𝑛𝑝𝑝).

Trong pha thứ 5, bộ xử lí thứ 𝑖𝑖 trộn 𝑝𝑝 danh sách được sắp xếp Mỗi danh sách này được tạo ra bằng các sử dụng các phần tử chốt được chọn trong pha 3, trong trường hợp lý tưởng, mỗi

danh sách có kích thước 𝑝𝑝𝑛𝑛2 mà sau khi trộn mỗi danh sách trên mỗi bộ xử lí sẽ

có kích cỡ 𝑛𝑛𝑝𝑝 Sử dụng thuật toán trộn trong trường hợp này yêu cầu thời gian

là 𝑂𝑂(𝑛𝑛𝑝𝑝log 𝑝𝑝)

Tổng thời gian xử lí song song

sẽ là:

𝑂𝑂 (𝑛𝑛𝑝𝑝 log𝑛𝑛𝑝𝑝 + 𝑝𝑝 +𝑛𝑛𝑝𝑝 +𝑛𝑛𝑝𝑝 log 𝑝𝑝 )

= 𝑂𝑂(𝑛𝑛𝑝𝑝 (log𝑛𝑛𝑝𝑝) + log 𝑝𝑝 + 𝑝𝑝 + 1

= 𝑂𝑂(𝑛𝑛𝑝𝑝 𝑙𝑙𝑙𝑙𝑙𝑙 𝑛𝑛 + 𝑝𝑝 + 1)

Do đó ta có hệ số tăng tốc Speedup được tính bằng:

𝑆𝑆(𝑛𝑛, 𝑝𝑝) = 𝑛𝑛 𝑛𝑛 log 𝑛𝑛

𝑝𝑝 (log𝑛𝑛𝑝𝑝 + log 𝑝𝑝 + 𝑝𝑝 + 1)

= log 𝑛𝑛 + 𝑝𝑝 + 1𝑝𝑝 log 𝑛𝑛

3.2 Độ phức tạp về không gian

Bộ xử lí gốc (0) chứa được mảng có kích cỡ 𝑛𝑛, mỗi bộ xử lí còn lại cần chứa được mảng kích cỡ 𝑛𝑛𝑝𝑝 Mỗi

Trong pha 4, mỗi bộ xử lí phân chia

bằng QuickSort Kích thước của dữ liệu trên mỗi bộ xử lí là 𝑛𝑛

𝑝𝑝 và sau đó chọn ra 𝑝𝑝 phần tử làm mẫu Do đó thời gian yêu cầu tính toán trong pha này là:

𝑂𝑂 (𝑛𝑛𝑝𝑝 log𝑛𝑛𝑝𝑝 + 𝑝𝑝) Trong pha thứ 3, bộ xử lí gốc trộn 𝑝𝑝 danh sách đã được sắp xếp với kích cỡ là 𝑝𝑝 thành một danh sách được sắp xếp với kích cỡ là 𝑝𝑝2, và sau đó chọn ra 𝑝𝑝 − 1 phần tử làm chốt Sử dụng thuật toán trộn, quá trình xử lí trộn này thực hiện hết 𝑂𝑂(𝑝𝑝2log 𝑝𝑝)

Tổng thời gian yêu cầu là:

𝑂𝑂(𝑝𝑝2log 𝑝𝑝 + (𝑝𝑝 − 1)) Trong pha 4, mỗi bộ xử lí phân chia 𝑛𝑛𝑝𝑝 phần tử được sắp xếp Thời gian cần thiết là: 𝑂𝑂 (𝑛𝑛𝑝𝑝).

Trong pha thứ 5, bộ xử lí thứ 𝑖𝑖 trộn 𝑝𝑝 danh sách được sắp xếp Mỗi danh sách này được tạo ra bằng các sử dụng các phần tử chốt được chọn trong pha 3, trong trường hợp lý tưởng, mỗi

danh sách có kích thước 𝑛𝑛

𝑝𝑝2 mà sau khi trộn mỗi danh sách trên mỗi bộ xử lí sẽ

có kích cỡ 𝑛𝑛

𝑝𝑝 Sử dụng thuật toán trộn trong trường hợp này yêu cầu thời gian

là 𝑂𝑂(𝑛𝑛𝑝𝑝log 𝑝𝑝)

Tổng thời gian xử lí song song

sẽ là:

𝑂𝑂 (𝑛𝑛𝑝𝑝 log𝑛𝑛𝑝𝑝 + 𝑝𝑝 +𝑛𝑛𝑝𝑝 +𝑛𝑛𝑝𝑝 log 𝑝𝑝 )

= 𝑂𝑂(𝑛𝑛

𝑝𝑝 (log

𝑛𝑛 𝑝𝑝) + log 𝑝𝑝 + 𝑝𝑝 + 1

= 𝑂𝑂(𝑛𝑛𝑝𝑝 𝑙𝑙𝑙𝑙𝑙𝑙 𝑛𝑛 + 𝑝𝑝 + 1)

Do đó ta có hệ số tăng tốc Speedup được tính bằng:

𝑆𝑆(𝑛𝑛, 𝑝𝑝) = 𝑛𝑛 𝑛𝑛 log 𝑛𝑛

𝑝𝑝 (log𝑛𝑛𝑝𝑝 + log 𝑝𝑝 + 𝑝𝑝 + 1)

=log 𝑛𝑛 + 𝑝𝑝 + 1𝑝𝑝 log 𝑛𝑛

3.2 Độ phức tạp về không gian

Bộ xử lí gốc (0) chứa được mảng có kích cỡ 𝑛𝑛, mỗi bộ xử lí còn lại cần chứa được mảng kích cỡ 𝑛𝑛𝑝𝑝 Mỗi

phần tử được sắp xếp Thời gian cần thiết là:

bằng QuickSort Kích thước của dữ liệu trên mỗi bộ xử lí là 𝑛𝑛𝑝𝑝 và sau đó chọn ra 𝑝𝑝 phần tử làm mẫu Do đó thời gian yêu cầu tính toán trong pha này

là:

𝑂𝑂 (𝑛𝑛𝑝𝑝 log𝑛𝑛𝑝𝑝 + 𝑝𝑝) Trong pha thứ 3, bộ xử lí gốc trộn 𝑝𝑝 danh sách đã được sắp xếp với kích cỡ là 𝑝𝑝 thành một danh sách được sắp xếp với kích cỡ là 𝑝𝑝2, và sau đó chọn ra 𝑝𝑝 − 1 phần tử làm chốt Sử dụng thuật toán trộn, quá trình xử lí trộn này thực hiện hết 𝑂𝑂(𝑝𝑝2log 𝑝𝑝)

Tổng thời gian yêu cầu là:

𝑂𝑂(𝑝𝑝2log 𝑝𝑝 + (𝑝𝑝 − 1)) Trong pha 4, mỗi bộ xử lí phân chia 𝑛𝑛𝑝𝑝 phần tử được sắp xếp Thời

gian cần thiết là: 𝑂𝑂 (𝑛𝑛𝑝𝑝).

Trong pha thứ 5, bộ xử lí thứ 𝑖𝑖 trộn 𝑝𝑝 danh sách được sắp xếp Mỗi danh sách này được tạo ra bằng các sử dụng các phần tử chốt được chọn trong pha 3, trong trường hợp lý tưởng, mỗi

danh sách có kích thước 𝑛𝑛

𝑝𝑝2 mà sau khi trộn mỗi danh sách trên mỗi bộ xử lí sẽ

có kích cỡ 𝑛𝑛

𝑝𝑝 Sử dụng thuật toán trộn trong trường hợp này yêu cầu thời gian

là 𝑂𝑂(𝑛𝑛𝑝𝑝log 𝑝𝑝)

Tổng thời gian xử lí song song

sẽ là:

𝑂𝑂 (𝑛𝑛𝑝𝑝 log𝑛𝑛𝑝𝑝 + 𝑝𝑝 +𝑛𝑛𝑝𝑝 +𝑛𝑛𝑝𝑝 log 𝑝𝑝 )

= 𝑂𝑂(𝑛𝑛𝑝𝑝 (log𝑛𝑛𝑝𝑝) + log 𝑝𝑝 + 𝑝𝑝 + 1

= 𝑂𝑂(𝑛𝑛𝑝𝑝 𝑙𝑙𝑙𝑙𝑙𝑙 𝑛𝑛 + 𝑝𝑝 + 1)

Do đó ta có hệ số tăng tốc Speedup được tính bằng:

𝑆𝑆(𝑛𝑛, 𝑝𝑝) = 𝑛𝑛 𝑛𝑛 log 𝑛𝑛

𝑝𝑝 (log𝑛𝑛𝑝𝑝 + log 𝑝𝑝 + 𝑝𝑝 + 1)

= log 𝑛𝑛 + 𝑝𝑝 + 1𝑝𝑝 log 𝑛𝑛

3.2 Độ phức tạp về không gian

Bộ xử lí gốc (0) chứa được mảng có kích cỡ 𝑛𝑛, mỗi bộ xử lí còn lại cần chứa được mảng kích cỡ 𝑛𝑛𝑝𝑝 Mỗi

Trong pha thứ 5, bộ xử lí thứ i trộn p danh sách được sắp xếp Mỗi danh sách này được tạo ra bằng các sử dụng các phần tử chốt được chọn trong pha 3, trong trường hợp lý tưởng, mỗi danh sách có kích thước

bằng QuickSort Kích thước của dữ

liệu trên mỗi bộ xử lí là 𝑛𝑛𝑝𝑝 và sau đó

chọn ra 𝑝𝑝 phần tử làm mẫu Do đó thời

gian yêu cầu tính toán trong pha này

là:

𝑂𝑂 (𝑛𝑛𝑝𝑝 log𝑛𝑛𝑝𝑝 + 𝑝𝑝) Trong pha thứ 3, bộ xử lí gốc

trộn 𝑝𝑝 danh sách đã được sắp xếp với

kích cỡ là 𝑝𝑝 thành một danh sách được

sắp xếp với kích cỡ là 𝑝𝑝2, và sau đó

chọn ra 𝑝𝑝 − 1 phần tử làm chốt Sử

dụng thuật toán trộn, quá trình xử lí

trộn này thực hiện hết 𝑂𝑂(𝑝𝑝2log 𝑝𝑝)

Tổng thời gian yêu cầu là:

𝑂𝑂(𝑝𝑝2log 𝑝𝑝 + (𝑝𝑝 − 1)) Trong pha 4, mỗi bộ xử lí phân

chia 𝑛𝑛𝑝𝑝 phần tử được sắp xếp Thời

gian cần thiết là: 𝑂𝑂 (𝑛𝑛𝑝𝑝).

Trong pha thứ 5, bộ xử lí thứ 𝑖𝑖 trộn 𝑝𝑝 danh sách được sắp xếp Mỗi

danh sách này được tạo ra bằng các sử

dụng các phần tử chốt được chọn trong

pha 3, trong trường hợp lý tưởng, mỗi

danh sách có kích thước 𝑛𝑛

𝑝𝑝 2 mà sau khi trộn mỗi danh sách trên mỗi bộ xử lí sẽ

có kích cỡ 𝑛𝑛

𝑝𝑝 Sử dụng thuật toán trộn trong trường hợp này yêu cầu thời gian

là 𝑂𝑂(𝑛𝑛𝑝𝑝log 𝑝𝑝)

Tổng thời gian xử lí song song

sẽ là:

𝑂𝑂 (𝑛𝑛𝑝𝑝 log𝑛𝑛𝑝𝑝 + 𝑝𝑝 +𝑛𝑛𝑝𝑝 +𝑛𝑛𝑝𝑝 log 𝑝𝑝 )

= 𝑂𝑂(𝑛𝑛𝑝𝑝 (log𝑛𝑛𝑝𝑝) + log 𝑝𝑝 + 𝑝𝑝 + 1

= 𝑂𝑂(𝑛𝑛𝑝𝑝 𝑙𝑙𝑙𝑙𝑙𝑙 𝑛𝑛 + 𝑝𝑝 + 1)

Do đó ta có hệ số tăng tốc Speedup được tính bằng:

𝑆𝑆(𝑛𝑛, 𝑝𝑝) = 𝑛𝑛 𝑛𝑛 log 𝑛𝑛

𝑝𝑝 (log𝑛𝑛𝑝𝑝 + log 𝑝𝑝 + 𝑝𝑝 + 1)

= log 𝑛𝑛 + 𝑝𝑝 + 1𝑝𝑝 log 𝑛𝑛

3.2 Độ phức tạp về không gian

Bộ xử lí gốc (0) chứa được mảng có kích cỡ 𝑛𝑛, mỗi bộ xử lí còn lại cần chứa được mảng kích cỡ 𝑛𝑛𝑝𝑝 Mỗi

mà sau khi trộn mỗi danh sách trên mỗi bộ xử

lí sẽ có kích cỡ

bằng QuickSort Kích thước của dữ liệu trên mỗi bộ xử lí là 𝑛𝑛

𝑝𝑝 và sau đó chọn ra 𝑝𝑝 phần tử làm mẫu Do đó thời gian yêu cầu tính toán trong pha này

là:

𝑂𝑂 (𝑛𝑛𝑝𝑝 log𝑛𝑛𝑝𝑝 + 𝑝𝑝) Trong pha thứ 3, bộ xử lí gốc trộn 𝑝𝑝 danh sách đã được sắp xếp với kích cỡ là 𝑝𝑝 thành một danh sách được sắp xếp với kích cỡ là 𝑝𝑝2, và sau đó chọn ra 𝑝𝑝 − 1 phần tử làm chốt Sử dụng thuật toán trộn, quá trình xử lí trộn này thực hiện hết 𝑂𝑂(𝑝𝑝2log 𝑝𝑝)

Tổng thời gian yêu cầu là:

𝑂𝑂(𝑝𝑝2log 𝑝𝑝 + (𝑝𝑝 − 1)) Trong pha 4, mỗi bộ xử lí phân chia 𝑛𝑛𝑝𝑝 phần tử được sắp xếp Thời

gian cần thiết là: 𝑂𝑂 (𝑛𝑛𝑝𝑝).

Trong pha thứ 5, bộ xử lí thứ 𝑖𝑖 trộn 𝑝𝑝 danh sách được sắp xếp Mỗi danh sách này được tạo ra bằng các sử dụng các phần tử chốt được chọn trong pha 3, trong trường hợp lý tưởng, mỗi

danh sách có kích thước 𝑝𝑝𝑛𝑛2 mà sau khi trộn mỗi danh sách trên mỗi bộ xử lí sẽ

có kích cỡ 𝑛𝑛𝑝𝑝 Sử dụng thuật toán trộn trong trường hợp này yêu cầu thời gian

là 𝑂𝑂(𝑛𝑛𝑝𝑝log 𝑝𝑝)

Tổng thời gian xử lí song song

sẽ là:

𝑂𝑂 (𝑛𝑛𝑝𝑝 log𝑛𝑛𝑝𝑝 + 𝑝𝑝 +𝑛𝑛𝑝𝑝 +𝑛𝑛𝑝𝑝 log 𝑝𝑝 )

= 𝑂𝑂(𝑛𝑛𝑝𝑝 (log𝑛𝑛𝑝𝑝) + log 𝑝𝑝 + 𝑝𝑝 + 1

= 𝑂𝑂(𝑛𝑛𝑝𝑝 𝑙𝑙𝑙𝑙𝑙𝑙 𝑛𝑛 + 𝑝𝑝 + 1)

Do đó ta có hệ số tăng tốc Speedup được tính bằng:

𝑆𝑆(𝑛𝑛, 𝑝𝑝) =𝑛𝑛 𝑛𝑛 log 𝑛𝑛

𝑝𝑝 (log𝑛𝑛𝑝𝑝 + log 𝑝𝑝 + 𝑝𝑝 + 1)

=log 𝑛𝑛 + 𝑝𝑝 + 1𝑝𝑝 log 𝑛𝑛

3.2 Độ phức tạp về không gian

Bộ xử lí gốc (0) chứa được mảng có kích cỡ 𝑛𝑛, mỗi bộ xử lí còn lại cần chứa được mảng kích cỡ 𝑛𝑛𝑝𝑝 Mỗi

Sử dụng thuật toán trộn trong trường hợp này yêu cầu thời gian là

bằng QuickSort Kích thước của dữ

liệu trên mỗi bộ xử lí là 𝑛𝑛𝑝𝑝 và sau đó

chọn ra 𝑝𝑝 phần tử làm mẫu Do đó thời

gian yêu cầu tính toán trong pha này

là:

𝑂𝑂 (𝑛𝑛𝑝𝑝 log𝑛𝑛𝑝𝑝 + 𝑝𝑝)

Trong pha thứ 3, bộ xử lí gốc

trộn 𝑝𝑝 danh sách đã được sắp xếp với

kích cỡ là 𝑝𝑝 thành một danh sách được

sắp xếp với kích cỡ là 𝑝𝑝2, và sau đó

chọn ra 𝑝𝑝 − 1 phần tử làm chốt Sử

dụng thuật toán trộn, quá trình xử lí

trộn này thực hiện hết 𝑂𝑂(𝑝𝑝2log 𝑝𝑝)

Tổng thời gian yêu cầu là:

𝑂𝑂(𝑝𝑝2log 𝑝𝑝 + (𝑝𝑝 − 1))

Trong pha 4, mỗi bộ xử lí phân

chia 𝑛𝑛𝑝𝑝 phần tử được sắp xếp Thời

gian cần thiết là: 𝑂𝑂 (𝑛𝑛𝑝𝑝).

Trong pha thứ 5, bộ xử lí thứ 𝑖𝑖

trộn 𝑝𝑝 danh sách được sắp xếp Mỗi

danh sách này được tạo ra bằng các sử

dụng các phần tử chốt được chọn trong

pha 3, trong trường hợp lý tưởng, mỗi

danh sách có kích thước 𝑝𝑝𝑛𝑛2 mà sau khi trộn mỗi danh sách trên mỗi bộ xử lí sẽ

có kích cỡ 𝑛𝑛𝑝𝑝 Sử dụng thuật toán trộn trong trường hợp này yêu cầu thời gian

là 𝑂𝑂(𝑛𝑛𝑝𝑝log 𝑝𝑝)

Tổng thời gian xử lí song song

sẽ là:

𝑂𝑂 (𝑛𝑛𝑝𝑝 log𝑛𝑛𝑝𝑝 + 𝑝𝑝 +𝑛𝑛𝑝𝑝 +𝑛𝑛𝑝𝑝 log 𝑝𝑝 )

= 𝑂𝑂(𝑛𝑛𝑝𝑝 (log𝑛𝑛𝑝𝑝) + log 𝑝𝑝 + 𝑝𝑝 + 1

= 𝑂𝑂(𝑛𝑛𝑝𝑝 𝑙𝑙𝑙𝑙𝑙𝑙 𝑛𝑛 + 𝑝𝑝 + 1)

Do đó ta có hệ số tăng tốc Speedup được tính bằng:

𝑆𝑆(𝑛𝑛, 𝑝𝑝) =𝑛𝑛 𝑛𝑛 log 𝑛𝑛

𝑝𝑝 (log𝑛𝑛𝑝𝑝 + log 𝑝𝑝 + 𝑝𝑝 + 1)

=log 𝑛𝑛 + 𝑝𝑝 + 1𝑝𝑝 log 𝑛𝑛

3.2 Độ phức tạp về không gian

Bộ xử lí gốc (0) chứa được mảng có kích cỡ 𝑛𝑛, mỗi bộ xử lí còn lại cần chứa được mảng kích cỡ 𝑛𝑛𝑝𝑝 Mỗi

Tổng thời gian xử lí song song sẽ là:

bằng QuickSort Kích thước của dữ

liệu trên mỗi bộ xử lí là 𝑛𝑛

𝑝𝑝 và sau đó chọn ra 𝑝𝑝 phần tử làm mẫu Do đó thời

gian yêu cầu tính toán trong pha này

là:

𝑂𝑂 (𝑛𝑛𝑝𝑝 log𝑛𝑛𝑝𝑝 + 𝑝𝑝) Trong pha thứ 3, bộ xử lí gốc

trộn 𝑝𝑝 danh sách đã được sắp xếp với

kích cỡ là 𝑝𝑝 thành một danh sách được

sắp xếp với kích cỡ là 𝑝𝑝2, và sau đó

chọn ra 𝑝𝑝 − 1 phần tử làm chốt Sử

dụng thuật toán trộn, quá trình xử lí

trộn này thực hiện hết 𝑂𝑂(𝑝𝑝2log 𝑝𝑝)

Tổng thời gian yêu cầu là:

𝑂𝑂(𝑝𝑝2log 𝑝𝑝 + (𝑝𝑝 − 1))

Trong pha 4, mỗi bộ xử lí phân

chia 𝑛𝑛𝑝𝑝 phần tử được sắp xếp Thời

gian cần thiết là: 𝑂𝑂 (𝑛𝑛𝑝𝑝).

Trong pha thứ 5, bộ xử lí thứ 𝑖𝑖

trộn 𝑝𝑝 danh sách được sắp xếp Mỗi

danh sách này được tạo ra bằng các sử

dụng các phần tử chốt được chọn trong

pha 3, trong trường hợp lý tưởng, mỗi

danh sách có kích thước 𝑛𝑛

𝑝𝑝2 mà sau khi trộn mỗi danh sách trên mỗi bộ xử lí sẽ

có kích cỡ 𝑛𝑛

𝑝𝑝 Sử dụng thuật toán trộn trong trường hợp này yêu cầu thời gian

là 𝑂𝑂(𝑛𝑛𝑝𝑝log 𝑝𝑝)

Tổng thời gian xử lí song song

sẽ là:

𝑂𝑂 (𝑛𝑛

𝑝𝑝 log

𝑛𝑛

𝑝𝑝 + 𝑝𝑝 +

𝑛𝑛

𝑝𝑝 +

𝑛𝑛

𝑝𝑝 log 𝑝𝑝 )

= 𝑂𝑂(𝑛𝑛𝑝𝑝 (log𝑛𝑛𝑝𝑝) + log 𝑝𝑝 + 𝑝𝑝 + 1

= 𝑂𝑂(𝑛𝑛𝑝𝑝 𝑙𝑙𝑙𝑙𝑙𝑙 𝑛𝑛 + 𝑝𝑝 + 1)

Do đó ta có hệ số tăng tốc Speedup được tính bằng:

𝑆𝑆(𝑛𝑛, 𝑝𝑝) =𝑛𝑛 𝑛𝑛 log 𝑛𝑛

𝑝𝑝 (log𝑛𝑛𝑝𝑝 + log 𝑝𝑝 + 𝑝𝑝 + 1)

= 𝑝𝑝 log 𝑛𝑛 log 𝑛𝑛 + 𝑝𝑝 + 1

3.2 Độ phức tạp về không gian

Bộ xử lí gốc (0) chứa được mảng có kích cỡ 𝑛𝑛, mỗi bộ xử lí còn lại cần chứa được mảng kích cỡ 𝑛𝑛𝑝𝑝 Mỗi

bằng QuickSort Kích thước của dữ liệu trên mỗi bộ xử lí là 𝑛𝑛

𝑝𝑝 và sau đó chọn ra 𝑝𝑝 phần tử làm mẫu Do đó thời gian yêu cầu tính toán trong pha này là:

𝑂𝑂 (𝑛𝑛𝑝𝑝 log𝑛𝑛𝑝𝑝 + 𝑝𝑝) Trong pha thứ 3, bộ xử lí gốc trộn 𝑝𝑝 danh sách đã được sắp xếp với kích cỡ là 𝑝𝑝 thành một danh sách được sắp xếp với kích cỡ là 𝑝𝑝2, và sau đó chọn ra 𝑝𝑝 − 1 phần tử làm chốt Sử dụng thuật toán trộn, quá trình xử lí trộn này thực hiện hết 𝑂𝑂(𝑝𝑝2log 𝑝𝑝)

Tổng thời gian yêu cầu là:

𝑂𝑂(𝑝𝑝2log 𝑝𝑝 + (𝑝𝑝 − 1)) Trong pha 4, mỗi bộ xử lí phân chia 𝑛𝑛𝑝𝑝 phần tử được sắp xếp Thời gian cần thiết là: 𝑂𝑂 (𝑛𝑛𝑝𝑝).

Trong pha thứ 5, bộ xử lí thứ 𝑖𝑖 trộn 𝑝𝑝 danh sách được sắp xếp Mỗi danh sách này được tạo ra bằng các sử dụng các phần tử chốt được chọn trong pha 3, trong trường hợp lý tưởng, mỗi

danh sách có kích thước 𝑛𝑛

𝑝𝑝2 mà sau khi trộn mỗi danh sách trên mỗi bộ xử lí sẽ

có kích cỡ 𝑛𝑛𝑝𝑝 Sử dụng thuật toán trộn trong trường hợp này yêu cầu thời gian

là 𝑂𝑂(𝑛𝑛𝑝𝑝log 𝑝𝑝)

Tổng thời gian xử lí song song

sẽ là:

𝑂𝑂 (𝑛𝑛

𝑝𝑝 log

𝑛𝑛

𝑝𝑝 + 𝑝𝑝 +

𝑛𝑛

𝑝𝑝 +

𝑛𝑛

𝑝𝑝 log 𝑝𝑝 )

= 𝑂𝑂(𝑛𝑛𝑝𝑝(log𝑛𝑛𝑝𝑝) + log 𝑝𝑝 + 𝑝𝑝 + 1

= 𝑂𝑂(𝑛𝑛𝑝𝑝 𝑙𝑙𝑙𝑙𝑙𝑙 𝑛𝑛 + 𝑝𝑝 + 1)

Do đó ta có hệ số tăng tốc Speedup được tính bằng:

𝑆𝑆(𝑛𝑛, 𝑝𝑝) =𝑛𝑛 𝑛𝑛 log 𝑛𝑛

𝑝𝑝 (log𝑛𝑛𝑝𝑝 + log 𝑝𝑝 + 𝑝𝑝 + 1)

=log 𝑛𝑛 + 𝑝𝑝 + 1𝑝𝑝 log 𝑛𝑛

3.2 Độ phức tạp về không gian

Bộ xử lí gốc (0) chứa được mảng có kích cỡ 𝑛𝑛, mỗi bộ xử lí còn lại cần chứa được mảng kích cỡ 𝑛𝑛𝑝𝑝 Mỗi

Do đó ta có hệ số tăng tốc Speedup được tính bằng:

bằng QuickSort Kích thước của dữ liệu trên mỗi bộ xử lí là 𝑛𝑛𝑝𝑝 và sau đó chọn ra 𝑝𝑝 phần tử làm mẫu Do đó thời gian yêu cầu tính toán trong pha này là:

𝑂𝑂 (𝑛𝑛

𝑝𝑝 log

𝑛𝑛

𝑝𝑝 + 𝑝𝑝) Trong pha thứ 3, bộ xử lí gốc trộn 𝑝𝑝 danh sách đã được sắp xếp với kích cỡ là 𝑝𝑝 thành một danh sách được sắp xếp với kích cỡ là 𝑝𝑝2, và sau đó chọn ra 𝑝𝑝 − 1 phần tử làm chốt Sử dụng thuật toán trộn, quá trình xử lí trộn này thực hiện hết 𝑂𝑂(𝑝𝑝2log 𝑝𝑝)

Tổng thời gian yêu cầu là:

𝑂𝑂(𝑝𝑝2log 𝑝𝑝 + (𝑝𝑝 − 1)) Trong pha 4, mỗi bộ xử lí phân chia 𝑛𝑛𝑝𝑝 phần tử được sắp xếp Thời gian cần thiết là: 𝑂𝑂 (𝑛𝑛𝑝𝑝).

Trong pha thứ 5, bộ xử lí thứ 𝑖𝑖 trộn 𝑝𝑝 danh sách được sắp xếp Mỗi danh sách này được tạo ra bằng các sử dụng các phần tử chốt được chọn trong pha 3, trong trường hợp lý tưởng, mỗi

danh sách có kích thước 𝑝𝑝𝑛𝑛2 mà sau khi trộn mỗi danh sách trên mỗi bộ xử lí sẽ

có kích cỡ 𝑛𝑛𝑝𝑝 Sử dụng thuật toán trộn trong trường hợp này yêu cầu thời gian

là 𝑂𝑂(𝑛𝑛𝑝𝑝log 𝑝𝑝)

Tổng thời gian xử lí song song

sẽ là:

𝑂𝑂 (𝑛𝑛𝑝𝑝 log𝑛𝑛𝑝𝑝 + 𝑝𝑝 +𝑛𝑛𝑝𝑝 +𝑛𝑛𝑝𝑝 log 𝑝𝑝 )

= 𝑂𝑂(𝑛𝑛𝑝𝑝 (log𝑛𝑛𝑝𝑝) + log 𝑝𝑝 + 𝑝𝑝 + 1

= 𝑂𝑂(𝑛𝑛𝑝𝑝 𝑙𝑙𝑙𝑙𝑙𝑙 𝑛𝑛 + 𝑝𝑝 + 1)

Do đó ta có hệ số tăng tốc Speedup được tính bằng:

𝑆𝑆(𝑛𝑛, 𝑝𝑝) = 𝑛𝑛 𝑛𝑛 log 𝑛𝑛

𝑝𝑝 (log𝑛𝑛𝑝𝑝 + log 𝑝𝑝 + 𝑝𝑝 + 1)

= log 𝑛𝑛 + 𝑝𝑝 + 1𝑝𝑝 log 𝑛𝑛

3.2 Độ phức tạp về không gian

Bộ xử lí gốc (0) chứa được mảng có kích cỡ 𝑛𝑛, mỗi bộ xử lí còn lại cần chứa được mảng kích cỡ 𝑛𝑛𝑝𝑝 Mỗi

3.2 Độ phức tạp về không gian

Bộ xử lí gốc (0) chứa được mảng có kích

cỡ n, mỗi bộ xử lí còn lại cần chứa được mảng kích cỡ

bằng QuickSort Kích thước của dữ liệu trên mỗi bộ xử lí là 𝑛𝑛

𝑝𝑝 và sau đó chọn ra 𝑝𝑝 phần tử làm mẫu Do đó thời gian yêu cầu tính toán trong pha này là:

𝑂𝑂 (𝑛𝑛𝑝𝑝 log𝑛𝑛𝑝𝑝 + 𝑝𝑝) Trong pha thứ 3, bộ xử lí gốc trộn 𝑝𝑝 danh sách đã được sắp xếp với kích cỡ là 𝑝𝑝 thành một danh sách được sắp xếp với kích cỡ là 𝑝𝑝2, và sau đó chọn ra 𝑝𝑝 − 1 phần tử làm chốt Sử dụng thuật toán trộn, quá trình xử lí trộn này thực hiện hết 𝑂𝑂(𝑝𝑝2log 𝑝𝑝)

Tổng thời gian yêu cầu là:

𝑂𝑂(𝑝𝑝2log 𝑝𝑝 + (𝑝𝑝 − 1)) Trong pha 4, mỗi bộ xử lí phân chia 𝑛𝑛𝑝𝑝 phần tử được sắp xếp Thời gian cần thiết là: 𝑂𝑂 (𝑛𝑛𝑝𝑝).

Trong pha thứ 5, bộ xử lí thứ 𝑖𝑖 trộn 𝑝𝑝 danh sách được sắp xếp Mỗi danh sách này được tạo ra bằng các sử dụng các phần tử chốt được chọn trong pha 3, trong trường hợp lý tưởng, mỗi

danh sách có kích thước 𝑛𝑛

𝑝𝑝2 mà sau khi trộn mỗi danh sách trên mỗi bộ xử lí sẽ

có kích cỡ 𝑛𝑛𝑝𝑝 Sử dụng thuật toán trộn trong trường hợp này yêu cầu thời gian

là 𝑂𝑂(𝑛𝑛𝑝𝑝log 𝑝𝑝)

Tổng thời gian xử lí song song

sẽ là:

𝑂𝑂 (𝑛𝑛

𝑝𝑝 log

𝑛𝑛

𝑝𝑝 + 𝑝𝑝 +

𝑛𝑛

𝑝𝑝 +

𝑛𝑛

𝑝𝑝 log 𝑝𝑝 )

= 𝑂𝑂(𝑛𝑛

𝑝𝑝 (log

𝑛𝑛 𝑝𝑝) + log 𝑝𝑝 + 𝑝𝑝 + 1

= 𝑂𝑂(𝑛𝑛𝑝𝑝 𝑙𝑙𝑙𝑙𝑙𝑙 𝑛𝑛 + 𝑝𝑝 + 1)

Do đó ta có hệ số tăng tốc Speedup được tính bằng:

𝑆𝑆(𝑛𝑛, 𝑝𝑝) =𝑛𝑛 𝑛𝑛 log 𝑛𝑛

𝑝𝑝 (log𝑛𝑛𝑝𝑝 + log 𝑝𝑝 + 𝑝𝑝 + 1)

= 𝑝𝑝 log 𝑛𝑛 log 𝑛𝑛 + 𝑝𝑝 + 1

3.2 Độ phức tạp về không gian

Bộ xử lí gốc (0) chứa được mảng có kích cỡ 𝑛𝑛, mỗi bộ xử lí còn lại cần chứa được mảng kích cỡ 𝑛𝑛𝑝𝑝 Mỗi

Mỗi bộ xử lí yêu cầu một cặp bộ nhớ đệm có kích cỡ là p [2]

3.3 Độ phức tạp truyền thông

Trong pha 2, tất cả n phần tử được chia cắt.

Trong pha 3, bộ xử lí gốc đọc p2 giá trị.

Trong pha 4 bộ xử lí gốc truyền thông p-1

giá trị.

Trong pha 5, mỗi bộ xử lí gửi

bộ xử lí yêu cầu một cặp bộ nhớ đệm

có kích cỡ là 𝑝𝑝 [2]

3.3 Độ phức tạp truyền thông

Trong pha 2, tất cả 𝑛𝑛 phần tử được chia cắt

Trong pha 3, bộ xử lí gốc đọc 𝑝𝑝2

giá trị

Trong pha 4 bộ xử lí gốc truyền thông 𝑝𝑝 − 1 giá trị

Trong pha 5, mỗi bộ xử lí gửi 𝑛𝑛

𝑝𝑝−𝑝𝑝𝑛𝑛2 phần tử, do đó, tổng số phần tử cần truyền thông là −𝑛𝑛𝑝𝑝

Trong pha cuối cùng, bộ xử lí gốc tập hợp 𝑛𝑛 − 𝑛𝑛𝑝𝑝 phần tử

Do đó tổng số giá trị cần truyền thông là :

𝑛𝑛 + 𝑝𝑝2+ 𝑝𝑝 − 1 + 𝑛𝑛 −𝑛𝑛

𝑝𝑝 + 𝑛𝑛 −

𝑛𝑛 𝑝𝑝

= 2𝑛𝑛 (1 −1𝑝𝑝) + 𝑝𝑝2+ 𝑝𝑝

− 1

4 Mô phỏng thuật toán 4.1 Môi trường mô phỏng:

Quá trình mô phỏng được tiến hành trên hệ thống IBM Linux Cluster 2350:

- 8 node tính toán, mỗi node gồm 2 chip Intel Xeon Dual Core 3.2 GHz, 2 GB RAM, 1x36 GB HDD, DVD ROM Tổng năng lực tính toán của 8 node là khoảng 51.2 Gflops

- 2 node phục vụ lưu trữ (Storage1 và Storage2), mỗi node gồm

2 chip Intel Xeon Dual Core 3.2 GHz,

3 GB RAM, 4x72 GB HDD

- 1 node đóng vai trò quản lí (MGT) bao gồm chip Intel Xeon Dual Core 3.2 GHz, 3 GB RAM, 2x36 GBHDD

- Năng lực lưu trữ: thiết bị lưu trữ dùng chung EXP400 với 10x73 GB HDD SCSI 320 MBps 15KRpm, dùng

hệ thống chia sẻ file: GPFS cho Linux v2.3.0.5

- Các node chạy HĐH Redhat Enterprise Linux 3.0 và được kết nối với nhau thông qua mạng Gethernet

- Các thuật toán được lập trình bằng ngôn ngữ C++ sử dụng thư viện

phần tử, do đó, tổng số phần tử cần truyền thông là

-bằng QuickSort Kích thước của dữ liệu trên mỗi bộ xử lí là 𝑛𝑛

𝑝𝑝 và sau đó chọn ra 𝑝𝑝 phần tử làm mẫu Do đó thời gian yêu cầu tính toán trong pha này là:

𝑂𝑂 (𝑛𝑛𝑝𝑝 log𝑛𝑛𝑝𝑝 + 𝑝𝑝) Trong pha thứ 3, bộ xử lí gốc trộn 𝑝𝑝 danh sách đã được sắp xếp với kích cỡ là 𝑝𝑝 thành một danh sách được sắp xếp với kích cỡ là 𝑝𝑝2, và sau đó chọn ra 𝑝𝑝 − 1 phần tử làm chốt Sử dụng thuật toán trộn, quá trình xử lí trộn này thực hiện hết 𝑂𝑂(𝑝𝑝2log 𝑝𝑝)

Tổng thời gian yêu cầu là:

𝑂𝑂(𝑝𝑝2log 𝑝𝑝 + (𝑝𝑝 − 1)) Trong pha 4, mỗi bộ xử lí phân chia 𝑛𝑛𝑝𝑝 phần tử được sắp xếp Thời gian cần thiết là: 𝑂𝑂 (𝑛𝑛𝑝𝑝).

Trong pha thứ 5, bộ xử lí thứ 𝑖𝑖 trộn 𝑝𝑝 danh sách được sắp xếp Mỗi danh sách này được tạo ra bằng các sử dụng các phần tử chốt được chọn trong pha 3, trong trường hợp lý tưởng, mỗi

danh sách có kích thước 𝑛𝑛

𝑝𝑝2 mà sau khi trộn mỗi danh sách trên mỗi bộ xử lí sẽ

có kích cỡ 𝑛𝑛𝑝𝑝 Sử dụng thuật toán trộn trong trường hợp này yêu cầu thời gian

là 𝑂𝑂(𝑛𝑛𝑝𝑝log 𝑝𝑝)

Tổng thời gian xử lí song song

sẽ là:

𝑂𝑂 (𝑛𝑛𝑝𝑝 log𝑛𝑛𝑝𝑝 + 𝑝𝑝 +𝑛𝑛𝑝𝑝 +𝑛𝑛

𝑝𝑝 log 𝑝𝑝 )

= 𝑂𝑂(𝑛𝑛𝑝𝑝 (log𝑛𝑛𝑝𝑝) + log 𝑝𝑝 + 𝑝𝑝 + 1

= 𝑂𝑂(𝑛𝑛𝑝𝑝 𝑙𝑙𝑙𝑙𝑙𝑙 𝑛𝑛 + 𝑝𝑝 + 1)

Do đó ta có hệ số tăng tốc Speedup được tính bằng:

𝑆𝑆(𝑛𝑛, 𝑝𝑝) =𝑛𝑛 𝑛𝑛 log 𝑛𝑛

𝑝𝑝 (log𝑛𝑛𝑝𝑝 + log 𝑝𝑝 + 𝑝𝑝 + 1)

=log 𝑛𝑛 + 𝑝𝑝 + 1𝑝𝑝 log 𝑛𝑛

3.2 Độ phức tạp về không gian

Bộ xử lí gốc (0) chứa được mảng có kích cỡ 𝑛𝑛, mỗi bộ xử lí còn lại cần chứa được mảng kích cỡ 𝑛𝑛𝑝𝑝 Mỗi

Trong pha cuối cùng, bộ xử lí gốc tập hợp

bộ xử lí yêu cầu một cặp bộ nhớ đệm

có kích cỡ là 𝑝𝑝 [2]

3.3 Độ phức tạp truyền thông

Trong pha 2, tất cả 𝑛𝑛 phần tử được chia cắt

Trong pha 3, bộ xử lí gốc đọc 𝑝𝑝2

giá trị

Trong pha 4 bộ xử lí gốc truyền thông 𝑝𝑝 − 1 giá trị

Trong pha 5, mỗi bộ xử lí gửi 𝑛𝑛

𝑝𝑝 −𝑝𝑝𝑛𝑛2 phần tử, do đó, tổng số phần tử cần truyền thông là −𝑛𝑛𝑝𝑝

Trong pha cuối cùng, bộ xử lí gốc tập hợp 𝑛𝑛 − 𝑛𝑛𝑝𝑝 phần tử

Do đó tổng số giá trị cần truyền thông là :

𝑛𝑛 + 𝑝𝑝2+ 𝑝𝑝 − 1 + 𝑛𝑛 −𝑛𝑛

𝑝𝑝 + 𝑛𝑛 −

𝑛𝑛 𝑝𝑝

= 2𝑛𝑛 (1 − 1𝑝𝑝) + 𝑝𝑝2+ 𝑝𝑝

− 1

4 Mô phỏng thuật toán 4.1 Môi trường mô phỏng:

Quá trình mô phỏng được tiến hành trên hệ thống IBM Linux Cluster 2350:

- 8 node tính toán, mỗi node gồm 2 chip Intel Xeon Dual Core 3.2 GHz, 2 GB RAM, 1x36 GB HDD, DVD ROM Tổng năng lực tính toán của 8 node là khoảng 51.2 Gflops

- 2 node phục vụ lưu trữ (Storage1 và Storage2), mỗi node gồm

2 chip Intel Xeon Dual Core 3.2 GHz,

3 GB RAM, 4x72 GB HDD

- 1 node đóng vai trò quản lí (MGT) bao gồm chip Intel Xeon Dual Core 3.2 GHz, 3 GB RAM, 2x36 GBHDD

- Năng lực lưu trữ: thiết bị lưu trữ dùng chung EXP400 với 10x73 GB HDD SCSI 320 MBps 15KRpm, dùng

hệ thống chia sẻ file: GPFS cho Linux v2.3.0.5

- Các node chạy HĐH Redhat Enterprise Linux 3.0 và được kết nối với nhau thông qua mạng Gethernet

- Các thuật toán được lập trình bằng ngôn ngữ C++ sử dụng thư viện

phần tử

Do đó tổng số giá trị cần truyền thông là :

Trang 4

6 TẠP CHÍ KHOA HỌC

QUẢN LÝ VÀ CÔNG NGHỆ

bộ xử lí yêu cầu một cặp bộ nhớ đệm

có kích cỡ là 𝑝𝑝 [2]

3.3 Độ phức tạp truyền thông

Trong pha 2, tất cả 𝑛𝑛 phần tử

được chia cắt

Trong pha 3, bộ xử lí gốc đọc 𝑝𝑝2

giá trị

Trong pha 4 bộ xử lí gốc truyền

thông 𝑝𝑝 − 1 giá trị

Trong pha 5, mỗi bộ xử lí gửi

𝑛𝑛

𝑝𝑝− 𝑝𝑝𝑛𝑛2 phần tử, do đó, tổng số phần tử

cần truyền thông là −𝑛𝑛𝑝𝑝

Trong pha cuối cùng, bộ xử lí

gốc tập hợp 𝑛𝑛 − 𝑛𝑛𝑝𝑝 phần tử

Do đó tổng số giá trị cần truyền

thông là :

𝑛𝑛 + 𝑝𝑝2+ 𝑝𝑝 − 1 + 𝑛𝑛 −𝑛𝑛𝑝𝑝 + 𝑛𝑛 −𝑛𝑛𝑝𝑝

= 2𝑛𝑛 (1 −1𝑝𝑝) + 𝑝𝑝2+ 𝑝𝑝

− 1

4 Mô phỏng thuật toán

4.1 Môi trường mô phỏng:

Quá trình mô phỏng được tiến hành trên hệ thống IBM Linux Cluster 2350:

- 8 node tính toán, mỗi node gồm 2 chip Intel Xeon Dual Core 3.2 GHz, 2 GB RAM, 1x36 GB HDD, DVD ROM Tổng năng lực tính toán của 8 node là khoảng 51.2 Gflops

- 2 node phục vụ lưu trữ (Storage1 và Storage2), mỗi node gồm

2 chip Intel Xeon Dual Core 3.2 GHz,

3 GB RAM, 4x72 GB HDD

- 1 node đóng vai trò quản lí (MGT) bao gồm chip Intel Xeon Dual Core 3.2 GHz, 3 GB RAM, 2x36 GBHDD

- Năng lực lưu trữ: thiết bị lưu trữ dùng chung EXP400 với 10x73 GB HDD SCSI 320 MBps 15KRpm, dùng

hệ thống chia sẻ file: GPFS cho Linux v2.3.0.5

- Các node chạy HĐH Redhat Enterprise Linux 3.0 và được kết nối với nhau thông qua mạng Gethernet

- Các thuật toán được lập trình bằng ngôn ngữ C++ sử dụng thư viện

4 Mô phỏng thuật toán

4.1 Môi trường mô phỏng:

Quá trình mô phỏng được tiến hành trên

hệ thống IBM Linux Cluster 2350:

- 8 node tính toán, mỗi node gồm 2 chip

Intel Xeon Dual Core 3.2 GHz, 2 GB RAM,

1x36 GB HDD, DVD ROM Tổng năng lực tính

toán của 8 node là khoảng 51.2 Gflops.

- 2 node phục vụ lưu trữ (Storage1 và

Storage2), mỗi node gồm 2 chip Intel Xeon

Dual Core 3.2 GHz, 3 GB RAM, 4x72 GB

HDD.

- 1 node đóng vai trò quản lí (MGT) bao

gồm chip Intel Xeon Dual Core 3.2 GHz, 3 GB

RAM, 2x36 GBHDD.

- Năng lực lưu trữ: thiết bị lưu trữ dùng

chung EXP400 với 10x73 GB HDD SCSI 320 MBps 15KRpm, dùng hệ thống chia sẻ file: GPFS cho Linux v2.3.0.5.

- Các node chạy HĐH Redhat Enterprise Linux 3.0 và được kết nối với nhau thông qua mạng Gethernet.

- Các thuật toán được lập trình bằng ngôn ngữ C++ sử dụng thư viện lập trình song song MPI Mô phỏng nhằm mục đích kiểm tra sự song song hóa của thuật toán PSRS.

4.2 Phương pháp mô phỏng

Về nguyên tắc lấy số liệu mô phỏng:

- Cố định số phần tử của mảng thay đổi

số bộ xử lí sử dụng (2, 4, 8) chạy từ 5 đến 10 lần để đo thời gian và lấy giá trị trung bình các lần chạy.

- Thay đổi số phần tử của mảng (105, 106, 107) và chạy trên cùng số bộ xử lí, chạy từ 5 đến 10 lần để đo thời gian và lấy giá trị trung bình các lần chạy.

4.3 Kết quả mô phỏng 4.3.1 Kết quả mô phỏng khi chạy trên thuật toán PSRS

lập trình song song MPI Mô phỏng

nhằm mục đích kiểm tra sự song song

hóa của thuật toán PSRS

4.2 Phương pháp mô phỏng

Về nguyên tắc lấy số liệu mô

phỏng:

- Cố định số phần tử của mảng

thay đổi số bộ xử lí sử dụng (2, 4, 8)

chạy từ 5 đến 10 lần để đo thời gian và

lấy giá trị trung bình các lần chạy

- Thay đổi số phần tử của mảng (105, 106, 107) và chạy trên cùng số bộ

xử lí, chạy từ 5 đến 10 lần để đo thời gian và lấy giá trị trung bình các lần chạy

4.3 Kết quả mô phỏng 4.3.1 Kết quả mô phỏng khi chạy trên thuật toán PSRS

Input

Size T.sequency (seconds)

Thời gian chạy trung bình của thuật toán

PSRS(giây)

P: số bộ xử lí sử dụng, T.sequency: thời gian tuần tự (giây)

Input Size (kích thước dữ liệu đầu vào)

Qua mô phỏng, trước hết nhận

thấy rằng thuật toán PSRS hoàn toàn

có thể song song hóa được và khi chạy

chương trình có thể sử dụng số bộ xử lí

bất kì, không cần điều kiện ràng buộc

về số bộ xử lí sử dụng

Về kết quả mô phỏng, nhìn vào

bảng kết quả nhận thấy rằng, thời gian

chạy chương trình trong trường hợp xử

lí song song, với cả bốn trường hợp khi

cố định số phần tử của mảng và thay đổi số bộ xử lí sử dụng (2, 3, 4, 8 bộ

xử lí) kết quả đều cho thời gian chạy tốt hơn so với thời gian chạy tuần tự (sử dụng trên 1 bộ xử lí)

Cụ thể, trong trường hợp sử dụng 2 bộ xử lí so với thời gian chạy

Trang 5

TẠP CHÍ KHOA HỌC

QUẢN LÝ VÀ CÔNG NGHỆ

Qua mô phỏng, trước hết nhận thấy rằng

thuật toán PSRS hoàn toàn có thể song song

hóa được và khi chạy chương trình có thể sử

dụng số bộ xử lí bất kì, không cần điều kiện

ràng buộc về số bộ xử lí sử dụng.

Về kết quả mô phỏng, nhìn vào bảng kết

quả nhận thấy rằng, thời gian chạy chương

trình trong trường hợp xử lí song song, với cả

bốn trường hợp khi cố định số phần tử của

mảng và thay đổi số bộ xử lí sử dụng (2, 3, 4,

8 bộ xử lí) kết quả đều cho thời gian chạy tốt

hơn so với thời gian chạy tuần tự (sử dụng

trên 1 bộ xử lí).

Cụ thể, trong trường hợp sử dụng 2 bộ

xử lí so với thời gian chạy tuần tự, với số phần

tử n=100000 thì thời gian chạy song song

nhanh gấp 1.5 lần, với số phần tử n=1000000

thì thời gian chạy song song nhanh gấp 1.36

lần, với n=10000000 thì thời gian chạy song

song nhanh gấp 1.48 lần Trong trường hợp

sử dụng 4 bộ xử lí so với thời gian chạy tuần

tự, với số phần tử n=100000 thì thời gian

chạy song song nhanh gấp 3 lần, với số

phần tử n=1000000 thì thời gian chạy song song nhanh gấp 2.15 lần, với n=10000000 thì thời gian chạy song song nhanh gấp 2.16 lần Trường hợp cuối cùng, sử dụng 4 bộ xử

lí so với thời gian chạy tuần tự, với số phần

tử n=1000000 thì thời gian chạy song song nhanh gấp 1.95 lần, với n=10000000 thì thời gian chạy song song nhanh gấp 2.11 lần.

Rõ ràng, khi chạy trên đa bộ xử lí, thuật toán PSRS cho kết quả hiệu quả hơn nhiều lần so với chạy tuần tự Số bộ xử lí cho kết quả tốt nhất là 4 bộ xử lí Qua kết quả mô phỏng, phần nào giúp ta nhận thấy rằng, không phải

cứ tăng số bộ xử lí của hệ thống lên thì thuật toán sẽ đạt được hiệu quả tốt về thời gian Đến một lúc nào đó, khi tăng số bộ xử lí của

hệ thống lên nhưng độ hiệu quả không thể tăng lên được nữa Do đó luôn luôn cần xác định số bộ xử lí tốt nhất mà hệ thống nên sử dụng trong quá trình chạy chương trình Dưới đây là các biểu đồ thể hiện kết quả chạy thuật toán PSRS trên hệ thống song song:

Biều đồ 1 Biểu đồ so sánh thời gian chạy thuật toán PSRS

Dưới đây là các biểu đồ thể hiện

kết quả chạy thuật toán PSRS trên hệ

thống song song:

Biều đồ 1 Biểu đồ so sánh thời gian

chạy thuật toán PSRS

Biểu đồ 2 Biểu đồ so sánh thời gian

chạy của các BXL với cùng số phần tử N=10 6

5 Kết luận

Qua kết quả mô phỏng cũng như căn cứ vào độ phức tạp tính toán của thuật toán PSRS, có thể khẳng định

Biểu đồ so sánh thời gian chạy thuật toán PSRS

0

0.5

1

1.5

2

2.5

3

3.5

4

4.5

5

Số phần tử (nghìn)

N=2 N=4 N=8

Biểu đồ so sánh thời gian chạy của các bộ xử lý với cùng số phần tử

N=1000000

0.4186

0.3343

0.1947 0.2146

0.2755

0

0.05

0.1

0.15

0.2

0.25

0.3

0.35

0.4

0.45

Số bộ xử lý

Trang 6

8 TẠP CHÍ KHOA HỌC

QUẢN LÝ VÀ CÔNG NGHỆ

Dưới đây là các biểu đồ thể hiện

kết quả chạy thuật toán PSRS trên hệ

thống song song:

Biều đồ 1 Biểu đồ so sánh thời gian

chạy thuật toán PSRS

Biểu đồ 2 Biểu đồ so sánh thời gian

chạy của các BXL với cùng số phần tử N=10 6

5 Kết luận

Qua kết quả mô phỏng cũng như căn cứ vào độ phức tạp tính toán của thuật toán PSRS, có thể khẳng định

Biểu đồ so sánh thời gian chạy thuật toán PSRS

0 0.5 1 1.5 2 2.5 3 3.5 4 4.5 5

Số phần tử (nghìn)

N=2 N=4 N=8

Biểu đồ so sánh thời gian chạy của các bộ xử lý với cùng số phần tử

N=1000000

0.4186

0.3343

0.1947 0.2146

0.2755

0 0.05

0.1

0.15

0.2

0.25

0.3

0.35

0.4

0.45

Số bộ xử lý

Biểu đồ 2 Biểu đồ so sánh thời gian chạy của các BXL với cùng số phần tử N=10 6

5 Kết luận

Qua kết quả mô phỏng cũng như căn

cứ vào độ phức tạp tính toán của thuật toán

PSRS, có thể khẳng định rằng, PSRS là một

trong những thuật toán sắp xếp dữ liệu trên

hệ thống song song đạt hiệu quả cao vượt

trội so với hệ thống xử lý tuần tự Thuật toán

này có thể được áp dụng rộng rãi trong các

ứng dụng xử lý song song, là bước tiền đề để

nâng cao hiệu quả tìm kiếm dữ liệu trên các

hệ thống dữ liệu lớn (Bigdata) trong giai đoạn

hiện nay Trong thời gian tiếp theo tác giả sẽ

cải tiến thuật toán PSRS để cho kết quả tốt

hơn.

TÀI LIỆU THAM KHẢO

1 Grama A., A Gupta, G Karypis, V Kumar (2003), “Introduction to Parallel Computing”, Addison Wesley.

2 Xiaobo Li, Paul Lu, Jonathan Schaeffer, John Shillington, Pok Sze Wong (2004), “On the Versatility of parallel sorting by Regular Sampling”, University of Alberta, EdmonTon, Alberta, Canada.

Ngày đăng: 17/03/2022, 09:31

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

🧩 Sản phẩm bạn có thể quan tâm

w