|
原帖由 yyfn风辰 于 2010-12-2 12:43 发表 ![]()
一、说host C++是前端是因为,语法什么基本上都是host处理的
嗯.一般我们说前端, 后端, 是按照编译流程顺序来的. 比如说, gcc可以使用llvm作为后端, 指的就是gcc编译->LLVM机器码->X86机器码.
那么由于, 在交给nvcc配合gcc. 是nvcc先整理.cu, 提出device code部分, 剩下的交给gcc, 那么是不是可以认为是nvcc是gcc的前端呢?
据我所掌握的资料, G80/200系列的机器码(注意是机器码, 不是ptx), 对于shared memory是直接访问的(虽然在ptx可以看到ld.shard之类的语句, 但是会被jit成一条直接使用指定shared memory单元的指令.). 而且据说在1.x上, shared就是用(看不见的)registers实现的. 而且很多资料显示, 在1.x上, 读取shared只需要1个周期(比2.x的shared都快!). 而不是需要40多个.
四、手册上是这样的,但是实际上每次最多还是16个.
何以见得呢? 如果真的是16个. 那岂不是手册上一再强调的在2.x上, 要注意32个bank情况下, 导致的1.x不会有conflicts, 而2.x会有的情况是不必要的了? 如果不必要. 为了要额外强调? 您有详细资料证明是16个吗?
每次运算需要4个时钟周期(SP周期), 包括取出数据, 计算, 写回. 六,因为以前是8个sp,而实际上一个warp有32线程,sp要连续执行4个周期才能给你个thread一个周期
是不是这两句话有冲突? |
|