在CUDA中,线程块如何映射到SM';s

在CUDA中,线程块如何映射到SM';s,cuda,parallel-processing,Cuda,Parallel Processing,假设一个线程块包含1000个线程,而流式多处理器(SM)只能执行500个线程,那么我的线程块应该映射到2个或更多的SM。那么他们如何访问共享内存呢 ..…然后我的线程块应映射到2个或更多SM 这是不对的。块在其整个生命周期中仅映射到单个多处理器。一个块永远不可能在多个SM上拆分 如果您尝试在块大小或资源需求超过必须在其上运行的多处理器的情况下启动内核,则启动将失败,内核将永远不会运行 但是作为一个程序员,我们如何知道,我们可以在一个块中放置多少线程,这样它就不会超过SM的线程?正如所述,SM上执

假设一个线程块包含1000个线程,而流式多处理器(SM)只能执行500个线程,那么我的线程块应该映射到2个或更多的SM。那么他们如何访问共享内存呢

..…然后我的线程块应映射到2个或更多SM

这是不对的。块在其整个生命周期中仅映射到单个多处理器。一个块永远不可能在多个SM上拆分


如果您尝试在块大小或资源需求超过必须在其上运行的多处理器的情况下启动内核,则启动将失败,内核将永远不会运行

但是作为一个程序员,我们如何知道,我们可以在一个块中放置多少线程,这样它就不会超过SM的线程?正如所述,SM上执行的线程数量取决于GPU架构。通过阅读其中详细描述了每一代硬件的硬件限制。使用CUDA工具包的每个版本中提供的。另外,请查看
deviceQuery