@cuda编程 共享内存
cuda程序中的同步:
利用共享内存如果想要真正的实现线程之间的通信, 还需要一种机制来实现线程之间的同步。例如如果想要线程A将一个值写入到共享内存中,并且希望线程B对这个值进行操作,那么只有当线程A执行完成后,线程B才能执行他的操作。如果没有同步,那么发生竞技条件,代码执行结果的正确性将取决于硬件的不确定性。
__synthreads()这个函数调用将确保每个线程块中的每个线程都执行完__synthreads()前面的语句后,在执行后面的语句。
最常用的同步函数是__synthreads():
同步函数__synthreads()的功能是:等待block内部的所有线执行前面的指令后,在执行后面的指令,一般用于保证block内共享存储数据的一致性。
__synthreads(): 用于维持block内部的共享内存的一致性
栅栏同步函数__threadfence(): 维持block内部的共享存储和全局存储的一致性。