2015-01-20 102 views
-1

在這個主題上我看到很多關於這個主題的問題,但是所有人發佈的項目似乎都已經死亡或者不適合我的系統。我正在嘗試編寫一個學校項目的應用程序來計算使用我的臺式機和筆記本電腦的pi數量。任何人都可以請幫助發佈一個URL到一個項目,我可以使用我的本地網絡中的計算機使用分佈式計算。試圖在C中使用網格計算或分佈式計算#

我曾嘗試以下,但至今沒有運氣:

http://www.codeproject.com/Articles/71897/Grid-Computing-Using-C-Script-and-NET-Remoting (項目不這樣做在Visual Studio 2013的一種方式升級工作後,這似乎是正是我要找的,但它不會建立開箱即用,因爲在PiCalculationManager項目中它有一個RemoteClass參考的參考錯誤,它有一個黃色的圖標,因爲無法找到它正在使用的命名空間而得到4個錯誤)

http://mpapi.codeplex.com/ (分佈式項目不起作用,因爲它不會與註冊服務器連接)

https://github.com/tylerjensen/duovia-distributed (似乎無法弄清楚如何實現以及如何連接到其他電腦我的本地網絡上)

如果您有任何建議或疑問,請讓我知道。我似乎沒有得到這個項目的任何地方

+0

這可能有點太寬泛的一個問題,所以你的答案將是不同的質量,可能無益。如果你可以用你的問題來回答你的問題,詢問你提到的其中一個問題(比如你從第一個問題中得到的編譯錯誤),你可能會得到更好更有針對性的幫助。 – StingyJack 2015-01-20 21:05:38

+0

對不起,我現在編輯 – user3610374 2015-01-20 21:06:48

回答

2

我一直在挖掘一段時間的.NET網格計算,最後我決定建立自己的。仍在測試階段,但現在穩定:)看看:http://lucygrid.codeplex.com/

我在演示項目中編寫了PI示例。我會盡可能地保持可用性,所以你只需要使用AsParallelGrid函數(有一個內置節點和庫來處理每個塊,但是當然你需要在其他機器上運行獨立節點來測試網格)

該代碼是開源的,所以隨時與它一起玩。

從LucyDemo項目:

public string Run(bool enableLocalProcessing) 
{ 
    double sum = 0.0; 
    double step = 1.0/(double)Steps; 

    /* ORIGINAL VERSION 
    object obj = new object(); 

    Parallel.ForEach(
     Partitioner.Create(0, Steps), 
     () => 0.0, 
     (range, state, partial) => 
     { 
      for (long i = range.Item1; i < range.Item2; i++) 
      { 
       double x = (i - 0.5) * step; 
       partial += 4.0/(1.0 + x * x); 
      } 
      return partial; 
     }, 
     partial => { lock (obj) sum += partial; }); 
    */ 

    sum = Enumerable 
     .Range(0, Steps) 
     // Create bucket 
     .GroupBy(s => s/50) 
     // Local variable initialization is not distributed over the grid 
     .Select(i => new 
     { 
      Item1 = i.First(), 
      Item2 = i.Last() + 1, // Inclusive 
      Step = step 
     }) 
     .AsParallelGrid(data => 
     { 
      double partial = 0; 
      for (var i = data.Item1; i != data.Item2 ; ++i) 
      { 
       double x = (i - 0.5) * data.Step; 
       partial += (double)(4.0/(1.0 + x * x)); 
      } 
      return partial; 
     }, new GridSettings() 
     { 
      EnableLocalProcessing = enableLocalProcessing 
     }) 
     .Sum() * step; 

    return sum.ToString(); 
} 

我張貼的水貨版本和網格之一。 我很樂意知道你是否嘗試過。