Có bất kỳ vấn đề / thuật toán nổi tiếng nào trong điện toán khoa học không thể được tăng tốc bằng cách song song hóa


27

Có bất kỳ vấn đề / thuật toán nổi tiếng nào trong điện toán khoa học không thể được tăng tốc bằng cách song song hóa không? Dường như với tôi trong khi đọc sách về CUDA rằng hầu hết mọi thứ đều có thể.


Tìm kiếm nhị phân không thể được tăng tốc (đáng kể, theo yếu tố), ngay cả khi xem xét phân cấp bộ nhớ.


3
@Anycorn Không, Gram-Schmidt cổ điển nhìn trái và Gram-Schmidt biến đổi bên phải hoạt động tốt song song. Có nhiều thuật toán QR song song khác bao gồm TSQR phổ biến gần đây.
Jed Brown

@Raphael: Tôi nghĩ rằng ist có thể tăng tốc tìm kiếm nhị phân bằng bộ xử lý log (n), n = #. Thay vì o chia khoảng tìm kiếm thành các phần và kiểm tra nơi tiếp tục, hãy chia khoảng thời gian thành n phần. Có lẽ có nhiều cách hiệu quả hơn, tôi không biết.
phép lạ173

Câu trả lời:


32

Vấn đề trọng tâm là chiều dài của con đường quan trọng so với tổng số tiền tính toán T . Nếu C tỷ lệ thuận với T , thì song song cung cấp tối đa tốc độ không đổi. Nếu C nhỏ hơn tiệm cận so với T , có chỗ cho sự song song hơn khi kích thước bài toán tăng. Đối với các thuật toán trong đó T là đa thức ở kích thước đầu vào N , trường hợp tốt nhất là C log T vì rất ít đại lượng hữu ích có thể được tính trong thời gian ngắn hơn thời gian logarit.CTCTCTTNClogT

Ví dụ

  • cho một giải pháp tam giác bằng thuật toán tiêu chuẩn. Mọi hoạt động đều phụ thuộc vào hoạt động hoàn thành trước đó, do đó không có cơ hội song song. Các vấn đề về siêu âm có thể được giải quyết trong thời gian logarit trên máy tính song song bằng cách sử dụng giải trực tiếp phân tích lồng nhau, phân tách miền đa cấp hoặc đa hàm với các hàm cơ bản được xây dựng bằng cách sử dụng phần mở rộng hài hòa (ba thuật toán này khác biệt về nhiều chiều, nhưng có thể trùng khớp chính xác trong 1D).C=T
  • Một rậm hạ-tam giác giải quyết với một ma trận có T = N = O ( m 2 ) , nhưng con đường quan trọng là chỉ có C = m = m×mT=N=O(m2) , vì vậy một số song song có thể có lợi.C=m=T
  • Multigrid và FMM cả hai đều có , với một con đường quan trọng của chiều dài C = log T .T=NC=logT
  • Tuyên truyền sóng rõ ràng trong một thời gian trên lưới thường xuyên của các tên miền ( 0 , 1 ) d đòi hỏi k = τ / Δ t ~ τ N 1 / d bước thời gian (đối với sự ổn định), do đó con đường quan trọng là ít nhất C = k . Tổng khối lượng công việc là T = k N = τ N ( d + 1 ) / d . Số lượng bộ xử lý hữu ích tối đa là P = Tτ(0,1)dk=τ/ΔtτN1/dC=kT=kN=τN(d+1)/d , yếu tố còn lại N 1 / d không thể được phục hồi bằng cách tăng song song.P=T/C=NN1/d

Sự phức tạp về hình thức

Lớp phức tạp NC đặc trưng cho những vấn đề có thể được giải quyết song song một cách hiệu quả (nghĩa là trong thời gian đa bội). Không biết liệu , nhưng nó được giả thuyết rộng rãi là sai. Nếu đây thực sự là trường hợp, thì P-đầy đủ đặc trưng cho những vấn đề "vốn có tuần tự" và không thể được tăng tốc đáng kể bằng cách song song.NC=P


13

Để đưa ra một khía cạnh lý thuyết cho điều này, NC được định nghĩa là lớp phức tạp có thể giải được trong thời gian trên một hệ thống có bộ xử lý song song O ( n k ) . Vẫn chưa biết liệuO(logcn)O(nk) (mặc dù hầu hết mọi người nghi ngờ là không) trong đó P là tập hợp các vấn đề có thể giải quyết được trong thời gian đa thức. Các vấn đề "khó nhất" để song song hóa được gọi làcác vấn đề P -complete theo nghĩa là mọi vấn đề trong P có thể được giảm xuốngthành vấn đề P -complete thông quaP=NCPPPPGiảm N C. Nếu bạn chỉ ra rằng mộtvấn đề P -completeduy nhấtnằm ở N C , bạn chứng minh rằng P = N C (mặc dù điều đó có thể sai như đã đề cập ở trên).NCPNCP=NC

Vì vậy, bất kỳ vấn đề nào là -complete sẽ khó có thể song song hóa (mặc dù vẫn có thể tăng tốc lớn). Một vấn đề P -complete mà chúng tôi không có tốc độ tăng yếu tố liên tục rất tốt là Lập trình tuyến tính (xem nhận xét này về trao đổi OR).PP


9

Bắt đầu bằng cách lách luật của Amdahl . Về cơ bản bất cứ điều gì với một số lượng lớn các bước nối tiếp sẽ được hưởng lợi không đáng kể từ sự song song. Một vài ví dụ bao gồm phân tích cú pháp, regex và nén hầu hết tỷ lệ cao.

Bên cạnh đó, vấn đề chính thường là một nút cổ chai trong băng thông bộ nhớ. Đặc biệt với hầu hết các GPU của flop lý thuyết của bạn vượt xa số lượng số dấu phẩy động bạn có thể nhận được cho ALU của mình, vì các thuật toán với cường độ số học thấp (flops / cache-miss) sẽ dành phần lớn thời gian chờ đợi trên RAM.

Cuối cùng, bất cứ khi nào một đoạn mã yêu cầu phân nhánh, không có khả năng có được hiệu năng tốt, vì logic của ALU thường vượt trội hơn.

Tóm lại, một ví dụ thực sự đơn giản về thứ gì đó khó có thể đạt được tốc độ tăng từ GPU chỉ đơn giản là đếm số không trong một số nguyên, vì bạn có thể phải phân nhánh thường xuyên, nhiều nhất là thực hiện 1 thao tác (tăng theo một) trong trường hợp bạn tìm thấy số 0 và tạo ít nhất một bộ nhớ cho mỗi thao tác.

Một ví dụ miễn phí cho vấn đề phân nhánh là tính toán một vectơ là tổng tích lũy của một vectơ khác. ([1,2,1] -> [1,3,4])

Tôi không biết nếu những điều này được coi là "nổi tiếng" nhưng chắc chắn có một số lượng lớn các vấn đề mà điện toán song song sẽ không giúp bạn.


3
"Ví dụ miễn phí phân nhánh" mà bạn đã đưa ra là tiền tố-sum, thực sự có thuật toán song song tốt: http.developer.nvidia.com/GPUGems3/gpugems3_ch39.html Tính toán số 0 nên có hiệu quả vì những lý do tương tự. Không có cách nào xung quanh cường độ số học, mặc dù ...
Max Hutchinson

Mát mẻ. Tôi đứng trên cái đó.
meawoppl

8

Phương pháp diễu hành nhanh (nổi tiếng) để giải phương trình Eikonal có thể được tăng tốc bằng cách song song hóa. Có các phương pháp khác (ví dụ như các phương pháp quét nhanh) để giải phương trình Eikonal dễ điều chỉnh song song hơn, nhưng ngay cả ở đây, khả năng tăng tốc (song song) bị hạn chế.

Vấn đề với phương trình Eikonal là luồng thông tin phụ thuộc vào chính giải pháp. Nói một cách lỏng lẻo, thông tin chảy dọc theo các đặc tính (tức là các tia sáng trong quang học), nhưng các đặc tính phụ thuộc vào chính giải pháp. Và luồng thông tin cho phương trình Eikonal rời rạc thậm chí còn tồi tệ hơn, đòi hỏi các xấp xỉ bổ sung (như hiện diện ngầm trong các phương pháp quét nhanh) nếu muốn tăng tốc độ song song.

Để thấy những khó khăn cho việc song song hóa, hãy tưởng tượng một mê cung đẹp như trong một số ví dụ trên trang web của Sethian . Số lượng ô trên đường đi ngắn nhất qua mê cung (có thể) là giới hạn dưới cho số bước / lần lặp tối thiểu của bất kỳ thuật toán (song song) nào giải quyết vấn đề tương ứng.

(Tôi viết "(có lẽ) là", bởi vì giới hạn dưới rất khó chứng minh và thường yêu cầu một số giả định hợp lý về các hoạt động được sử dụng bởi một thuật toán.)


Ví dụ đẹp, nhưng tôi không tin yêu cầu của bạn bị ràng buộc thấp hơn. Cụ thể, các phương pháp multigrid có thể được sử dụng để giải phương trình eikonal. Như với multigrid cho Helmholtz tần số cao, các thách thức chủ yếu là thiết kế các không gian thô phù hợp. Trong trường hợp mê cung, chiến lược tổng hợp biểu đồ sẽ có hiệu quả, với biểu diễn thô được xác định bằng cách giải quyết các vấn đề cục bộ (do đó độc lập) cho các phân đoạn của mê cung.
Jed Brown

Nói chung khi các phương pháp multigrid làm tốt, điều đó có nghĩa là mức độ chi tiết của vấn đề thấp hơn mức độ giải thích và một "lượng câu trả lời đúng" không cân xứng đang đến từ bước giải quyết khóa học. Chỉ là một quan sát, nhưng ràng buộc thấp hơn về loại điều đó là khó khăn!
meawoppl

@JedBrown Từ góc độ thực tế, multigrid cho tần số cao Helmholtz khá khó khăn, trái với những gì bình luận của bạn dường như ngụ ý. Và sử dụng multigrid cho phương trình eikonal là "không phổ biến", để nói rằng ít nhất. Nhưng tôi thấy sự phản đối "về mặt lý thuyết" của bạn đối với giới hạn dưới được đề xuất: Thời gian bù từ các điểm khác nhau trong mê cung có thể được tính trước khi thời điểm đạt đến những điểm này được biết và được thêm song song sau khi có thông tin bị thiếu. Nhưng trong thực tế, những người giải quyết song song với mục đích chung rất vui nếu họ thực sự đến gần với giới hạn.
Thomas Klimpel

Tôi không có ý ám chỉ rằng nó rất dễ, các không gian thô của tia sóng thực sự rất kỹ thuật. Nhưng, tôi nghĩ rằng chúng tôi đồng ý rằng đã có cơ hội song song trong các khu vực mở, trong khi trong "mê cung" hẹp (phơi bày rất ít sự song song với các phương pháp tiêu chuẩn), vấn đề nâng cấp có thể dễ dàng hơn.
Jed Brown

@JedBrown Slide 39 trên www2.ts.ctw.utwente.nl/venner/PRESENTATION/MSc_Verburg.pdf (từ 2010) cho biết những điều như "Mở rộng bộ giải từ 2D sang 3D" và "Phương pháp thích ứng với các vấn đề với sự thay đổi mạnh mẽ". Vì vậy, multigrid tia sóng có thể đầy hứa hẹn, nhưng "chưa trưởng thành" dường như phù hợp hơn "rất kỹ thuật" để mô tả các vấn đề hiện tại của nó. Và nó không thực sự là một bộ giải Helmholtz tần số cao (bởi vì nó là một bộ giải "toàn sóng"). Có những loại khác là bộ giải Helmholtz "đủ độ chín" (bộ giải "sóng toàn phần"), nhưng ngay cả những bộ này vẫn là "nghiên cứu tích cực".
Thomas Klimpel

1

Một loại vấn đề khác khó có thể song song trong thực tế là các vấn đề nhạy cảm với các lỗi làm tròn, trong đó độ ổn định số đạt được bằng cách tuần tự hóa.

Ví dụ, xem xét quá trình Gram Gram Schmidt và sửa đổi nối tiếp của nó. Thuật toán hoạt động với các vectơ, vì vậy bạn có thể sử dụng các phép toán vectơ song song, nhưng điều đó không mở rộng tốt. Nếu số lượng vectơ lớn và kích thước vectơ nhỏ, sử dụng song song cổ điển GramTHER Schmidt và tái cấu trúc hóa có thể ổn định và nhanh hơn so với Gram Gram Schmidt đã sửa đổi, mặc dù nó liên quan đến việc thực hiện nhiều lần hơn.

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.