2

我有興趣瞭解使用多個處理器乘以大整數modulo(大)常量的時間複雜度。歸結起來基本上只是整數乘法,因爲除法和餘數也可以用乘法實現(例如reciprocal multiplicationBarrett reduction)。在多個處理器上進行大整數模乘運算的最快運行時間是多少?

我知道currently known integer multiplication algorithms的運行時間大致以下限o(n * log n)爲界。我的研究未能發現這是否適用於單核或多核機器。但是,我認爲這是針對單核機器的,因爲這些算法似乎採用了分而治之的方法。

現在我的問題是,在m內核上實現的並行整數乘法算法的時間複雜度的當前已知下限是多少?給定足夠的核心,可以在o(n)或更低的下限內實現時間複雜度? (即,如果m取決於n?)這裏o(n)描述了手頭整數的輸入大小。

到目前爲止,在我的研究中,我已經閱讀了幾篇聲明使用並行FFT乘法加速的論文。不幸的是,這些僅僅宣稱經驗加速(例如,「在這樣和那樣的計算機上使用6個核心的速度提高了56%」),然後未能解釋在時間複雜度範圍內表達的理論加速。

我知道「最快」的整數乘法算法尚未找到,這是一個unsolved problem in computer science。我只是在詢問目前已知的這種並行算法的邊界。

更新#1:用戶@delnan鏈接到關於NC complexity class的維客頁面。該wiki頁面提到整數乘法在NC中,這意味着在O(n^k)處理器上存在O((log n)^c)算法。這有助於更接近答案。現在還沒有得到答覆的部分是整數乘法的常數是多少,並行算法是否適用於這個目的?

更新#2:根據this PDF file來自康奈爾大學的計算機科學課程的15第12頁,在NC複雜類整數乘法需要O(log n)時間O(n^2)處理器。它還解釋了一個關於如何去解決這個問題的算法。我很快就會爲這個問題寫一個正確的答案。

爲了滿足我的好奇心,最後一個問題是:可能有人知道「剛纔」O(n)O(sqrt(n))O(log n)處理器的當前已知時間複雜性嗎?

+0

你可能在[cs.se]有更多的運氣,或者失敗了,[cstheory.se](我發現很難判斷我無法回答的問題的級別)。 – delnan 2014-10-01 11:54:52

+0

對於O(n)處理器:我似乎無法找到正確的引用,但我強烈的期望是存在運行時間爲O(polylog n)的基於FFT的方法,因爲FFT自然並行到n處理器。這種方法可以縮減到更少的處理器數量。 – 2014-10-01 20:30:09

+0

謝謝@DavidEisenstat。你是對的,因爲FFT是一個分而治之的算法,它可以並行運行在[polylogarithmic time](http://en.wikipedia.org/wiki/Time_complexity#Polylogarithmic_time)中。在'O(n * log n)'FFT算法的情況下,這在'O(n)'處理器上變成'O(log n)'時間(參見[this PDF](http: /www.cs.berkeley.edu/~demmel/cs170_spr07/LectureNotes/Lecture_Parallelism_DC.pdf))。我不確定這會如何影響所有當前已知的乘法算法,但可以肯定地說使用FFT的算法將堅持FFT的當前已知的下限。 – webdevelopersdiary 2014-10-02 05:53:17

回答

1

算法的計算複雜度不受並行化的影響。

當然,可以考慮整數乘法等問題,並且可以找到各種解決問題的算法。這些算法將呈現一系列複雜性。但是考慮到任何運行在p處理器上的算法,在理論上最好的情況下,將會加速p次。就計算複雜性而言,這就像將現有的複雜度乘以常數即O(f(n)),得到O((1/p)*f(n))。如您所知,將複雜度乘以常數不會影響複雜度分類。

爲了採用另一個也許更實用的參數,改變處理器的數量並不會改變算法對任何給定大小的任何給定問題執行的基本操作的數量 - 除了需要額外的操作通過協調並行組件的操作。

再次記住,計算複雜度是計算工作量的一個非常理論性的度量,通常以給定輸入大小計算所需的某種基本操作的數量來度量。一個這樣的基本操作可能是兩個數字的乘法(大小有限)。將基本操作的定義更改爲乘以兩個數字向量(每個有限大小)不會改變算法的複雜性。當然,有很多經驗證據表明,並行算法的運行速度可能比它們的串行算法更快,正如你發現的那樣。

+0

請參閱[超線性加速](http://en.wikipedia.org/wiki/Speedup#Super_linear_speedup) – 2014-10-01 12:38:38

+0

@ 280Z28,馬克說的是,算法的複雜性不是在時間上測量的,而是在數量上測量的基本操作。加速可能在那裏,但最終處理器運行的操作數量仍然是相同的。 – Rerito 2014-10-01 12:43:18

+2

-1您假定p是常量,但OP也會詢問處理器數量取決於輸入大小的情況。這在計算機科學中已經得到了認真的研究,您所描述的只是複雜性理論的最基本的應用,已經將其應用於本科CS課程中。例如參見[NC](http://en.wikipedia.org/wiki/NC_%28complexity%29)。此外,強調測量時間與測量基本操作的關鍵是關鍵,對於恆定數量的處理器來說,它是等效的,而在其他模型中,時間,或者電路的尺寸或深度,或者其他一些措施可能更有用。 – delnan 2014-10-01 12:44:29

相關問題