小编pyC*_*uda的帖子

在matlab中使用多个GPU

这是使用Jacket/matlab的ginfo的输出:

Detected CUDA-capable GPUs:
CUDA driver 270.81, CUDA toolkit 4.0
GPU0 Tesla C1060, 4096 MB, Compute 1.3 (single,double) (in use)
GPU1 Tesla C1060, 4096 MB, Compute 1.3 (single,double)
GPU2 Quadro FX 1800, 742 MB, Compute 1.1 (single)
Display Device: GPU2 Quadro FX 1800
Run Code Online (Sandbox Code Playgroud)

问题是 :

  1. 我可以同时使用两个特斯拉(parfor)吗?怎么样?
  2. 如何知道当前正在运行/执行程序的核心数?
  3. 在运行以下代码并制作Quadro(使用中)之后,我发现尽管特斯拉拥有240个内核且Quadro只有64个,但它比特斯拉需要更少的时间?也许是因为它是显示设备?也许是因为它的单精度和特斯拉是双精度?
clc; clear all;close all;
addpath ('C:/Program Files/AccelerEyes/Jacket/engine');
i = im2double(imread('cameraman.tif'));
i_gpu=gdouble(i);
h=fspecial('motion',50,45);% Create predefined 2-D filter
h_gpu=gdouble(h);
tic;
for j=1:500
    x_gpu = imfilter( i_gpu,h_gpu );
  end
i2 = double(x_gpu); %memory transfer 
t=toc …
Run Code Online (Sandbox Code Playgroud)

parallel-processing matlab cuda gpu image-processing

9
推荐指数
1
解决办法
3117
查看次数

使用CUDA在GPU上并行Kronecker张量积

我正在使用[PTX文件与matlab parallel.gpu.CUDAkernel] [2]在GPU上并行工作[此文件] [1].我[kron tensor product] [3]的问题如下.我的代码应该乘以两个向量kron(a,b)乘以第一个向量a=<32x1>的每个元素乘以另一个向量的所有元素,b=<1x32>输出向量大小将是k<32x32>=a.*b.我试着用C++编写它并且它起作用,因为我只关心求和2d数组的所有元素.我认为我可以轻松实现一维数组因为m=sum(sum(kron(a,b)))我正在处理的代码

for(i=0;i<32;i++)
 for(j=0;j<32;j++)
   k[i*32+j]=a[i]*b[j]
Run Code Online (Sandbox Code Playgroud)

这意味着让第a[i]th个元素乘以eachelement b而且我会使用32块,每个块都有一个32线程,代码应该是

__global__ void myKrom(int* c,int* a, int*b) {
  int i=blockDim.x*blockIdx.x+threadIdx.x;
  while(i<32) {
    c[i]=a[blockIdx.x]+b[blockDim.x*blockIdx.x+threadIdx.x];
  }
Run Code Online (Sandbox Code Playgroud)

这应该成为blockIdx.x外部循环的技巧,但事实并非如此.任何身体可以告诉我在哪里,我可以要求平行的方式来做平行和.

parallel-processing matlab cuda gpu linear-algebra

5
推荐指数
1
解决办法
1181
查看次数