首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何通过cublasCreate()降低巨大的时间成本(10秒)?

如何通过cublasCreate()降低巨大的时间成本(10秒)?
EN

Stack Overflow用户
提问于 2016-11-09 18:13:52
回答 1查看 303关注 0票数 0

在我的研究中,我正在使用cuSPARSE_v2/cuBLAS_v2库来实现共轭梯度(CG)求解器来处理一个大的稀疏矩阵。我观察到的奇怪之处是cublasCreate()函数花费了大量的时间,~10秒。我知道库的初始化成本通常很大,但是通过搜索论坛,我发现cublasCreate的通常时间成本是100 ms,而不是10s。而整个CG迭代部分仅需0.6 ~1秒。我还使用CUSP库实现了CG求解器,它的性能很好--总代码时间为0.5秒。

那么,如何通过cublasCreate()降低时间成本呢?另外,如果cuda库的初始化必须有10 s,那么为什么CUSP库的性能要好得多,初始化成本几乎可以忽略呢?

我在GTX 980 Ti上使用CUDA-7.5。下面是我的带有计时的代码片段:

代码语言:javascript
复制
// Timing begin
struct timeval begin, end;
gettimeofday(&begin, 0); 

cublasStatus = cublasCreate(&cublasHandle);

// Timing end
gettimeofday(&end, 0); 
float cgtime = (end.tv_sec - begin.tv_sec) * 1000.0 + (end.tv_usec - begin.tv_usec) / 1000.0;
printf("\nTime elapse: %f ms.\n", cgtime);

非常感谢!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-11-11 01:53:05

最后,我发现了一个原因:我们的主服务器节点不能正常工作,无法正常与GPU节点通信,这就阻碍了cuBLAS库的动态链接。一次重启就恢复了一切。

因此,cublasCreate()在这一点上没有问题。我在这里张贴它作为一个答案,以防任何人遇到类似的情况(虽然可能性很低)。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40513446

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档