关于athread加速线程库中的原子操作
-
在进行athread并行加速时,能否在Fortran编译环境中使用原子操作?如果可以,请问该如何实现呢?
-
@Chanice Fortran调用c可以。
C程序:void faal_(long *addr, long *recv_ptr) { long recv; __asm__ volatile("faal %0, 0(%1)" : "=r"(recv) : "r"(addr)); *recv_ptr = recv; }
Fortran程序(设a是一个主存变量):
call faal(a, b)
则a应当加1且b是a原来的值。
-
我的a是从核里的变量,运行后显示这个了..而且我想让二者相加该如何实现
The exact shot pc is : 4ff0410170 SPE 0 exception ! LDM access exception The exact shot pc is : 4ff0410170 The exact shot pc is : 4ff0410170 SPE 1 exception ! LDM access exception The exact shot pc is : 4ff0410170 The exact shot pc is : 4ff0410170 SPE 2 exception ! LDM access exception The exact shot pc is : 4ff0410170 The exact shot pc is : 4ff0410170 SPE 3 exception ! LDM access exception The exact shot pc is : 4ff0410170 The exact shot pc is : 4ff0410170
-
原子操作只针对主核地址。
从核的LDM又不共享,原子操作有什么用呢?
二者相加是不能实现的。