关于从核同步操作



  • 在使用athread加速线程库时,由于不同的从核有可能会读写同一数组的同一元素,会造成计算错误,此时能不能有一个类似于OpenACC的原子操作,使这个数组在某时刻只能被一个从核读写。这种情况是否要使用核组内同步函数?但是我在从核函数直接调用sync_array之后编译就无法通过了,显示 undefined reference to ‘slave_sync_array_'。核组内同步函数应该如何使用呢,谢谢解答。



  • @Chanice
    核组内同步:#include <slave.h>athread_syn(ARRAY_SCOPE, 0xffff)



  • @swmore Fortran里是直接调用就行了吗,还有括号里的参数是怎么用的呀,段老师能再说详细一点吗,十分感谢。



  • @Chanice Fortran里面不能直接调用
    需要使用fortran调用c再调用
    C文件里:

    void athread_sync_all_c_(){
      athread_syn(ARRAY_SCOPE, 0xffff);
    }
    

    Fortran文件里:

    call athread_sync_all_c()
    

Log in to reply