我有一个大程序,它使用我为每个线程分配的所有寄存器(64)并溢出到本地内存。我希望能够告诉编译器哪些变量应该不惜一切代价保留在寄存器中,以及哪些变量我真的不在乎。 "注册" C / C ++关键字在nvcc中有效吗?是否有不同的机制?
谢谢!
答案 0 :(得分:10)
如果您愿意,可以在CUDA C / C ++中使用register
。在任何上下文中,它只是编译器的提示。它可能会被忽略。没有任何声明保证它可以做任何事情。
我认为这些陈述对于register
的大多数语言实现来说都是如此。
我也认为编译器很可能比决定寄存器中的内容和适当的优先级做得更好。
用于控制寄存器使用的典型CUDA C / C ++机制在更高级别工作,它们是:
-maxrregcount
compile switch