Re: [问题] CUDA新手上路 平行度及硬件相关问题

楼主: Lepton (轻子)   2016-11-29 00:37:23
※ 引述《tmbyksdG (雨神妹妹的男朋友)》之铭言:
: 开发平台(Platform): (Ex: Win10, Linux, ...)
: Linux上安装CUDA环境 (CUDA版本为8.0 运算能力为3.7)(Tesla K80)
: 编译器(Ex: GCC, clang, VC++...)+目标环境(跟开发平台不同的话需列出)
: NVCC
: 额外使用到的函数库(Library Used): (Ex: OpenGL, ...)
: 问题(Question):
: 硬件方面:
: 1.我执行deviceQuery侦测到2个device(device0:Tesla K80, device1:K80),估狗发现K80
: 是由两个GK210核心所组成,那我侦测到的device是指有两个K80(4个GK210)的意思吗?
: 还是侦测到的两个device其实就是GK210?
: 2.13个SMX,总共有2496个cores,所以我一次可以同时做运算的数量是否为2496个threads?
: 软件方面:
: 我写了一个64 * 64的矩阵乘法,我想测试不同的block & thread数量去做运算,哪个执
: 行时间会比较短,我试了两种block的配置(thread数量刚好为4096,一个thread执行一
: 个输出矩阵的一个element)。
: (1)dim3 dimBlock(32, 32);
: dim3 dimGrid(2, 2);
: 这个配置是以下附的程式码配置,执行结果是正常的。
: (2)dim3 dimBlock(4, 128);
: dim3 dimGrid(1, 8);
: 换成这样配置编译之后,结果却只有大约三分之一是正常的值,其余却都是0
: ,我的threadIdx.x & threadIdx.y都是由0-1023,请问这是发生了什么错误吗?
因为压!即使你有两张卡,你还是要设定你的程式是运行在哪张卡上!
默认是只在device0上运行,要做multi-GPU又是另一个世界
所以说压不是两张卡的资源可以合并使用压,就先假装只有一张卡就好了
然后押,建议还是先参考一下cuda的文件,一个block最多只有1024个thread可以活着
这跟卡上面有几个核心没太大关溪跟可以有几个block同时执行比较有关西
剩下的block的排程跟配置问题没有很明确的答案是怎样,通常是多重效果混合
基本上压都会用profiler去分析这样设计会比较好
还有押4096对K80根本是塞牙缝等级的大小,少说也要10W个元素八
最后压如板友说的建议先熟悉一下工具cuda-memckeck nvida-smi nvprof nvvp之类的

Links booklink

Contact Us: admin [ a t ] ucptt.com