我对nvidia GPU的任务调度有些疑问。
(1) 如果一个block(CTA)中的线程warp已经完成了,但是还有其他warp在运行,那么这个warp会等待其他warp完成吗?换句话说,当所有线程都完成时,块(CTA)中的所有线程都释放资源,这样行得通吗?我认为这一点应该是正确的,因为块中的线程共享共享内存和其他资源,这些资源分配在一个CTA size manager中。
(2) 如果一个block(CTA)中的所有线程都因为一些长延迟(如全局内存访问)而挂起,新的CTA线程是否会占用像CPU一样的资源?换句话说,如果一个block(CTA)已经被分派到一个SM(Streaming Processors),它是否会一直占用资源直到完成?
如果有人能向我推荐一些关于GPU架构的书籍或文章,我将不胜感激。谢谢!