首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >对于具有多个GPU的一维长维矩阵,cublas矩阵乘法给出了内部误差。

问对于具有多个GPU的一维长维矩阵,cublas矩阵乘法给出了内部误差。
EN

Stack Overflow用户
提问于 2019-10-18 16:48:15
回答 1查看 320关注 0票数 0

我试图做的只是简单地将cublasDgemm (矩阵-矩阵乘法)应用于几个具有“双”(8字节)类型元素的矩阵,所有这些矩阵都具有非常大的一维。在我的例子中,矩阵的大小是12755046乘46。简单地说,A46,12755046*B_i12755046,46 = C_i46,46,其中i= 1,2,3,.

这台机器包含128 to内存和两个GTX2080Ti (11 to内存),所以我最初的策略是将B_i分发给每个GPU。然而,当我在两个GPU上执行我的代码时,我总是会得到内部错误。

因此,我通过尝试三种方法解决了这个问题: 1.只使用一个GPU。没有错误。2.缩小矩阵大小,但继续使用两个GPU。没有错误。3.使用隐式使用两个GPU的cublasXt。没有错误。

虽然它已经解决了,但我仍然有兴趣找到一个答案,为什么我原来的计划不适用于大维矩阵?我猜想这可能是由于来自cublas的一些内部限制,还是我错过了一些配置?

我在这里附加了我的简化代码,以说明我的原始计划:

代码语言:javascript
复制
double *A, *B[2], *C[2];
cudaMallocManaged(&A, 46*12755046*sizeof(double));
cudaMallocManaged(&B[0], 46*12755046*sizeof(double));
cudaMallocManaged(&B[1], 46*12755046*sizeof(double));
cudaMallocManaged(&C[0], 46*12755046*sizeof(double));
cudaMallocManaged(&C[1], 46*12755046*sizeof(double));
givevalueto(A);
givevalueto(B[0]);
givevalueto(B[1]);
double alpha = 1.0;
double beta = 0.0;
cublasHandle_t  handle[nGPUs];
int iGPU;
for(iGPU=0;iGPU<nGPUs;iGPU++)
{
   cublasCreate (& handle[iGPU]);
}
for(iGPU=0;iGPU<nGPUs;i++)
{
   cudaSetDevice(iGPU);
   cublasDgemm(handle[iGPU],CUBLAS_OP_N,CUBLAS_OP_N,46,46,12755046,&alpha,A,46,B[iGPU],12755046,&beta,C[iGPU],46);
}
for(iGPU=0;iGPU<nGPUs;i++)
{
   cudaSetDevice(iGPU);
   cudaDeviceSynchronize();
}
for(iGPU=0;iGPU<nGPUs;iGPU++)
{
   cudaFree(B[iGPU]);
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-10-18 18:34:32

cublas句柄适用于创建句柄时处于活动状态的设备。

从文献资料到cublasCreate

CUBLAS库上下文与当前的CUDA设备相关联。

还请参见cublas上下文的描述:

假定与特定cuBLAS上下文关联的设备在相应的cublasCreate()和cublasDestroy()调用之间保持不变。为了让cuBLAS库在同一个主机线程中使用不同的设备,应用程序必须通过调用cudaSetDevice()来设置要使用的新设备,然后通过调用cublasCreate()创建另一个与新设备相关联的cuBLAS上下文。

您可以使用以下方法修复代码:

代码语言:javascript
复制
for(iGPU=0;iGPU<nGPUs;iGPU++)
{
   cudaSetDevice(iGPU);              // add this line
   cublasCreate (& handle[iGPU]);
}
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58455094

复制
相关文章

相似问题

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