我做了一個wcf服務,它以azure的web角色託管。角色的實例是特大型的(它只是一個實例),它有8個內核。我在這個服務中有兩種方法。方法是計算矩陣乘法,其中一個用順序編程,另一個用並行(使用Parallel.For) 結果是順序編程比並行編程快。難道我做錯了什麼? 我被監測處理器的工作,當我開始並行計算,使用所有的內核,但結果是不是更好? 下面是並行編程矩陣乘法Windows Azure中的並行編程
ParallelOptions p = new ParallelOptions();
p.MaxDegreeOfParallelism=8;
Parallel.For(0, n,p, i =>
{
for (int j = 0; j < n; j++)
{
suma = 0;
for (int k = 0; k < n; k++)
{
suma = (matricaA[i, k] * matricaB[k, j]);
}
proizvod[i, j] = suma;
}
}
嗯,可能需要看到所有的代碼,包括串行。我只能想象你的代碼沒有運行你認爲的那樣。 – Dave
我在我的本地機器上部署到Azure之前測試了代碼,它工作的很好... – Selvirrr
嗯,那當然是非常不尋常的。我們在Azure中的4個和8個核心實例上運行大規模並行工作負載,並且預期的加速確實存在。如果是我,我會嘗試另一個超級簡單的並行VS串行場景,看看這是否表現出相同的行爲。我會進行一些登錄以更好地理解執行的路徑。在4核心機器上執行此操作可能也值得您嘗試,因爲您只能在1個四核心插槽上執行操作,而在8核心操作系統上執行此操作。 – Dave