标签: multi-gpu

CUDA SDK示例在multi-gpu系统中抛出各种错误

我有一个运行Ubuntu Precise的Dell Precision Rack,配备两个Tesla C2075和一个显示设备Quadro 600.我最近在我的桌面计算机上完成了一些测试,现在尝试将东西移植到工作站.

由于CUDA不存在,我根据本指南安装了它,并根据这个建议调整了SDK Makefile .

我现在面临的是,没有一个样本(我测试了10个不同的样本)正在运行.这些是我得到的错误:


[deviceQuery] starting...

./deviceQuery Starting...

 CUDA Device Query (Runtime API) version (CUDART static linking)

cudaGetDeviceCount returned 10
-> invalid device ordinal
[deviceQuery] test results...
FAILED

> exiting in 3 seconds: 3...2...1...done!
Run Code Online (Sandbox Code Playgroud)
[MonteCarloMultiGPU] starting...

CUDA error at MonteCarloMultiGPU.cpp:235 code=23510 (cudaErrorInvalidDevice) "cudaGetDeviceCount(&GPU_N)"MonteCarloMultiGPU
==================
Parallelization method  = threaded
Problem scaling         = weak
Number of GPUs          = 0
Total number of options = 0
Number of paths         = 262144
main(): generating …
Run Code Online (Sandbox Code Playgroud)

cuda multi-gpu ubuntu-12.04

7
推荐指数
1
解决办法
2194
查看次数

CUDA 流与设备相关吗?如何获取流的设备?

我有一个 CUDA 流,有人递给我 - 一个cudaStream_t值。CUDA运行时 API似乎没有指示我如何获取与该流关联的设备的索引。

现在,我知道这cudaStream_t只是一个指向驱动程序级流结构的指针,但我不太愿意深入研究驱动程序。有一个惯用的方法来做到这一点吗?或者有什么好的理由不想这样做?

编辑:这个问题的另一个方面是流是否确实与设备相关联,在这种方式中,CUDA 驱动程序本身可以根据给定的指向结构确定设备的标识。

cuda multi-gpu cuda-streams

6
推荐指数
1
解决办法
3159
查看次数

OpenGL多GPU支持

当我们在PC上创建OpenGL上下文时,有没有办法选择使用哪个物理设备或使用了多少设备?最新的OpenGL(4.5)API是否支持多GPU架构?如果我有两个相同的显卡(例如,两个Nvidia GeForce显卡),我如何正确编程OpenGL API以获得我有两张卡的好处?如何以最小的努力将OpenGL程序从单GPU版本转移到多GPU版本?

opengl sli multi-gpu

6
推荐指数
1
解决办法
2226
查看次数

ffmpeg - cuda 编码 - OpenEncodeSessionEx 失败:内存不足

我在使用 GPU (CUDA) 进行 ffmpeg 视频编码时遇到问题。

我有 2 个 nVidia GTX 1050 Ti

当我尝试进行多个并行编码时,问题就出现了。超过 2 个进程和 ffmpeg 像这样死亡:

[h264_nvenc @ 0xcc1cc0] OpenEncodeSessionEx failed: out of memory (10)
Run Code Online (Sandbox Code Playgroud)

问题是 nvidia-smi 显示 gpu 上有很多可用资源:

+-----------------------------------------------------------------------------+
| NVIDIA-SMI 384.66                 Driver Version: 384.66                    |
|-------------------------------+----------------------+----------------------+
| GPU  Name        Persistence-M| Bus-Id        Disp.A | Volatile Uncorr. ECC |
| Fan  Temp  Perf  Pwr:Usage/Cap|         Memory-Usage | GPU-Util  Compute M. |
|===============================+======================+======================|
|   0  GeForce GTX 105...  Off  | 00000000:41:00.0 Off |                  N/A |
| 40%   37C    P0 …
Run Code Online (Sandbox Code Playgroud)

gpu ffmpeg x264 multi-gpu

6
推荐指数
1
解决办法
6257
查看次数

如何使用Tensorflow-GPU和Keras修复低挥发性GPU-Util?

我有一台4 GPU机器,使用Keras在其上运行Tensorflow(GPU)。我的一些分类问题需要几个小时才能完成。

nvidia-smi返回的Volatile GPU-Util在我的4个GPU中都没有超过25%。如何增加GPU使用率并加快培训速度? NVIDIA GPU实用程序

nvidia multi-gpu keras tensorflow

6
推荐指数
2
解决办法
3619
查看次数

将两个单独的GPU分配给python中的不同线程?

我想使用两个python源代码,第一个是使用开发的,tensorflow另一个是使用开发的pythorch。我想使用单独的GPU在线程中运行这些代码。两个代码的输入是相同的,并且当两个代码的结果准备好时,会有一些后处理。

我无法使用tf.device,因为它在初始化时会获取所有可用的GPU,并且我必须使用CUDA_VISIBLE_DEVICES环境变量。可通过在python中设置CUDA_VISIBLE_DEVICES来选择GPU访问。

os.environ["CUDA_VISIBLE_DEVICES"] = "Accessible_GPUs"
Run Code Online (Sandbox Code Playgroud)

但不幸的是,似乎CUDA_VISIBLE_DEVICES不能与线程一起使用:

os.environ["CUDA_VISIBLE_DEVICES"] = "2"
Thread(target = method_from_code1).start()
os.environ["CUDA_VISIBLE_DEVICES"] = "3"
Thread(target = method_from_code2).start()
Run Code Online (Sandbox Code Playgroud)

现在的问题是为每个线程的环境变量设置不同的值。这个问题有解决方案吗?

python gpu multi-gpu

6
推荐指数
0
解决办法
236
查看次数

如何使用 keras.utils.Sequence 数据生成器和 tf.distribute.MirroredStrategy 在张量流中进行多 GPU 模型训练?

我想使用 TensorFlow 2.0 在多个 GPU 上训练模型。在分布式训练的tensorflow教程(https://www.tensorflow.org/guide/distributed_training)中,tf.data数据生成器转换为分布式数据集,如下所示:

dist_dataset = mirrored_strategy.experimental_distribute_dataset(dataset)
Run Code Online (Sandbox Code Playgroud)

但是,我想改用我自己的自定义数据生成器(例如,keras.utils.Sequence数据生成器以及keras.utils.data_utils.OrderedEnqueuer异步批量生成)。但该mirrored_strategy.experimental_distribute_dataset方法仅支持tf.data数据生成器。如何改用 keras 数据生成器?

谢谢你!

multi-gpu keras tensorflow2.0

6
推荐指数
1
解决办法
5502
查看次数

窗口 10 上 NCCL 的替代方案

所以我在 Windows 10 上,现在使用多个 GPU 来运行一些机器学习模型的训练,这个模型是关于 GAN 算法的,你可以在这里查看完整的代码

在这里,我需要减少不同 GPU 设备的总和,如下所示:

 if len(devices) > 1:
            with tf.name_scope('SumAcrossGPUs'), tf.device(None):
                for var_idx, grad_shape in enumerate(self._grad_shapes):
                    g = [dev_grads[dev][var_idx][0] for dev in devices]
                    if np.prod(grad_shape):  # nccl does not support zero-sized tensors
                        g = tf.contrib.nccl.all_sum(g)
                    for dev, gg in zip(devices, g):
                        dev_grads[dev][var_idx] = (gg, dev_grads[dev][var_idx][1])
Run Code Online (Sandbox Code Playgroud)

现在在这部分我收到一个关于 NCCL 的错误,我注意到它在 Windows 上不受支持,它需要 linux,因此我被困在这里......这里的“解决方案”是什么??..我怎样才能设法在 Windows 上使用 NCCL 或上面代码的替代方案..有什么简单的方法可以做到这一点吗?...提前致谢。

注意:我已经检查了一些 stackoverflow 问题。但是,没有答案可以解决我的问题。

multi-gpu tensorflow

6
推荐指数
1
解决办法
2973
查看次数

如何在多个 GPU 上运行 Pytorch 代码?

我有多个 GPU 设备,想在它们上运行 Pytorch。我已经在我的代码中尝试了多 GPU 示例数据并行

device = torch.device("cuda:0,1,2")
model = torch.nn.DataParallel(model, device_ids=[0, 1, 2])
model.to(device)
Run Code Online (Sandbox Code Playgroud)

在我的代码中。但训练仍然在一个 GPU 上进行(cuda:0)。在 shell 中,我还在export CUDA_VISIBLE_DEVICES=0,1,2运行代码之前选择了使用的 GPU。

有人可以帮我解决这个问题吗?

gpu multi-gpu pytorch

6
推荐指数
0
解决办法
5678
查看次数

如何在pytorch中使用多个GPU训练模型?

我的服务器有两个GPU,如何同时使用两个GPU进行训练,以最大限度地发挥其计算能力?我下面的代码正确吗?它能让我的模型得到正确的训练吗?

class MyModel(nn.Module):
    def __init__(self):
        super(MyModel, self).__init__()
        self.bert = pretrained_model
        # for param in self.bert.parameters():
        #     param.requires_grad = True
        self.linear = nn.Linear(2048, 4)


    #def forward(self, input_ids, token_type_ids, attention_mask):
    def forward(self, input_ids, attention_mask):
        batch = input_ids.size(0)
        #output = self.bert(input_ids, token_type_ids, attention_mask).pooler_output
        output = self.bert(input_ids, attention_mask).last_hidden_state
        print('last_hidden_state',output.shape) # torch.Size([1, 768]) 
        #output = output.view(batch, -1) #
        output = output[:,-1,:]#(batch_size, hidden_size*2)(batch_size,1024)
        output = self.linear(output)
        return output

device = torch.device("cuda" if torch.cuda.is_available() else "cpu")
if torch.cuda.device_count() > 1:
    print("Use", torch.cuda.device_count(), 'gpus')
    model = MyModel()
    model …
Run Code Online (Sandbox Code Playgroud)

python multi-gpu pytorch

6
推荐指数
1
解决办法
5859
查看次数