当前位置:  开发笔记 > 人工智能 > 正文

MPI:锁定标准输出-一次1个进程?

如何解决《MPI:锁定标准输出-一次1个进程?》经验,为你挑选了1个好方法。

我想打印出每个进程的整数数组的内容。问题是,由于比赛条件,一切都很混乱。

什么是最简单的解决方案?我不想调试。我想显示内容,因为我正在执行排序算法。因此在排序前后显示很有用。

我在lock.c中添加了它:

#include 
static int lock=0;   //Don't use if timing execution
void capture(int rank) {
    while(lock!=0);
    lock = 1;
    printf("\nCaptured by %d\n", rank);
}
void release() {
    lock = 0;
}

并在打印内容之前调用capture(),然后在打印之后调用release()。是的,这是一个类似信号量的hack。但这行不通,有什么主意吗?



1> Edric..:

假设您正在使用MPI来收集所有进程的STDOUT,则可以使用MPI_Barrier()来执行排序,如下所示:

for( int i = 0; i < size; ++i ) {
    MPI_Barrier( MPI_COMM_WORLD );
    if ( i == rank ) {
         printf( "..." );
    }
 }

当然,这是低效率的,但它可能比安排将所有信息发送回第0级要简单一些。

推荐阅读
保佑欣疼你的芯疼
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有