C# 网格计算API

C# 网格计算API,c#,grid-computing,C#,Grid Computing,我想写一个分布式软件系统(在这个系统中,你可以比在一台pc上更快地执行程序),它可以执行不同种类的程序。(因为这是一个学校项目,我可能会在上面执行像Prime finder和Pi calculator这样的程序) 我的偏好是,它应该是为C#with.NET编写的,有很好的文档,编写简单(在C#with.NET中并不新鲜,但我并不专业),并且能够轻松地为网格编写任务和/或直接从.exe将程序加载到网络 我已经看了一下: (来自炼金术制造者) (过时?) 哪一个最适合我的情况?你对他们有什么经验吗

我想写一个分布式软件系统(在这个系统中,你可以比在一台pc上更快地执行程序),它可以执行不同种类的程序。(因为这是一个学校项目,我可能会在上面执行像Prime finder和Pi calculator这样的程序)

我的偏好是,它应该是为C#with.NET编写的,有很好的文档,编写简单(在C#with.NET中并不新鲜,但我并不专业),并且能够轻松地为网格编写任务和/或直接从.exe将程序加载到网络

我已经看了一下:

  • (来自炼金术制造者)
  • (过时?)
  • 哪一个最适合我的情况?你对他们有什么经验吗


    注:我知道这里有很多类似的问题,但它们要么已经过时,没有正确的答案,要么没有回答我的问题,因此我选择再次提问。

    我刚刚联系了Utifiy(Krishna Nadiminti)的创始人,虽然目前活动开发已经暂停,但他已经发布了所有的源代码


    我认为值得继续这个项目,因为目前还没有可比的替代方案(甚至商业)。我可以开始工作,但不要等我:)。

    也有同样的问题。我试过NGrid,Alchemi和MS PI.net。 在我决定开始我自己的开源项目后,请点击这里:

    更新:

    请参见以下示例: 传递给aspallelgrid的函数将由网格节点执行。 您可以在运行演示项目时使用它

    /// <summary>
    /// Distributes simple const processing
    /// </summary>
    class PICalculation : AbstractDemo
    {
    
        public int Steps = 100000;
        public int ChunkSize = 50;
        public PICalculation()
        {
    
        }
    
        override
        public string Info()
        {
            return "Calculates PI over the grid.";
        }
    
    
        override
        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();
    
        }
    }
    
    //
    ///分发简单常量处理
    /// 
    类PICalculation:AbstractDemo
    {
    公共整数步长=100000;
    公共int ChunkSize=50;
    公共PICalculation()
    {
    }
    推翻
    公共字符串信息()
    {
    return“计算网格上的PI。”;
    }
    推翻
    公共字符串运行(bool启用localprocessing)
    {
    双和=0.0;
    双步=1.0/(双)步;
    /*原版
    object obj=新对象();
    并行ForEach(
    创建(0,步骤),
    () => 0.0,
    (范围、状态、部分)=>
    {
    对于(长i=range.Item1;i{lock(obj)sum+=partial;});
    */
    总和=可枚举
    .范围(0,步数)
    //创建桶
    .GroupBy(s=>s/50)
    //局部变量初始化不分布在网格上
    .选择(i=>new
    {
    Item1=i.First(),
    Item2=i.Last()+1,//包括
    步骤
    })
    .AsParallelGrid(数据=>
    {
    双偏=0;
    对于(var i=data.Item1;i!=data.Item2;++i)
    {
    双x=(i-0.5)*数据步;
    部分+=(双)(4.0/(1.0+x*x));
    }
    返回部分;
    },新网格设置()
    {
    EnableLocalProcessing=EnableLocalProcessing
    })
    .Sum()*步骤;
    返回sum.ToString();
    }
    }
    
    看起来它们都是死项目:(.如果你想构建自己的为什么不探索Quartz.net-它有“集群”支持,尽管有一些限制(必须是.net,并且必须只实现IJob.JDBC源代码)谢谢,我会仔细看一看。将报告:)“没有可比性”你能详细说明一下吗?我找不到其他像Utifiy这样的软件。