Tăng tốc theo cấp số nhân trong bộ nhớ ngoài


15

Lý lịch

Bộ nhớ ngoài, hoặc mô hình DAM, xác định chi phí của thuật toán bằng số lượng I / O mà nó thực hiện (về cơ bản, số lượng bộ nhớ cache bị mất). Các thời gian chạy này thường được đưa ra về , kích thước của bộ nhớ và B , số lượng từ có thể được chuyển vào bộ nhớ cùng một lúc. Đôi khi LZ được sử dụng cho BM tương ứng. MBLZBM

Ví dụ, phân loại đòi hỏi một chi phí và phép nhân ma trận ngây thơ đòi hỏi Θ ( n 3 / B Θ(N/BlogM/BN/B). Θ(n3/BM)

Mô hình này được sử dụng để phân tích "thuật toán bộ nhớ cache không biết gì", mà không có kiến thức về hoặc M . Nói chung, mục tiêu là để thuật toán quên bộ nhớ cache thực hiện tối ưu trong mô hình bộ nhớ ngoài; điều này không phải lúc nào cũng có thể, như trong bài toán Hoán vị chẳng hạn (thể hiện trong Brodal, Faderberg 2003 ). Xem bài viết này của Erik Demaine để được giải thích thêm về các thuật toán lãng quên bộ nhớ cache, bao gồm các cuộc thảo luận về sắp xếp và nhân ma trận.BM

Chúng ta có thể thấy rằng việc thay đổi gây ra sự tăng tốc logarit để sắp xếp và tăng tốc đa thức cho phép nhân ma trận. (Kết quả này có nguồn gốc từ Hong, Kung 1981 và thực sự có trước cả sự lãng quên bộ nhớ cache và việc chính thức hóa mô hình bộ nhớ ngoài).M

Câu hỏi của tôi là:

Có trường hợp nào tăng tốc theo cấp số nhân trong không? Thời gian chạy sẽ là một cái gì đó như f ( N , B ) / 2 O ( M ) . Tôi đặc biệt quan tâm đến một thuật toán hoặc cấu trúc dữ liệu lãng quên bộ nhớ cache phù hợp với mô tả này nhưng sẽ hài lòng với cấu trúc dữ liệu / thuật toán nhận biết bộ đệm hoặc thậm chí là một giới hạn thấp nhất được biết đến nhiều nhất.Mf(N,B)/2O(M)

Thông thường, trong hầu hết các mô hình, kích thước từ nếu N là kích thước đầu vào và rõ ràng M > w . Sau đó, sự tăng tốc của 2 M cho sự tăng tốc đa thức trong N . Điều này khiến tôi tin rằng nếu vấn đề tôi đang tìm kiếm tồn tại, thì đó không phải là đa thức. (Nếu không, chúng ta có thể thay đổi kích thước bộ đệm bằng một hằng số để có được số lượng I / O không đổi, điều này dường như là không thể).w=Ω(logN)NM>w2MN


có thể đoán, nhưng ? tìm thấy một trường hợp được đưa ra như speedup B p o l y l o g ( B ) , đủ không? N=Bpolylog(B)
vzn

Thật không may, đó là về mặt cho mục đích của tôi, thật không may. Tôi muốn được tham khảo mặc dù. M
SamM

wikipedia về các thuật toán lãng quên bộ nhớ cache . fyi có một số tinh tế trong ký hiệu lĩnh vực này. p7 chú thích của Demaine nói trong lĩnh vực này, là kích thước của vấn đề & đôi khi n = N / B trong đó n là số khối, "nhưng ký hiệu chữ thường dường như không còn được ưa chuộng". bạn sử dụng n ở trên và thay vào đó N rõ ràng là cả kích thước đầu vào. nghĩ rằng ít nhất bạn nên tiêu chuẩn hóa trong câu hỏi của bạn. Nn=N/BnnN
vzn

Tôi chỉnh sửa nó cho thống nhất. là kích thước của đầu vào, và n chỉ được sử dụng cho phép nhân ma trận vì thời gian chạy cho vấn đề đó thường được quy định tại điều khoản của một n × n ma trận (tức là N = n 2 )Nnn×nN=n2
Samm

không thấy trường hợp này sau khi quét tài liệu. có lẽ không có ref như vậy? có lẽ có một số trường hợp được thực hiện rằng bất kỳ thuật toán như vậy có thể phức tạp và do đó khó phân tích về mặt lý thuyết để có được sự tăng tốc như vậy ...? hoặc có lẽ nó sẽ phải bị chiếm đoạt ...? hoặc, có lẽ nó là không thể? có thể có một ý tưởng rằng truy cập ngẫu nhiên vào bộ nhớ là trường hợp xấu nhất có thể? Có vẻ như sự gia tăng tốc độ là tuyến tính trong cho trường hợp đó ...? hoặc, có thể một số mô hình fractal truy cập vào bộ nhớ là trường hợp xấu nhất? dòng nghiên cứu này chỉ mới hơn một thập kỷ ....M
vzn

Câu trả lời:


3

Tôi không chắc chắn tôi đã hiểu câu hỏi. Nhưng đối với tôi, theo giả định rằng chứa các vấn đề đòi hỏi thời gian theo cấp số nhân, các vấn đề đó sẽ đáp ứng các yêu cầu của bạn, vì nếu MO ( log N ), bạn sẽ cần một số lượng hoạt động I / O theo cấp số nhân ( vì bạn không thể "ở lại" trong cùng một khối bộ nhớ có kích thước O ( log N ) nhiều hơn số bước đa thức mà không đi vào một chu kỳ) và nếu M = NPSPACEMO(logN)O(logN)M=Nbạn sẽ chỉ cần một số lượng hoạt động I / O tuyến tính. Ngoài ra, liên quan đến quan sát của bạn rằng một vấn đề như vậy không thể thuộc về , điều đó đúng nếu việc tăng tốc phải giữ cho các giá trị của MΩ ( N ) (vì điều đó có nghĩa là chúng ta có số lượng hoạt động theo cấp số nhân). Nhưng nếu việc tăng tốc chỉ áp dụng cho các giá trị nhỏ hơn của M , theo trực giác tôi tin rằng điều này không đúng, vì tôi cảm thấy có thể thiết kế một vấn đề trong thực tế là ghép các vấn đề nhỏ hơn có kích thước O ( log N ) mỗi yêu cầu theo cấp số nhân thời gian ở kích thước của chính nó và số lượng hoạt động I / O theo cấp số nhân (nghĩa là, p oPMΩ(N)MO(logN) , vì p o l y ( N ) là số mũ theo O ( log N ) ). Trong thực tế tôi tin rằng P S P A C Các vấn đề E -complete như T Q B F đáp ứng điều kiện của bạn.poly(N)poly(N)O(logN)PSPACETQBF


Tôi sợ tôi không làm theo một số lập luận của bạn. Nếu , bất kỳ vấn đề trong bộ nhớ bên ngoài là tầm thường. Như tôi đã đề cập, M = O ( log N ) hơi ngớ ngẩn vì điều đó có nghĩa là bộ nhớ chỉ có một số lượng từ không đổi (có thể chứ không phải cách kiểm tra bộ nhớ ngoài nói chung). Tôi thấy những gì bạn đang nói rằng có lợi ích theo cấp số nhân, nhưng điều đó không nói lên điều gì về các giá trị trung gian. Ví dụ: Phân vùng tối ưu trong bộ nhớ ngoài là tối thiểu của hai thuật ngữ (về cơ bản nếu mọi thứ phù hợp với bộ nhớ, chúng tôi sẽ làm một cái gì đó hoàn toàn khác so với nếu không). Bạn có thể loại trừ điều đó? M=Ω(N)M=O(logN)
SamM

1
Tôi không hiểu tại sao bất kỳ vấn đề trong bộ nhớ bên ngoài là tầm thường nếu . Nếu M = N / 2 và thuật toán mất thời gian theo cấp số nhân, bạn có thể bị buộc phải trao đổi qua lại giữa (có thể nói) hai nửa bộ nhớ với số lần theo cấp số nhân. M=Ω(N)M=N/2
dùng8477

Ah, tất nhiên bạn đúng về yếu tố không đổi là quan trọng. Điều đó làm cho rất nhiều ý nghĩa; đây chắc chắn là một điểm khởi đầu tốt
SamM

Tôi không có bất kỳ đối số cho các giá trị trung gian. Ở mức độ hời hợt, tôi đoán rằng một số thuật toán quay lui sẽ có sự phụ thuộc theo cấp số nhân vào kích thước bộ nhớ vì các thao tác I / O sẽ được yêu cầu tại các nút có độ sâu thấp hơn trong cây tìm kiếm. Sự phụ thuộc này sẽ áp dụng cho các giá trị trung gian. Điều này không nói gì về sự phức tạp vốn có của vấn đề, tất nhiên. Ngoài ra, nếu bạn có , các chuồng bồ câu (đi xe đạp) lập luận đưa ra ở trên sẽ vẫn mang lại mức tăng T ( N ) / 2 M nơi T ( N ) là độ phức tạp của vấn đề.M=ω(logN)T(N)/2MT(N)
dùng8477

-4

câu hỏi này xuất hiện để xoay xở vào terra incognita tức là lãnh thổ chưa được khám phá. sau một số suy nghĩ và xem xét ở đây là một số suy nghĩ / ý tưởng về câu hỏi rõ ràng rất khó khăn / tinh tế này hy vọng sẽ thông minh nhưng không có nghĩa là dứt khoát.

Demain người bạn trích dẫn viết, "ý tưởng nguyên tắc [của các thuật toán lãng quên bộ nhớ cache] rất đơn giản: thiết kế các thuật toán bộ nhớ ngoài mà không biết M. Nhưng ý tưởng đơn giản này có một số hậu quả mạnh mẽ đáng ngạc nhiên."BM

nó cũng có vẻ có ý nghĩa tinh tế đáng ngạc nhiên. có vẻ khó phân tích mô hình này cho hành vi cực đoan và dường như chưa có ai thực hiện điều này cho đến nay. có một số khảo sát và họ dường như khảo sát toàn bộ lĩnh vực cho đến nay. Điều này không có gì đáng ngạc nhiên khi lĩnh vực này chỉ mới ~ 1 thập kỷ.

  • mô hình dường như chưa được dịch sang các máy Turing, nơi có thể phân tích chặt chẽ hơn / chính thức / lý thuyết / tổng quát / tiêu chuẩn. toàn bộ khái niệm về ký hiệu Big-Oh và các hàm ý và trực giác của nó như không liên quan đến các hằng số không nhất thiết phải tự động mang trong khu vực các thuật toán lãng quên bộ nhớ cache này. ví dụ, mô hình dường như đã làm việc với các hằng số để đo kích thước bộ nhớ chính xác. có vẻ như trường không có một tập hợp tiên đề cơ bản nào cho đến nay.B,M

  • Bộ nhớ dịch đã được phát minh vào năm 1936 bởi Turing và Hartmanis-Stearns lý hệ thống phân cấp thời gian / không gian (mà bạn đang phần nào ám chỉ đến trong câu hỏi này) được phát hiện vào năm 1965. thats một đáng chú ý ~ 3 thập kỷ nhưng các định lý hệ thống phân cấp thời gian / không gian hiện nay được coi là hơi tiểu học và được giảng dạy trong các lớp học đại học. dường như chưa có các định lý phân cấp tương ứng được thiết lập trong mô hình này và làm thế nào để làm điều đó không phải là một vấn đề nhỏ. mô hình này thực sự có nhiều "bộ phận chuyển động" hơn so với máy Turing tiêu chuẩn (vốn đã có động lực học khá phức tạp), tức là giống như một máy Turing tăng cường.

  • một ý tưởng khác là chuyển đổi mô hình bộ nhớ ngoài này thành TM bằng cách nào đó, một lần nữa dường như không xuất hiện trong tài liệu / khảo sát về các thuật toán lãng quên bộ nhớ cache và có thể xem các định lý phân cấp của Hartmanis-Stearns có thể dịch như thế nào. nó dường như liên quan đến hai băng TM trong đó một băng có kích thước 'M' và băng còn lại là vô hạn và các khối được chuyển sang 'M' với kích thước 'B'. nhưng cũng có một khó khăn ở đây là mô hình RAM nhiều hơn mô hình Turing sử dụng truy cập tuần tự vào băng. mặt khác, điều này có thể chạy vào sự tinh tế liên quan đến chuyển đổi giữa các TM đơn và đa nhiệm .

  • đề nghị tấn công vấn đề này theo kinh nghiệm bằng các mô phỏng, trong đó tài liệu có xu hướng tập trung vào, ví dụ như trong cuộc khảo sát tuyệt vời này của Kumar về các thuật toán lãng quên Cache (2003). có nhiều chương trình và bài báo trực tuyến để mô phỏng bộ đệm và người ta có thể trả lời câu hỏi của bạn mà không cần một lượng lớn mã, sử dụng một số đơn giản hóa. một ý tưởng cơ bản là tạo ra các thuật toán xác suất truy cập các vùng bộ nhớ "gần đó" dựa trên xác suất. "Gần đó" ở đây không nhất thiết là bộ nhớ liền kề, mà thay vào đó là thuật toán chọn các trang (khối) bộ nhớ ngẫu nhiên dựa trên việc theo dõi các trang được truy cập gần đây nhất của chính nó. đề nghị sử dụng luật quyền lựcđể xác định xác suất chọn các trang "gần" trong danh sách "được truy cập gần đây nhất". đây dường như là khía cạnh quan trọng mà các cải tiến hiệu suất dựa trên bộ đệm có liên quan đến.

  • Đây là một đối số sơ bộ dựa trên 'M', về cơ bản là thước đo "bộ nhớ lõi" so với bộ nhớ đĩa. đối với một thuật toán, người ta sẽ mong đợi khi bộ nhớ lõi tăng lên, người ta chỉ tiến gần đến sự cải thiện tuyến tính về tốc độ thuật toán và thêm "bộ nhớ lõi" để có được bất kỳ sự gia tăng siêu tuyến tính nào về tốc độ thuật toán dường như gần như vượt quá tốc độ giới hạn và "nhận được một cái gì đó cho không có gì". tuy nhiên, không nắm bắt được mô hình đủ tốt để chứng minh điều này [nhưng dường như không ai khác có cả, kể cả chính quyền / người sáng lập / chuyên gia].

  • tài liệu thuật toán lãng quên bộ nhớ cache này đã tập trung vào các thuật toán P và không thấy trường hợp nào trong tất cả các phân tích về một thuật toán không phải P cho đến nay và có lẽ không tồn tại. điều này có thể là do việc phân tích quá khó khăn! trong trường hợp này, các câu hỏi về hành vi cực đoan có thể không được trả lời trong lĩnh vực này trong dài hạn.

  • nó thậm chí còn không rõ ràng bằng trực giác, hoặc có thể chưa được nghiên cứu, về cách các thuật toán phức tạp "nhỏ" như trong thuật toán L hoặc "lớn" như phi P (ví dụ Expspace, v.v.) hoạt động trong mô hình này. mô hình đang đo lường địa phương bộ nhớ, có vẻ khác nhau về cơ bản, nhưng đan xen với hệ thống phân cấp thời gian và không gian.

  • có một phép đo hơi khó hiểu về độ phức tạp của máy Turing gọi là "độ phức tạp đảo ngược" với một số nghiên cứu, kết quả và giấy tờ có thể liên quan. về cơ bản, TM có thể bao gồm một lượng thời gian và không gian nhất định, nhưng sự đảo ngược là một phép đo hơi độc lập của đầu băng trong quá trình tính toán. có vẻ như "đảo ngược cao" có thể liên quan đến "địa phương bộ nhớ cao" bởi vì trong cả hai trường hợp, đầu băng có xu hướng ở trong một khu vực "nhỏ hơn" so với di chuyển vào các khu vực lớn hơn.

  • câu hỏi và mô hình này làm tôi nhớ đến luật Amdahls và nghi ngờ một số loại luật tương tự chưa được khám phá liên quan đến lợi nhuận giảm dần hoặc số dư / đánh đổi có thể giữ hoặc được áp dụng trong lĩnh vực này. lý luận sơ bộ: lý thuyết thuật toán lãng quên bộ nhớ cache đang xem xét sự cân bằng / đánh đổi giữa bộ nhớ "cục bộ" hữu hạn và đĩa "vô hạn" bên ngoài dựa trên chi phí. về cơ bản, đây là hai tài nguyên hoạt động "song song" và có khả năng có sự đánh đổi tối ưu giữa chúng.


2
k

mô hình TM là mô hình cơ bản của TCS và "cầu nối" giữa hệ thống phân cấp phức tạp của nó (thời gian / không gian, các lớp phức tạp cơ bản như P / NP, v.v.) với các thuật toán lãng quên bộ nhớ cache dường như vẫn được vạch ra. các mô hình bộ nhớ ngoài và các mô hình lãng quên bộ nhớ cache liên quan về cơ bản đang cố gắng mô hình hóa các đặc tính hiệu suất trong thế giới thực và tài liệu không quá quan tâm đến các khái niệm trừu tượng lớn hơn như câu hỏi.
vzn
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.