文档用例,验证失败



  • 在文档《神威太湖之光并行程序设计与优化.pdf》中,第2.7.1.1的fortran语言示例,在复现过程中,发现在从核代码: slave.f90中
    call athread_get(0,a(imin,j),a_slave(imin), &
    (imax-imin+1)*4,reply,0,0,0)
    call athread_get(0,b(imin,j),b_slave(imin), &
    (imax-imin+1)*4,reply,0,0,0)
    do while (reply.ne.2) !等待数据读成功
    end do

    这部分一直等不到数据读入成功。



  • do while (reply.ne.2) !等待数据读成功
    end do
    

    这部分代码被编译器优化了。

    这个例子供您参考https://github.com/nsccwxtech/cpc/tree/master/Athread/EX3-mpi-athread-fortran



  • 你这种写法是为了让它不乱序执行,可能等不到reply的值,那可不可以在fortran中嵌套汇编呢 利用asm("memb");这种方式来让它顺序执行,但是我添加了之后,fortran不识别这一段汇编代码。



  • 不知道通用平台上的fortran能不能嵌汇编,反正神威平台上目前还没有fortran里面嵌汇编的例子,c倒是可以嵌汇编。


登录后回复