1.3_资源

1.3 资源

1.3.1 开源代码

本书的源代码可以在www.cudahandbook.com网站上下载。它们是开源的,著作权遵照2句版BSD许可证[1]。

1.3.2 CUDA专家手册库(chLib)

CUDA专家手册库,可以在源代码的chLib/目录下找到。它包含一个可以移植的库文件,支持计时、线程化操作、驱动程序API辅助工具等内容。在附录A中有针对它的更详细描述。

1.3.3 编码风格

不考虑括号里的参数,本书代码的主要特征,是基于goto方式的错误处理机制。这可能会招致大家的批评。执行多个资源分配(或者其他可能出现失败的操作,并且失败会传递给调用者)的函数采用类似Linux内核代码的常用方式,按照初始化/错误检查/资源清理三步法模式来组织。

如果出现失败,所有的资源清理工作在函数末尾执行同一代码来完成。很重要的一点,记得在函数的开始部分初始化资源为特定的无效值,这样清理代码知道哪些资源必须被释放。如果资源分配或其他功能失败,代码执行一次goto(清理代码)。A.6节的chError.h文件中描述了使用CUDA运行时和驱动程序API实现此代码模式的错误处理宏。

1.3.4 CUDA SDK

SDK为所有CUDA开发者提供一个共享的经验,所以我们假设你已经了安装CUDA SDK,并且可以使用它来生成CUDA程序。该SDK还包括GLUT(GL实用库),便于从同一批程序代码中得到面向不同操作系统的OpenGL应用程序。GLUT旨在生成演示级别的而不是产品级别的应用程序,但它符合我们的需求。

[1] www.opensource.org/licenses/bsd-license.php。