微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Windows上的C / C ++并行API

我们正在为Windows平台开发一些东西,我们现在想利用PC中的多核心。

我知道在VS2010中,有并发运行时 。 尽pipe如此,它仍然处于testing阶段。 与此同时,我们确实需要现在发布高质量的代码,对于一个允许以后平滑过渡的API来说,一个好的select是什么。 其他build议?

我可以在bash中为多个并行后台进程使用相同的variables名吗?

Multiprocessing =多个进程正在运行?

Bash:在多个核心上运行相同的程序

如何使用Linux集群上的Rmpi来增加DEoptim可用的核心?

UNIX的primefaces性读取()/写入()发送数据到设备

我知道:

英特尔线程构建模块库 (开源)

C ++ 0x线程库支持(将来有时跨平台)

C ++ 0x线程库的软件实现 – 允许你在vs 2008中使用新的c ++线程库。

OpenMP – 现在可以构建到大多数C ++编译器中,包括VS 2008。

pthreads for win32 – POSIX线程,因此它们是任何POSIX投诉操作系统的跨平台。

WIN32线程API

我会推荐英特尔线程构建模块,因为它是大多数其他多线程API的抽象层次。 这也是开源的,所以你可以下载,看看如何做一些东西。 upcomming版本是为了使用Windows并发运行时如果可用。 我还看过英特尔已经提交了TBB以包含在C ++标准中。

pthreads和Win32 API是较低级别的原语,要求您更好地理解多线程环境。 如果你知道你在做什么,这些工具给你最大的控制。

我还没有使用新的c ++线程支持,但他们看起来与pthread相同或更高一些。 Just Software有一些关于如何使用新的c ++线程库的有趣的文章

我只读过关于OpenMP,我不确定使用什么样的。

您可能会喜欢阅读Joe Duffy的 “Windows并发编程”一书。

Herb Sutter还在标题Effective Concurrency下发表了许多文章

希望有所帮助。

我建议在等待的时候使用OpenMP 。 它适用于大多数编译器,比较容易添加到现有的代码中,并稍后用于其他API。

英特尔的线程构建模块库具有与并发运行时相似(高级别)的并行任务系统。 API细节将有所不同,但是您将程序分解为独立运行的小任务的工作将继续进行。

我一直喜欢pthreads。 它很好地映射到我遇到的其他线程模型,我发现编程相对容易(与MPI相比)。

但是,它不像并发运行时那样高。

我也听说过关于OpenMP的一些噪音,但是没有仔细研究过。

简短的回答:聘请一个具有良好的线程经验的程序员。

在多核上使用多线程是很困难的。 经验无可替代。

Visual C ++(任何最新版本)都有用于开发并行软件的工具,但是像数据同步这样的复杂性对于缺乏经验的人来说非常棘手。 并发运行时的东西是试图隐藏的复杂性,让编译器做的工作。 它可能工作得很好,但陪审团仍然没有。 目前,使用现有的工具可以获得良好的结果,但是您需要专业知识。

考虑聘请一个好的承包商,以帮助建立正确的架构,并培训自己的员工加快速度。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐