Difference between MemoryFence and _syncthreads ?

I’d like to know what is the main difference between memoryFence and _syncthreads ?
Benefits of using other synchronization instructions than __synthreads ?


Memory fence instructions don’t synchronize, i.e. they never make any other thread wait. Only the own thread waits until its memory accesses are visible on the specified level. So they have much more specialized use cases (ordering memory accesses when one variable controls access to another variable).

“Benefits” over __syncthreads() include the fact there are memory fence instructions for wider domains than the block level.

Thanks ! That helped a lot