我有些困惑OpenMP是如何工作的。我知道它可以并行执行任务,是一个多处理工具,但这意味着什么?
它使用“线程”,但同时又是一个多处理工具?这两者不是互相排斥吗,你会使用一种方法而不是另一种方法?您能帮忙解释一下它到底是哪种方法吗?
为了澄清,我只使用过POSIX pthreads进行多线程编程,那与使用fork和exec以及共享内存进行多进程编程完全不同。
谢谢。
我有些困惑OpenMP是如何工作的。我知道它可以并行执行任务,是一个多处理工具,但这意味着什么?
它使用“线程”,但同时又是一个多处理工具?这两者不是互相排斥吗,你会使用一种方法而不是另一种方法?您能帮忙解释一下它到底是哪种方法吗?
为了澄清,我只使用过POSIX pthreads进行多线程编程,那与使用fork和exec以及共享内存进行多进程编程完全不同。
谢谢。
OpenMP是用于多线程的工具。我会深入介绍如何使用OpenMP以及需要注意的问题:
http://austingwalters.com/the-cache-and-multithreading/
它与POSIX pthreads非常相似,但没有繁琐的部分。它的开发是为了将其融入到已经开发好的代码中,并使用适当的编译器重新编译。(g++, clang/llvm目前不可用)。如果你点击上面的链接,你会注意到一个线程可以在任何可用的处理器上执行,因此线程使多进程成为可能。