我最近了解了NVCC如何为不同的计算架构编译CUDA设备代码.
根据我的理解,当使用NVCC的-gencode选项时,"arch"是程序员应用程序所需的最小计算体系结构,也是NVCC的JIT编译器将编译PTX代码的最小设备计算体系结构.
我也明白-gencode的"code"参数是NVCC完全编译应用程序的计算架构,因此不需要JIT编译.
在检查了各种CUDA项目Makefile之后,我注意到以下情况经常发生:
-gencode arch=compute_20,code=sm_20
-gencode arch=compute_20,code=sm_21
-gencode arch=compute_21,code=sm_21
Run Code Online (Sandbox Code Playgroud)
经过一些阅读,我发现可以在一个二进制文件中编译多个设备架构 - 在本例中为sm_20,sm_21.
我的问题是为什么需要这么多的arch/code对?以上是否使用了"拱"的所有值?
它之间的区别是什么?
-arch compute_20
-code sm_20
-code sm_21
Run Code Online (Sandbox Code Playgroud)
是自动选择"拱形"字段中最早的虚拟架构,还是存在其他一些模糊行为?
我应该注意其他任何编译和运行时行为吗?
我已经阅读了手册http://docs.nvidia.com/cuda/cuda-compiler-driver-nvcc/index.html#gpu-compilation,我仍然不清楚编译或运行时会发生什么.
我们有一个安装了两个Nvidia Quadro FX 5800卡的工作站.运行deviceQuery CUDA示例显示每个多处理器(SM)的最大线程数为1024,而每个块的最大线程数为512.
鉴于每次只能在每个SM上执行一个块,为什么最大线程/处理器加倍最大线程/块?我们如何利用每个SM的其他512个线程?
Device 1: "Quadro FX 5800"
  CUDA Driver Version / Runtime Version          5.0 / 5.0
  CUDA Capability Major/Minor version number:    1.3
  Total amount of global memory:                 4096 MBytes (4294770688 bytes)
  (30) Multiprocessors x (  8) CUDA Cores/MP:    240 CUDA Cores
  GPU Clock rate:                                1296 MHz (1.30 GHz)
  Memory Clock rate:                             800 Mhz
  Memory Bus Width:                              512-bit
  Max Texture Dimension Size (x,y,z)             1D=(8192), 2D=(65536,32768), 3D=(2048,2048,2048)
  Max Layered Texture Size (dim) x layers        1D=(8192) x 512, 2D=(8192,8192) …Run Code Online (Sandbox Code Playgroud) 我打算将我正在编写的程序的一部分自动生成多个原始文本源上的各种统计数据的高斯分布,但是我有一些问题根据以下指南生成图形:
绘图代码的一般要点如下.
import numpy as np
import matplotlib.mlab as mlab
import matplotlib.pyplot as pyplot
meanAverage = 222.89219487179491    # typical value calculated beforehand
standardDeviation = 3.8857889432054091    # typical value calculated beforehand
x = np.linspace(-3,3,100)
pyplot.plot(x,mlab.normpdf(x,meanAverage,standardDeviation))
pyplot.show()
Run Code Online (Sandbox Code Playgroud)
它所做的只是产生一个相当平坦的外观和无用的y = 0线!任何人都可以看到这里的问题是什么?
干杯.
cuda ×2
distribution ×1
gaussian ×1
gpgpu ×1
gpu ×1
matplotlib ×1
nvcc ×1
nvidia ×1
ptx ×1
python ×1