首页 注册 登录
V2EX = way to explore V2EX 是一个关于分享和探索的地方
现在注册 已注册用户请 登录
NVIDIA CUDA PyCUDA Caffe
V2EX CUDA

cuda 计算 titan v 为何比 rtx2080ti 更慢?

different · 2019年07月06日 16:59:28 +08:00 · 13025 次点击
这是一个创建于 2378 天前的主题,其中的信息可能已经有所发展或是发生改变。

指的是双精度。

不知道是不是编译的时候双精度需要添加一些其他指令?

下面是 kernel。

void CSR(int i,unsigned int N, unsigned int *xadj,unsigned int *adjncy, double *dataxx,double *datayy,double *datazz, double *Cspin, double *CHDemag,double *CH)

{

if(i < N)
{
	double dot[3]={0,0,0};
	for(int n = xadj[i] ; n < xadj[i+1]; n++)
	{
		unsigned int neigh=adjncy[n];
		printf("%d\n",n);
		printf("%f,%f,%f\n",dataxx[n],datayy[n],datazz[n]);
		double val[3] = {dataxx[n],datayy[n],datazz[n]};
		for(unsigned int co = 0 ; co < 3 ; co++)
		{
			dot[co]+=(val[co]*Cspin[3*neigh+co]);
		}
	}
	double a=CHDemag[3*i];
	double b=CHDemag[3*i+1];
	double c=CHDemag[3*i+2];
	CH[3*i]=a+dot[0];
	CH[3*i+1]=b+dot[1];
	CH[3*i+2]=c+dot[2];
}

}

通过显卡参数来看,rtx 应该是没有双精度计算单元的。而 titan v 的双精度应该还行。

而我跑的时候,titan v 比 rtx 慢了三分之一。。

求解

第 1 条附言 · 2019年07月06日 18:00:27 +08:00
__global__ void CSpMV_CSR(unsigned int N,
unsigned int *xadj,unsigned int *adjncy,
double *dataxx,double *datayy,double *datazz,
double *Cspin,
double *CHDemag,double *CH)
{

int i = blockDim.x*blockIdx.x + threadIdx.x;


if(i < N)
{
double dot[3]={0,0,0};
for(int n = xadj[i] ; n < xadj[i+1]; n++)
{
unsigned int neigh=adjncy[n];
double val[3] = {dataxx[n],datayy[n],datazz[n]};
for(unsigned int co = 0 ; co < 3 ; co++)
{
dot[co]+=(val[co]*Cspin[3*neigh+co]);
}
}
CH[3*i]=CHDemag[3*i]+dot[0];
CH[3*i+1]=CHDemag[3*i+1]+dot[1];
CH[3*i+2]=CHDemag[3*i+2]+dot[2];
}
}
2 条回复 2020年10月12日 12:51:56 +08:00
different
1
different
OP
2019年07月06日 18:01:02 +08:00
主题的代码发错了,改正的代码在附言里面
Testlinuxtous
2
Testlinuxtous 2020年10月12日 12:51:56 +08:00 via iPhone
有联系方式交流学习吗?
关于 · 帮助文档 · 自助推广系统 · 博客 · API · FAQ · Solana · 3588 人在线 最高记录 6679 · Select Language 创意工作者们的社区 World is powered by solitude VERSION: 3.9.8.5 · 28ms · UTC 04:22 · PVG 12:22 · LAX 20:22 · JFK 23:22
♥ Do have faith in what you're doing.

AltStyle によって変換されたページ (->オリジナル) /