7.4_本章小结

7.4 本章小结

与第6章介绍的常量内存一样,纹理内存的优势之一在于芯片上的缓存。在像热传导模拟这样的应用程序中,这种优势尤其值得注意:在数据访问模式中存在某种空间局部性。我们看到了既可以使用一维纹理,也可以使用二维纹理,二者都有着类似的性能特性。正如我们有时候会选择是使用线程块还是线程格一样,当选择一维纹理还是二维纹理时,在很大程度上取决于能否带来便利。当使用二维纹理时,代码会更为整洁一些,并且能自动处理边界问题,因此在热传导应用程序中适合使用二维纹理。但是你也已经看到,无论采样何种纹理都能得到不错的效果。

如果使用纹理采样器(Texture Sampler)自动执行的某种转换,那么纹理内存还能带来额外的加速,例如将打包的数据释放到不同的变量,或者将8位或16位的整数转换为标准化的浮点数值。在热传导应用程序中并没有使用这些功能,但它们对你来说或许是有用的!

第8章

图形互操作性

由于本书重点介绍的是通用计算,因此我们在很大程度上忽略了一些包含特殊功能的GPU。GPU的成功要归功于它能实时计算复杂的渲染任务,同时系统的其他部分还可以执行其他的工作。这就带来了一个显而易见的问题:能否在同一个应用程序中GPU既执行渲染计算,又执行通用计算?如果要渲染的图像依赖通用计算的结果,那么该如何处理?或者,如果想要在已经渲染的帧上执行某种图像处理或者统计,又该如何实现?

幸运的是,在通用计算与渲染模式之间确实存在这种互操作,而且还是非常容易实现的。CUDA C应用程序可以无缝地与OpenGL和 DirectX这两种实时渲染API进行交互。本章将介绍如何使用这种互操作性功能。

本章的示例与前面章节中的示例将有所不同。本章将假设你已经具备了一些其他的技术背景知识,因为在这些示例中包含了大量的OpenGL和GLUT(OpenGL Utility Toolkit)代码,但我们并不会对它们做出详细解释。在许多参考资料中都介绍了图形API,包括在线资源和书店里的书籍,但在本书中将不讨论这些主题。本章将重点介绍CUDA及其与图形应用程序集成的功能。如果你不熟悉OpenGL或者 DirectX,那么很可能无法充分理解本章内容,并且可能想要跳过本章。

7.4_本章小结 - CUDA by Example | OpenTech