Làm thế nào để thu nhỏ kết quả phức tạp song song để liên tục nhiều lõi?


20

Tôi đã gặp vấn đề khi chấp nhận quan điểm lý thuyết phức tạp về "giải quyết hiệu quả bằng thuật toán song song" được đưa ra bởi lớp NC :

NC là lớp các vấn đề có thể được giải quyết bằng thuật toán song song trong thời gian trên bộ xử lý với .p ( n ) O ( n k ) c , k NO(logcn)p(n)O(nk)c,kN

Chúng ta có thể giả định một PRAM .

Vấn đề của tôi là điều này dường như không nói nhiều về máy móc "thực", đó là những máy có số lượng bộ xử lý hữu hạn. Bây giờ tôi được thông báo rằng "chúng ta đã biết" rằng chúng ta có thể "mô phỏng" một cách hiệu quả thuật toán bộ xử lý bộ xử lý .p NO(nk)pN

"Hiệu quả" nghĩa là gì ở đây? Đây là văn hóa dân gian hay có một định lý nghiêm ngặt định lượng chi phí gây ra bởi mô phỏng?

Điều tôi sợ điều đó xảy ra là tôi có một vấn đề có thuật toán tuần tự và cũng là thuật toán song song "hiệu quả", khi được mô phỏng trên bộ xử lý , cũng mất thời gian (mà là tất cả những gì có thể được mong đợi ở mức độ phân tích chi tiết này nếu thuật toán tuần tự là tối ưu không có triệu chứng). Trong trường hợp này, không có sự tăng tốc nào xa như chúng ta có thể thấy; trong thực tế, thuật toán song song mô phỏng có thể chậm hơn thuật toán tuần tự. Đó là tôi thực sự đang tìm kiếm các tuyên bố chính xác hơn -ound (hoặc một tuyên bố vắng mặt của các kết quả như vậy).p O ( n k ) OO(nk)pO(nk)O


Định lý Brent?
cic

Ý bạn là ? Nếu vậy, điều này là (afaik) chỉ áp dụng trong một số trường hợp nhất định và cũng không ngay lập tức cho phép dịch thời gian chạy. Hoặc nếu có, xin vui lòng giải thích trong một câu trả lời. Tp<Wp+D
Raphael

NC trả lời câu hỏi "có thể đánh đổi phần cứng nhiều hơn trong thời gian ngắn hơn không?" Bạn có thể muốn giới hạn bản thân với phần cứng không đổi và điều này tương tự như giới hạn bản thân vào bộ nhớ không đổi, một mô hình tốt hơn về một số vấn đề. Để sử dụng thực tế, hãy xem các bộ bổ sung lookhead, phần cứng nhiều hơn để việc thêm bit được thực hiện trong . O ( N )NO(N)
AProgrammer

Câu trả lời:


13

Nếu bạn cho rằng số lượng bộ xử lý bị giới hạn bởi một hằng số, thì bạn đã đúng rằng một vấn đề trong NC không có ý nghĩa nhiều trong thực tế. Vì bất kỳ thuật toán trên một PRAM với k xử lý và t thời gian song song có thể được mô phỏng với một đơn vi xử lý RAM trong thời gian O ( kt ) thời gian, thời gian song song và thời gian tuần tự có thể khác nhau chỉ bởi một yếu tố không đổi nếu k là một hằng số.

Tuy nhiên, nếu bạn cho rằng bạn có thể chuẩn bị một máy tính có nhiều bộ xử lý hơn khi kích thước đầu vào tăng lên, thì vấn đề ở NC có nghĩa là miễn là bạn có thể chuẩn bị nhiều bộ xử lý hơn, thời gian chạy sẽ rất nhanh, hay chính xác hơn là polylogarithmic trong kích thước đầu vào. Nếu bạn cho rằng giả định này là không thực tế, hãy so sánh nó với giả định về bộ nhớ không giới hạn: máy tính thực tế chỉ có dung lượng hữu hạn, nhưng trong nghiên cứu về thuật toán và độ phức tạp, chúng ta hầu như luôn cho rằng một thiết bị tính toán không có giá trị trên không đổi ràng buộc vào không gian. Trong thực tế, điều này có nghĩa là chúng ta có thể chuẩn bị một máy tính có nhiều bộ nhớ hơn khi kích thước đầu vào tăng lên, đó là cách chúng ta thường sử dụng máy tính trong thế giới thực. NC mô hình một tình huống tương tự trong tính toán song song.


1
1) Có, song song trên nhiều lõi liên tục chỉ có thể mang lại tốc độ không đổi. Đó là cố hữu và đáng buồn ẩn trong -terms. Câu hỏi thú vị (imho) là: tôi có thể tăng tốc (tối ưu) , hoặc chỉ hoặc không? 2) Mặc dù giả định về bộ nhớ vô hạn có thể được chứng minh bằng sự sẵn có của rất nhiều RAM (và về mặt kỹ thuật, bạn có thể thêm đĩa cứng), nhưng điều này thường không đúng với bộ xử lý. Máy móc thông thường (cá nhân) hiện nay có 16 lõi trở xuống. Nói cách khác, bạn có thể sử dụng kết quả "bình thường" với kích thước sự cố có liên quan, nhiều kết quả song song chỉ tối đa . k k / 2 k - 1 n 20Okk/2k1n20
Raphael

4
@Raphael: Câu hỏi liệu một vấn đề nhất định có thuộc về NC hay không không mô hình hóa câu hỏi của bạn. Tôi không nói rằng câu hỏi của bạn là không thú vị; Tôi chỉ nói rằng NC không phải là lớp phức tạp phù hợp để mô hình hóa điều đó.
Tsuyoshi Ito

Tôi thực sự hạnh phúc khi nghe điều đó; một người tuyên bố khác, mặc dù. Không nhất thiết với NC nhưng với kết quả lý thuyết phức tạp nói chung. Làm thế nào là nó với các lớp khác?
Raphael

Một sự điều chỉnh: Một vấn đề đang xảy ra ở NC có nghĩa là thời gian chạy là đa bội nếu số lượng bộ xử lý là một đa thức đủ lớn trong kích thước đầu vào. Trong kịch bản thực tế hơn có thể tranh cãi khi số lượng bộ xử lý là một đa thức cố định như hoặc một hàm không cố định chậm hơn như , tư cách thành viên trong NC không chính thức ngụ ý bất cứ điều gì tại tất cả các. O(logn)O(n)O(logn)
JeffE

@JeffE: Đó không phải là một sự điều chỉnh. Tôi chỉ viết những thứ khác chuẩn bị nhiều bộ xử lý mà không mang ý nghĩa khắt khe của nó (vì tôi nghĩ rằng làm như vậy sẽ làm lu mờ quan điểm).
Tsuyoshi Ito

10

Tôi đồng ý với bạn rằng không phải là cách tốt nhất để mô tả các thuật toán song song hiệu quả.NC

Thật vậy, theo định nghĩa NC cũng bao gồm rất nhiều vấn đề không thể song song hiệu quả. Một ví dụ phổ biến là tìm kiếm nhị phân song song. Vấn đề phát sinh do tìm kiếm nhị phân song song có độ phức tạp thời gian đa giác ngay cả với . Bất kỳ thuật toán tuần tự nào yêu cầu tại hầu hết thời gian logarit trong trường hợp xấu nhất là ở bất kể tính khả thi song song của nó.N Cp=1NC

Nhưng chờ đợi, có nhiều hơn nữa.

NC thuật toán giả định các máy song song có số lượng bộ xử lý đa thức để giải quyết trong các vấn đề thời gian đa lượng có kích thước vừa phải. Tuy nhiên, trong thực tế, chúng tôi sử dụng các máy có kích thước vừa phải (về bộ xử lý) để giải quyết các vấn đề lớn . Số lượng bộ xử lý có xu hướng là đa thức phụ, thậm chí là tuyến tính.

Cuối cùng, có các vấn đề trong với thời gian song song tuyến tính đó, những vấn đề này không thuộc về . Bây giờ, các hàm tuyến tính có thể có một hành vi tiệm cận có liên quan chỉ đối với các giá trị lớn không chính thức của , và thay vào đó có thể ít tiến bộ hơn đối với các giá trị thực tế của . Ví dụ: cho . Theo sau các thuật toán thời gian song song tuyến tính có thể chạy nhanh hơn các thuật toán .O ( n ε ) , 0 < ε < 1 N C n n PO(nϵ),0<ϵ<1NCnnn0,5×109NCn<lg3nn0.5×109NC

Trong một câu trả lời, người ta đã quan sát rằng "Trong thực tế, điều này có nghĩa là chúng ta có thể chuẩn bị một máy tính có nhiều bộ nhớ hơn khi kích thước đầu vào tăng lên, đó là cách chúng ta thường sử dụng máy tính trong thế giới thực. NC mô hình một tình huống tương tự trong tính toán song song ".

Tôi một phần đồng ý với quan điểm này. Chúng tôi mua một máy tính song song mới có nhiều bộ nhớ hơn khi siêu máy tính cũ ngừng hoạt động vì các chip DRAM ít tốn kém hơn theo thời gian và để cân bằng phần nào máy tính song song liên quan đến các thành phần chính của nó (bộ xử lý, bộ nhớ, kết nối, v.v.).

Tuy nhiên, vì bộ nhớ là tài nguyên hữu hạn, đã có rất nhiều nghiên cứu về việc sử dụng nó một cách hiệu quả, mà không yêu cầu thêm bộ nhớ vào siêu máy tính để giải quyết các vấn đề lớn hơn. Chẳng hạn, Sun và Ni đã đề xuất khái niệm tăng tốc giới hạn bộ nhớ và Quinn đã đề xuất hàm gọi là khả năng mở rộng để đo lượng bộ nhớ trên mỗi bộ xử lý phải tăng lên như thế nào để duy trì mức hiệu quả không đổi. Nói chung, vì chi phí hoạt động song song tăng khi số lượng bộ xử lý tăng, chúng tôi duy trì hiệu quả tăng kích thước của vấn đề đang được giải quyết. Nhưng kích thước bài toán tối đa bị giới hạn bởi số lượng bộ nhớ chính (là tuyến tính tính theon pp). Hàm khả năng mở rộng sử dụng hàm đẳng hướng và một hàm khác biểu thị lượng bộ nhớ cần thiết để lưu trữ một vấn đề về kích thước để xác định mức độ bộ nhớ trên mỗi bộ xử lý phải tăng lên để duy trì mức hiệu quả không đổi. Khi hàm này là một hằng số, thuật toán song song hoàn toàn có thể mở rộng (từ việc sử dụng phối cảnh bộ nhớ). Trong khi bộ nhớ có sẵn, có thể duy trì cùng mức hiệu quả bằng cách tăng kích thước bài toán. Tuy nhiên, do bộ nhớ được sử dụng cho mỗi bộ xử lý tăng tuyến tính với , nên đến một lúc nào đó, giá trị này sẽ đạt đến dung lượng bộ nhớ của hệ thống. Hiệu quả không thể được duy trì khi số lượng bộ xử lý tăng vượt quá điểm này.np

Do đó, ngày càng quan trọng để thiết kế các thuật toán song song có thể mở rộng bộ nhớ, vì chúng là thực tế cho các vấn đề lớn.

n3n

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.