gpt4 book ai didi

multithreading - 在 pthread、Intel TBB、openmp 上哪个库更通用、更灵活?

转载 作者:行者123 更新时间:2023-12-03 13:14:38 25 4
gpt4 key购买 nike

关闭。这个问题是opinion-based .它目前不接受答案。












想改进这个问题?更新问题,以便 editing this post 提供事实和引用来回答它.

8年前关闭。




Improve this question




我想学习 C++ 中的多核编程,你能给我推荐一些笔记吗?pthread 之间有什么区别? , Intel TBBopenmp ?哪个库可以使用 Intel CPU更有效率?谢谢。

最佳答案

这三个是完全不同的东西。 Pthreads 是许多符合 POSIX 规范的现代 Unix 操作系统的原生线程 API,包括但不限于 Linux、OS X、FreeBSD 和 Solaris。 Windows 也有一个受到严重支持且运行不佳的 Pthreads 实现(Windows 有自己的 native Win32 线程 API)。 Pthreads 旨在支持一般线程场景并使用它构建并行处理应用程序,其价格非常高(以代码行数计)。

英特尔 TBB 是一个可移植的开源 C++ 模板库,用于在共享内存架构上进行并行数据处理并实现任务和任务流。这与新的 C++ lambdas(匿名代码块)结合使用特别好。该库可以使用许多不同的编译器和不同的体系结构构建。在 POSIX 系统上,TBB 建立在 Pthreads 作为底层线程 API 之上。

OpenMP 是 C/C++ 和 Fortran 的基于指令的扩展,支持共享内存架构上的数据和任务并行。它不是库,而是语言扩展,需要支持 OpenMP 的编译器。几乎所有现代 C++ 编译器(Clang 除外)都支持 OpenMP,包括 PGI、Oracle 和 MSVC++ 编译器以及 GCC。在 POSIX 系统上,OpenMP 运行时构建在 Pthread 之上。 4.0 版支持加速器设备,例如GPU 和协处理器,例如 Intel Xeon Phi。

在这三者中,英特尔 TBB 是最灵活的,而 OpenMP 是最容易学习的。 Pthreads 既不便携(例如在 Windows 上受到严重支持),也不易于学习。正如 Claudio 已经提到的,C++11 包含自己的线程原语,在使用 Pthreads 的 POSIX 系统上实现。但这些更像是围绕线程 API 的语言抽象,而不是像 ITBB 和 OpenMP 这样的并行处理库/扩展。

关于multithreading - 在 pthread、Intel TBB、openmp 上哪个库更通用、更灵活?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19808706/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com