(部分翻译。且非专业翻译人士,如知详情,请参考参考书目)
2.1 线程安全
这个库是线程安全的,并且函数可以被多个主机线程调用。
2.2 标量参数
标量参数可以在主机和设备之间传递。
极少数函数的返回值是标量,譬如doti()和nnz().和其他返回数据类型一样,标量参数返回时要等到GPU上运作完成才能确定。所以当主机读取数据时应当要做适当的同步。
这个特点允许CUSPARAE函数库里的函数以流的方式做完全异步执行。
2.3 流平行
如果一个应用它做一些小的独立运算,或者如果运算的时候还同时进行着数据地传输。CUDA的流可以重叠这些任务。
程式在概念上可以让一个任务和一个流关联。要获得任务重叠,开发者需要用 cudaStreamCreate()来创建流,然后在呼叫流对应的程式之前通过 cusparseSetStream()设置所运行的程式的流。然后,不同流执行的程式将会被GPU动态重叠运行。 当运用流处理时,我们建议运用新的带标量参数和结果的CUSPARSE API 去获得最大的重叠。
虽然开发者能创建很多流,但是通过实际经验可知,同时运行的代码一般不会超过16个。
参考文档:http://docs.nvidia.com/cuda/pdf/CUSPARSE_Library.pdf
《CUSPARSE LIBRARY》
作者:fulva 发表于2013-9-12 2:38:20 原文链接
阅读:199 评论:0 查看评论