为了账号安全,请及时绑定邮箱和手机立即绑定

Titan RTX 上双精度和单精度的矩阵乘法基准测试

Titan RTX 上双精度和单精度的矩阵乘法基准测试

www说 2023-08-15 17:28:09
我试图了解我们的 GPU 工作站的单精度和双精度之间的性能差异。我们的工作站配备了两个 TITAN RTX GPU,但我在单个 Titan RTX 上运行基准测试。我正在使用 cublas 矩阵乘法测试性能。我将由随机浮点数或双精度数组成的 8192x8192 矩阵相乘。为了确保我这边没有错误,我还在Python中使用cupy库重复了这个过程,结果非常相似。浮点型的测试结果约为每 1 次乘法 75 毫秒,双精度型的测试结果约为 2,000 毫秒。如果我有一个较旧的 GPU,这将很有意义,因为 75*32 = 2,400~2000,因此我的双精度性能将比 https://docs.nvidia 表中预期的差约 32 倍。然而,我的 GPU 的计算能力为 7.5,因此我预计性能只会翻倍 2 倍。其他信息:Ubuntu 18 LTS、nvcc 10.2、驱动程序 440.82。这是 CUDA 代码:#include <iostream>#include <chrono>#include <string>#include <cuda_runtime.h>#include "cublas_v2.h"#include <math.h>#include <stdio.h>#include <cuda.h>#include <device_functions.h>#include <sstream>#include <time.h>unsigned long mix(unsigned long a, unsigned long b, unsigned long c){    a=a-b;  a=a-c;  a=a^(c >> 13);    b=b-c;  b=b-a;  b=b^(a << 8);    c=c-a;  c=c-b;  c=c^(b >> 13);    a=a-b;  a=a-c;  a=a^(c >> 12);    b=b-c;  b=b-a;  b=b^(a << 16);    c=c-a;  c=c-b;  c=c^(b >> 5);    a=a-b;  a=a-c;  a=a^(c >> 3);    b=b-c;  b=b-a;  b=b^(a << 10);    c=c-a;  c=c-b;  c=c^(b >> 15);    return c;}using namespace std;int main(){        int deviceCount;        cudaGetDeviceCount(&deviceCount);        cudaDeviceProp deviceProp;        cublasStatus_t err;        cudaGetDeviceProperties(&deviceProp, 0);        printf("Detected %d devices \n", deviceCount);        printf("Device %d has compute capability %d.%d:\n\t maxshmem %d. \n\t maxthreads per block %d. \n\t max threads dim %d. %d. %d.\n ", 0,                deviceProp.major, deviceProp.minor, deviceProp.sharedMemPerBlock, deviceProp.maxThreadsPerBlock, deviceProp.maxThreadsDim[0],                deviceProp.maxThreadsDim[1], deviceProp.maxThreadsDim[2]);        cudaEvent_t start_d, stop_d;        cudaEventCreate(&start_d);        cudaEventCreate(&stop_d);        //RND insicialization        unsigned long seed = mix(clock(), time(NULL), 0);       srand(seed);        int N=8192;        int Nloops=2;                }}
查看完整描述

1 回答

?
富国沪深

TA贡献1790条经验 获得超9个赞

好的,有一个脚注表示,对于计算能力 7.5(此处的情况),性能为 2,但不是 32,对于浮点数,性能为 64,这意味着乘法加加双精度数的运算比浮点数慢 32 倍。

如果 float 和 double 问题都完全受算术限制,我预计速度减慢约为 32。实际上,减速幅度略小(2000/75 ~ 27),这可能是浮动带宽受限问题的结果,也可能与其他因素有关。


查看完整回答
反对 回复 2023-08-15
  • 1 回答
  • 0 关注
  • 303 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号