第五章,共享内存和线程同步
1.在有线程对内存进行写的时候,要确保另外线程如果读数据,不会产生竞态关系
有一个办法是在有写操作时候
就进行强制线程同步
这样可以保证程序的正确性
但是有得必有失
__syncthreads();默认机制是要操作所有的线程,也就是说要所有的线程都执行了这个函数,才会往下执行
所以这玩意不能放在条件分支语句里
共享内存特别适合做汇总计算(就是block中的各个thread都进行同样的处理之后,把数据汇总到共享内存这里进行下一步计算,可以在需要看到很多线程独立数据的时候用)
第六章,常量内存和事件
1.常量内存,一次读取会广播到半个线程束(读取大量数据时,产生的内存流量是全局内存的1/16)
2.常量内存还会缓存,命中缓存也会减少额外流量
有得必有失
16个线程读取地址相同时候是极好的,但是不同地址的话就不行,性能降低
3.事件的本质是时间戳