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 1TẠ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 24 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 3TẠ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 46 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 5TẠ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 68 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.