共享内存的影响:
共享内存在多种情况下可能会有所帮助,例如帮助合并或消除对全局内存的冗余访问。但是,它也可以作为占用限制。在许多情况下,内核所需的共享内存量与所选块的大小有关,但线程与共享内存元素的映射不需要是一对一的。例如,可能需要在内核中使用32x32元素共享内存阵列,但由于每块最大线程数为512,因此无法启动每块32x32线程的内核。在这种情况下,可以启动32x16或32x8线程的内核,每个线程分别处理共享内存阵列的两个或四个元素。使用单个线程来处理共享内存阵列的多个元素的方法可能是有益的,即使每个块的线程限制不是问题。这是因为每个元素的一些操作可以由线程执行一次,将成本分摊到线程处理的共享内存元素的数量上。
确定性能对占用情况的敏感度的一项有用技术是通过试验动态分配的共享内存量,如执行配置的第三个参数中指定的那样。 通过简单地增加这个参数(不修改内核),可以有效地减少内核的占用率并测量它对性能的影响。
如前一节所述,一旦达到50%以上的占有率,通常不会优化参数以获得更高的入住率。 先前的技术可以用来确定是否已经达到这样的平台。