标签: gpu

帮我理解cuda

我在使用cuda理解NVIDIA gpu架构中的线程时遇到了一些麻烦.

请任何人澄清这些信息:一个8800 gpu有16个SM,每个有8个SP.所以我们有128个SP.

我正在观看斯坦福的视频演示,并且说每个SP都能够在当前运行96个线程.这是否意味着它(SP)可以同时运行96/32 = 3个warp?

此外,由于每个SP可以运行96个线程,并且每个SM都有8个SP.这是否意味着每个SM可以同时运行96*8 = 768个线程?但是如果每个SM一次只能运行一个Block,并且一个块中的最大线程数是512,那么同时运行768个线程并且最多有512个线程的目的是什么?

一个更普遍的问题是:如何将块,线程和warp分配给SM和SP?我读到每个SM一次只能执行一个块,块中的线程被分成warp(32个线程),SP执行warp.

parallel-processing cuda gpu

16
推荐指数
2
解决办法
1万
查看次数

堆栈卫士可能已禁用?

我正在尝试在rootbeer库中运行第一个示例,您可以从此处找到它.

问题是,即使我按照他们的所有说明操作,当我尝试运行Jar时,我收到以下消息

root@ubuserver3:/home/ubuadmin/JavaJars/HelloWordGPU# java -jar HelloWorldGPU.jar
OpenJDK Client VM warning: You have loaded library /usr/lib/libcuda.so.319.37 which might have disabled stack guard. The VM will try to fix the stack guard now.
It's highly recommended that you fix the library with 'execstack -c <libfile>', or link it with '-z noexecstack'.
Exception in thread "main" java.lang.NullPointerException
        at org.trifort.rootbeer.runtime.Rootbeer.run(Rootbeer.java:104)
        at ScalarMult.test(ScalarMult.java:13)
        at Main.main(Main.java:17)
Run Code Online (Sandbox Code Playgroud)

我不是Linux人员,所以我不明白如何正确执行此命令.我也不明白它们的意思是什么,因为这是我第一次使用GPU编程.但我知道用错误​​的命令搞乱GPU是一个问题.

java ubuntu gpu nullpointerexception rootbeer

16
推荐指数
1
解决办法
4万
查看次数

解释intel_gpu_top输出

任何人都可以对输出有所了解intel_gpu_top吗?具体来说,什么是任务GAM,VS等(手册页没什么帮助.)

比特流忙什么意思?它似乎总是零......

               render busy:  45%: ?????????                              render space: 83/131072
            bitstream busy:   0%:                                     bitstream space: 0/131072
              blitter busy:   0%:                                       blitter space: 0/131072

                      task  percent busy
                       GAM:  43%: ?????????               vert fetch: 0 (0/sec)
                        VS:  35%: ???????                 prim fetch: 0 (0/sec)
                        CL:  33%: ???????              VS invocations: 2101845324 (1427552/sec)
                        SF:  33%: ???????              GS invocations: 0 (0/sec)
                        VF:  33%: ???????                   GS prims: 0 (0/sec)
                      GAFS:  33%: ???????              CL invocations: 701123988 (475776/sec)
                       SOL:  32%: ???????                   CL prims: …
Run Code Online (Sandbox Code Playgroud)

gpu intel

16
推荐指数
1
解决办法
5041
查看次数

为什么a*b*a在Matlab脚本中使用gpuArray时需要比('*'(a*b)')'更长的时间?

下面的代码执行操作上gpuArrays相同的操作ab在两种不同的方式.第一部分计算(a'*(a*b)')',第二部分计算a*b*a.然后验证结果是相同的.

%function test
clear
rng('default');rng(1);
a=sprand(3000,3000,0.1);
b=rand(3000,3000);
a=gpuArray(a);
b=gpuArray(b);
tic;
c1=gather(transpose(transpose(a)*transpose(a*b)));
disp(['time for (a''*(a*b)'')'': ' , num2str(toc),'s'])

clearvars -except c1

rng('default');
rng(1)
a=sprand(3000,3000,0.1);
b=rand(3000,3000);
a=gpuArray(a);
b=gpuArray(b);
tic;
c2=gather(a*b*a);
disp(['time for a*b*a: ' , num2str(toc),'s'])

disp(['error = ',num2str(max(max(abs(c1-c2))))])

%end
Run Code Online (Sandbox Code Playgroud)

但是,计算(a'*(a*b)')'速度大约是计算速度的4倍a*b*a.以下是R2018a上Nvidia K20上面脚本的输出(我尝试过不同的版本和不同的GPU,具有相似的行为).

>> test
time for (a'*(a*b)')': 0.43234s
time for a*b*a: 1.7175s
error = 2.0009e-11
Run Code Online (Sandbox Code Playgroud)

甚至更奇怪的是,如果上述脚本的第一行和最后一行是未注释的(它变成一个函数),则两个取较长的时间量(〜1.7S代替〜0.4秒).以下是此案例的输出:

>> test
time for (a'*(a*b)')': 1.717s
time for a*b*a: 1.7153s
error = 1.0914e-11
Run Code Online (Sandbox Code Playgroud)

我想知道是什么导致了这种行为,以及如何在matlab函数内而不是在脚本内部的较短时间内(即~0.4s而不是~1.7s)执行 …

matlab gpu matrix linear-algebra sparse-matrix

16
推荐指数
2
解决办法
277
查看次数

错误:分配具有形状的张量时出现 OOM

在使用 Apache JMeter 进行性能测试期间,我的初始模型遇到了问题。

错误:分配形状为 [800,1280,3] 的张量并在 /job:localhost/replica:0/task:0/device:GPU:0 上通过分配器 GPU_0_bfc [[Node: Cast = CastDstT=DT_FLOAT, SrcT=DT_UINT8, _device="/job:localhost/replica:0/task:0/device:GPU:0"]] 提示:如果您想在 OOM 发生时查看已分配张量的列表,请将 report_tensor_allocations_upon_oom 添加到 RunOptions for current分配信息。

gpu python-3.x gunicorn tensorflow

16
推荐指数
1
解决办法
3万
查看次数

使用Delphi利用GPGPU技术?

GPGPU是在视频卡上使用并行处理器以大幅提高性能的原则.

有没有人对使用OpenCL或CUDA在Delphi中使用GPGPU有任何想法?CUDA只是NVidia,但他们也采用了OpenCL"标准".

我从Google搜索中找到了一些Delphi样本,但它们要么崩溃,要么不编译/运行.

最终的指导样本将是:

  1. 从这里下载并安装OpenCL DLL.
  2. 从这里下载OpenCL SDK.
  3. 从这里下载此示例Delphi项目.
  4. 打开并编译Delphi项目.如果一切按计划进行,它将做"无论它应该做什么"

在那个阶段,我可以开始研究OpenCL SDK并编写/编译DLL来从任何Delphi应用程序调用.

这种东西真的开始起飞了.Embarcadero在这个阶段不需要做任何事情(除非他们想要),但是如果有一个Delphi的教程和样本可用,那就太棒了.许多样本可用于其他语言,但我们还需要一个简单的Delphi示例来说明将Delphi用于GPGPU应用程序是多么容易.

delphi gpu gpgpu opencl

15
推荐指数
2
解决办法
7815
查看次数

在OpenGL中处理FBO的最佳方法是什么?

我很想知道很长一段时间处理OpenGL FrameBuffer对象(FBO)的最佳方法.切换FBO可能成本很高,但也定义了新的附件.

你怎么快速做到的?

我在这三个之间犹豫不决:

  • 1 FBO用于所有内容,更改附件但不要在FBO之间切换

  • 1渲染路径中每个渲染目标(大小+格式)的FBO.这意味着我将为相似的渲染目标重用相同的FBO.但这样一种自定义模糊将花费4+ FBO.

  • 每个渲染目标1个FBO,仅设置附件一次,然后在FBO之间切换

另外,我应该最小化FBO开关的数量(比如我最小化纹理绑定的数量)?

opengl fbo rendering gpu

15
推荐指数
1
解决办法
6903
查看次数

在GPU上运行MSIL

也许是一个疯狂的问题但是有可能在GPU上运行线程吗?

我问的原因是我有一些非常复杂的计算要执行(它主要是数学和数组),并希望看看我是否可以使用GPU获得任何速度提升.

哦,我想在C#或F#中做到这一点:)

谢谢

c# f# multithreading gpu multicore

15
推荐指数
1
解决办法
762
查看次数

错误代码(-11)::在OpenCL中获取错误"cl_build_program_failure"的所有可能原因是什么?

我在linux上使用ATI RV770显卡,OpenCl 1.0和ati-stream-sdk-v2.3-lnx64.

在运行我的主机代码时,包括以下两个部分来构建内核程序,我得到错误代码(-11)即cl_build_program_failure.这是否意味着编译了内核程序,如果没有,那么它是如何编译和调试的?

const char* KernelPath = "abc_kernel.cl";   //kernel program is in separate file but in same directory of host code..
Run Code Online (Sandbox Code Playgroud)

/ *从内核源代码创建程序对象 ******* /

char* sProgramSource = readKernelSource(KernelPath);
size_t sourceSize =  strlen(sProgramSource) ;
program = clCreateProgramWithSource(context, 1,(const char **) &sProgramSource,&sourceSize, &err);
checkStatus("error while creating program",err);
Run Code Online (Sandbox Code Playgroud)

/ *构建(编译和链接)程序******* /

char* options = (char* )malloc(10*sizeof(char));
strcpy(options, "-g");
err = clBuildProgram(program, num_devices, devices_id, options, NULL, NULL);
checkStatus("Build Program Failed", …
Run Code Online (Sandbox Code Playgroud)

debugging gpu opencl

15
推荐指数
1
解决办法
2万
查看次数

Tensorflow Deep MNIST:资源耗尽:OOM在分配形状的张量时[10000,32,28,28]

这是我正在运行的示例MNIST代码:

from tensorflow.examples.tutorials.mnist import input_data
mnist = input_data.read_data_sets('MNIST_data', one_hot=True)

import tensorflow as tf
sess = tf.InteractiveSession()

x = tf.placeholder(tf.float32, shape=[None, 784])
y_ = tf.placeholder(tf.float32, shape=[None, 10])

W = tf.Variable(tf.zeros([784,10]))
b = tf.Variable(tf.zeros([10]))

y = tf.nn.softmax(tf.matmul(x,W) + b)

def weight_variable(shape):
  initial = tf.truncated_normal(shape, stddev=0.1)
  return tf.Variable(initial)

def bias_variable(shape):
  initial = tf.constant(0.1, shape=shape)
  return tf.Variable(initial)


def conv2d(x, W):
  return tf.nn.conv2d(x, W, strides=[1, 1, 1, 1], padding='SAME')

def max_pool_2x2(x):
  return tf.nn.max_pool(x, ksize=[1, 2, 2, 1],
                        strides=[1, 2, 2, 1], padding='SAME')


W_conv1 = weight_variable([5, …
Run Code Online (Sandbox Code Playgroud)

python gpu mnist tensorflow

15
推荐指数
2
解决办法
3万
查看次数