gpt4 book ai didi

matlab - 在 matlab 中使用多个 GPU

转载 作者:太空宇宙 更新时间:2023-11-03 19:20:57 27 4
gpt4 key购买 nike

这是使用 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

问题是:

  1. 我可以同时使用两台特斯拉 (parfor) 吗?如何?
  2. 如何知道当前正在运行/执行程序的内核数量?
  3. 在运行以下代码并制作 Quadro(正在使用)后,我发现尽管 Tesla 有 240 个内核而 Quadro 只有 64 个,但它花费的时间比 Tesla 少?也许是因为它是显示设备?也许是因为它是单精度而特斯拉是 double ?
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
figure(2), imshow(i2);

如果您对代码有任何帮助,我们将不胜感激。如您所见,这是用于演示 GPU 功能的非常简单的示例,仅此而已。

最佳答案

同时使用两个 Teslas:编写一个 MEX 文件并调用 cudaChooseDevice(0),启动一个内核,然后调用 cudaChooseDevice(1) 并执行另一个内核。内核调用和内存复制(即 cudaMemcpyAsynccudaMemcpyPeerAsync)是异步的。我已经给出了一个关于如何在 one of my other answers 中编写 MEX 文件(即 DLL)的示例。 .只需向该示例添加第二个内核。仅供引用,如果您可以进行一些 C/C++ 编程,则不需要 Jacket。另一方面,如果您不想花时间学习 Cuda SDK或者您没有 C/C++ 编译器,那么您只能使用 Jacket 或 gp-youGPUlib直到 Matlab 改变了 parfor 的工作方式。

另一种方法是调用 OpenCL from Matlab (再次通过 MEX 文件)。然后您可以在所有 GPU 和 CPU 上启动内核。同样,这需要一些 C/C++ 编程。

关于matlab - 在 matlab 中使用多个 GPU,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8378724/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com