如何使两个进程有两个线程收到,发送给对方的MPI?

基本上我想要实现这样的事情:

Process 1 Thread 1 Receive X from process 2 Thread 2 Receive Y from process 2 Process 2 Thread 1 Send X to process 1 Thread 2 Send Y to process 1

在MPI与pthreads库C语言。
我在PVM做它已经,这里的源代码:
master.c:http://pastebin.com/wwEie7gn,
slave.c:http://pastebin.com/gfeCkcss。
我试图这样做:
prog.c中:http://pastebin.com/tCVKN3fe
不知怎的,接收线程没有收到任何东西。 我不知道是什么问题。 我希望有人能告诉我正确的方法去做。
我跑不MPI线程支持编译。

--------------解决方案-------------

你想用不同的标记这两个消息,例如,你可以标记与接收器线程(称为?)ID的消息。 然后在过程1每个线程将发布其作为标签ID的接收和接收只会匹配定向到特定线程的消息。

请注意,MPI 2.2提供了线程有限的互操作性。 默认情况下大多数MPI实现不是线程安全的。 例如开放MPI需要一个明确启用在配置时间(它被默认禁用)全线程支持。 您需要至少已MPI_THREAD_SERIALIZED线程级别返回在provided的参数MPI_Thread_init (或MPI_Query_thread为了能够使MPI在不同的线程调用)。 如果您的MPI库只提供MPI_THREAD_SINGLEMPI_THREAD_FUNNELED水平,你的运气,不能使MPI比主线程调用其他。 如果提供的水平MPI_THREAD_SERIALIZED ,那么你可以让MPI从任何线程调用,但你必须明确地连载的来电,即确保没有两个或多个电话simulatenously做(例如使用临界指数部分或互斥)。 如果提供的水平MPI_THREAD_MULTIPLE那么你有完全多线程的支持,可以使MPI无论从任何线程调用,并在任何时间点。

分类:C# 时间:2015-03-15 人气:0
分享到:

相关文章

Copyright (C) 55228885.com, All Rights Reserved.

55228885 版权所有 京ICP备15002868号

processed in 0.623 (s). 10 q(s)