【问题标题】:C# Open Source software that would benefit from parallelization? [closed]将从并行化中受益的 C# 开源软件? [关闭]
【发布时间】:2010-09-03 12:48:48
【问题描述】:

我不确定这种问题是否合适,但有人建议我在这里问,所以就这样吧。

对于本学期大学的一门学科,我们的任务是获取一些现有代码并将其并行化。我们对此有点开放,但开源确实是我们获得现有代码的唯一途径。我可以编写一些代码,然后将其并行化,但现有代码(也许是我可以做出真正贡献的代码)是最好的,以避免我的工作量加倍而没有什么好处。

我希望使用 C# 并利用新的 Task 并行库,但我正在努力寻找一些计算成本高到足以利用并行化的 C# 开源项目(并且还没有) .

有人对去哪里有一些建议吗?还是 C# 只是没有足够多的东西作为开源(也许应该尝试 C++?)

【问题讨论】:

    标签: c# open-source parallel-processing


    【解决方案1】:

    我不知道他们是否已经在使用并行任务,但很好的候选者是图像处理程序,例如 paint.netpinta

    【讨论】:

    • 不幸的是,您必须找到旧版本的 Paint.NET,因为最新版本是闭源的。
    • @Timwi - 我不知道他们关闭了源代码:(
    • 感谢 Oded,我确实想尝试一下 Paint.NET,但注意到它是封闭源代码,但 pinta 可能值得一试!我去看看。
    • 看起来 Pinta 使用了一些 Paint.NET 源代码,看起来它会很好用,谢谢! :)
    【解决方案2】:

    我不知道这个项目的范围(如果它只是每周作业或您的最终项目),但受益于并行化的过程不必像 Hans 的链接文章所描述的那样“令人尴尬地并行”。如果满足以下条件,问题将受益于并行化:

    1. 问题的解决方案可以表示为重复的一系列较小操作的“总和”,
    2. 较小的操作对彼此的影响很小,并且
    3. 问题的规模足以使并行化的好处大于由于创建和监督多个工作进程的额外开销而造成的损失。

    通常可以线性解决但可以从并行化中受益的问题示例包括:

    • 排序。像 MergeSort 之类的一些算法具有足够的原子性,可以并行化;其他像 QuickSort 不是。
    • 正在搜索。 BinarySearch 无法并行化,但如果您要在文档等无序数据中搜索一次或多次出现的单词,则线性搜索可以使用“分而治之”优化。
    • 数据转换工作流。打开一个文件,读取其原始数据,将其分解为域字段,将这些域字段转换为真正的域对象,验证它们并持久化它们。每个数据文件通常完全独立于所有其他文件,而转换过程(即从读取文件到持久化文件之间的一切)通常是一个瓶颈,这得益于投入更多的处理器。
    • 约束满足问题。给定一系列定义问题空间中多个变量的关系和约束的业务规则,找到一组满足所有约束的变量,或者确定没有。常见应用包括运输路线调度和业务流程优化。这是一个不断发展的计算算法领域,具有相对较高的学术兴趣,因此您可能会找到可以多线程处理的基本 CSP 算法的已发布公共领域代码。它可能被描述为令人尴尬的并行,因为最著名的解决方案是“智能蛮力”,但尽管如此,一个可能的解决方案可以独立于其他解决方案进行评估,因此每个解决方案都可以分配给一个工作线程。

    定义为“令人尴尬的并行”的进程通常是任何规模足够大、但具有原子性和重复性的问题,并行处理是唯一可行的解​​决方案。 Wiki 文章 Hans 链接到提到常见的应用程序;一般来说,它们通常归结为对非常大的数据域的每个元素应用相对简单的计算。

    【讨论】:

      【解决方案3】:

      查看 Alglib,尤其是 open source C# edition。它将包含许多非常适合 TPL 的矩阵和数组操作。

      【讨论】:

        【解决方案4】:

        Project Bouncycastle 在 C# 和 java 中实现了几种加密算法。也许其中一些没有达到应有的并行度。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2011-07-31
          • 2011-11-14
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多