Multithreading 自动并行化

Multithreading 自动并行化,multithreading,multicore,Multithreading,Multicore,我想在线程级别自动并行顺序程序,以便在多核上运行 处理器。 我不知道如何使用lvm或openIMPACT或其他编译器。您能在这方面帮助我吗?您想将顺序程序拆分为通过数据流进行通信的任务管道。例如,假设C或C++程序,您将需要手动重写应用程序到并行任务网络中。有各种API可以帮助您编写任务和通信。与此非常吻合的正式模型是(KPN) 显然,真正的挑战是重写代码,将所有通信公开到显式数据流中。这可能需要大量的工作,具体取决于应用程序 对于实现,OpenMP对任务并行性有一定的支持。看一看(C/C++)

我想在线程级别自动并行顺序程序,以便在多核上运行 处理器。
我不知道如何使用lvm或openIMPACT或其他编译器。您能在这方面帮助我吗?

您想将顺序程序拆分为通过数据流进行通信的任务管道。例如,假设C或C++程序,您将需要手动重写应用程序到并行任务网络中。有各种API可以帮助您编写任务和通信。与此非常吻合的正式模型是(KPN)

显然,真正的挑战是重写代码,将所有通信公开到显式数据流中。这可能需要大量的工作,具体取决于应用程序


对于实现,OpenMP对任务并行性有一定的支持。看一看(C/C++),它是一种高效的流式API,您可以轻松地将其移植到您想要的任何体系结构。(免责声明:我是作者之一)。

关于自动进行的并行化,几乎没有什么内容……请提供更多详细信息?我希望将程序拆分为多个分区,并将每个分区分配给一个线程,然后使用管道模型运行线程。当然要考虑程序指令之间的依赖关系。忘记指令之间的依赖关系,更基本的问题是数据依赖关系。您是否有一些大的数据集可以轻松地划分为片,并且可以单独处理,而不需要线程相互依赖数据?如果您这样做了,那么您可能能够进行一些自动并行化(例如OMP、VC++并行化)。这是什么语言?我有一个没有大量数据的顺序程序,但基本块之间的控制和数据依赖性很重要。我没有选择特殊语言的能力。你的程序是用什么语言编写的?