代码之家  ›  专栏  ›  技术社区  ›  sooniln

C/C++中的数据并行库

  •  1
  • sooniln  · 技术社区  · 14 年前

    我有一个C#原型,它是高度数据并行的,并且我在.NETv4中使用parallel.For construct获得了非常成功的数量级加速。现在我需要用本机代码编写程序,我想知道我的选择是什么。我更喜欢在不同的操作系统和编译器之间有点可移植的东西,但是如果有必要的话,我可以选择Windows/VC++。

    4 回复  |  直到 9 年前
        1
  •  1
  •   Rick    14 年前

    如果您在.NET4.0中使用Parallel.For,还应该查看 Parallel Pattern Library 在VS2010中为C++编写;许多事情都是相似的,它是基于图书馆的。

    如果您需要在Windows以外的其他平台上运行,PPL也可以在Intel的线程构建块中实现,它有一个开源版本。

    关于与.Net 4.0的相似性/差异的其他评论,PPL中的并行循环(parallel\u for,parallel\u for each,parallel\u invoke)实际上与.Net 4.0循环相同。任务模型略有不同,但应该很简单。

        2
  •  2
  •   Jerry Coffin    14 年前

    如果你对并行的并行性水平感到满意的话,例如,OpenMP可能是一个很好的解决方案——它可以做大致相同的事情。还有工作和工作 research 正在完成 parallelized implementations

    其中一部分是使用OpenMP完成的,而另一部分是使用手写代码(试图)提供更大的好处。从长远来看,我们可能会看到更多的后者,但就目前而言,OpenMP路由可能更实用一些。

        3
  •  1
  •   Puppy    14 年前

        4
  •  0
  •   Anatoli    14 年前

    如果您想要多功能的东西,比如跨各种操作系统和环境的可移植性,那么很难不考虑Java。它们与C非常相似,所以这是一个非常容易的过渡。

    除非你想拔出你的忍者解剖刀,并希望使代码非常高效,我想说java在VC++或C++上。