我编写的程序有一些非常严重的内核开销问题,因为它必须重复使用内核,开销是如此之大我必须合并许多内核以及交换内存空间以减少内核启动,但它只能工作到目前为止,由于GPU内存存储的大小。
我听说TCC模式可以减少开销,但它能否为CPU级别带来开销性能?
由于我阅读了一些基准测试,至少对于Geforce 280 GTX而言,内核调用开销比CPU的函数调用开销长几千倍,并且对于需要大量重复迭代的方法,它在这里产生巨大的性能差异
答案 0 :(得分:1)
WDDM驱动程序将批量启动内核以减少开销。因此,如果您能够将内核合并在一起以减少启动开销,那么WDDM驱动程序也是如此(除非您在其间使用CUDA调用以防止批处理)。因此,在这个特定的用例中,切换到TCC模式不会带来太多好处。
您确定问题是启动开销而不是其他问题吗?你启动了多少个独立的内核,这需要多长时间? 将内核合并在一起可以很好地(特别是在非常小的内核中,其中启动开销将是显着的)允许编译器更好地优化内核,例如,内核。消除写出和回读中间结果到全局记忆。
答案 1 :(得分:0)
我正在推出16个内核,速度为X,当我合并所有内核立即启动速度为10倍时,合并内核已经增加了开销,但结果非常好。
如果您无法使用它(启动最大的作业大小),那么这是多核架构,那么您就浪费了启动内核所需的开销。
我希望这会对你有所帮助。