标签: gpu

Cuda块/网格尺寸:何时使用dim3?

我需要对使用 dim3 设置 CUDA 内核中的线程数进行一些清理。

我有一个一维浮点数组中的图像,我正在将其复制到设备中:

checkCudaErrors(cudaMemcpy( img_d, img.data, img.row * img.col * sizeof(float), cudaMemcpyHostToDevice));
Run Code Online (Sandbox Code Playgroud)

现在我需要设置网格和块大小来启动我的内核:

dim3 blockDims(512);
dim3 gridDims((unsigned int) ceil(img.row * img.col * 3 / blockDims.x));
myKernel<<< gridDims, blockDims>>>(...)
Run Code Online (Sandbox Code Playgroud)

我想知道:在这种情况下,由于数据是一维的,如果我使用一个 dim3 结构有关系吗?使用的任何好处

unsigned int num_blocks = ceil(img.row * img.col * 3 / blockDims.x));
myKernel<<<num_blocks, 512>>>(...)
Run Code Online (Sandbox Code Playgroud)

反而?

另外,我的理解是否正确,在使用 dim3 时,我将在内核中引用带有 2 个索引的线程 ID:

int x = blockIdx.x * blockDim.x + threadIdx.x;
int y = blockIdx.y * blockDim.y + threadIdx.y;
Run Code Online (Sandbox Code Playgroud)

当我不使用dim3 时,我只会使用一个索引?

非常感谢,

cuda gpu

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

如何让 Apache Spark 在 GPU 上运行?

我想将 apache spark 与 GPU 集成,但 spark 可以在 java 上运行,而 gpu 使用 CUDA/OpenCL,那么我们如何合并它们。

cpu cuda gpu opencl apache-spark

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

无法从 keras.utils 导入 multi_gpu_model

我在 ubuntu 16.04 上有 tensorflow-gpu 1.2.1 和 keras。

我无法执行:

from kears.utils import multi_gpu_model 
Run Code Online (Sandbox Code Playgroud)

有没有人像他们文档的常见问题部分中描述的那样使用 multi_gpu_model 取得了成功?

我有一台带有 4 个 GeForce GTX 1080 Ti 卡的 4 GPU 机器,并且想使用所有这些卡。

这是我得到的错误:

import keras.utils.multi_gpu_model

---------------------------------------------------------------------------
ModuleNotFoundError                       Traceback (most recent call last)
<ipython-input-7-0174878249b1> in <module>()
----> 1 import keras.utils.multi_gpu_model
      2 

ModuleNotFoundError: No module named 'keras.utils.multi_gpu_model'
Run Code Online (Sandbox Code Playgroud)

我可以成功导入 keras 和 keras.utils。

python gpu neural-network deep-learning keras

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

无效的设备序号,CUDA/TORCH

在 ubuntu 16.04 中运行脚本时出现此错误。请耐心等待,我是 python 新手,我已经检查了互联网上已经可用的选项,但我无法修复它。

 RuntimeError: cuda runtime error (10) : invalid device ordinal at torch/csrc/cuda/Module.cpp:32
Run Code Online (Sandbox Code Playgroud)

我目前正在运行这个文件。

from __future__ import print_function
from models import LipRead
import torch
import toml
from training import Trainer
from validation import Validator

print("Loading options...")
with open('options.toml', 'r') as optionsFile:
options = toml.loads(optionsFile.read())

if(options["general"]["usecudnnbenchmark"] and options["general"]    ["usecudnn"]):
print("Running cudnn benchmark...")
torch.backends.cudnn.benchmark = True

#Create the model.
model = LipRead(options)

if(options["general"]["loadpretrainedmodel"]):
model.load_state_dict(torch.load(options["general"]    ["pretrainedmodelpath"]))

#Move the model to the GPU.
if(options["general"]["usecudnn"]):
model = model.cuda(options["general"]["gpuid"])

trainer = Trainer(options) …
Run Code Online (Sandbox Code Playgroud)

python gpu pytorch

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

Tensorflow GPU:无法创建 cuSolverDN 实例

Tensorflow 14 + cuda 8.0 + cudnn6.0 + gcc4.8,训练进度:

2018-08-01 15:48:53.786570: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1045] 设备点对点矩阵 2018-08-01 15:48:53.786874: 我 tensorflow/core/common_runtime/gpu/gpu_device.cc:1045 /gpu_device.cc:1051] DMA: 0 1 2 3 2018-08-01 15:48:53.786881: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1061] 0: YYYY 2018-158-01 :53.786884: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1061] 1: YYYY 2018-08-01 15:48:53.786887: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1061] 2018-08-01 15:48:53.786890: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1061] 3: YYYY 2018-08-01 15:48:53.786897:core/tensorflow/gpu_device.cc:1061 .cc:1120] 创建 TensorFlow 设备 (/device:GPU:0) -> (device: 0, name: GeForce GTX 1080 Ti, pci bus id: 0000:17:00.0, 计算能力: 6.1) 2018-08-01 15:48:53.786901:I tensorflow/core/common_runtime/gpu/gpu_device.cc:1120] 创建 TensorFlow 设备 (/device:GPU:1) -> (device: 1, name: GeForce GTX …

python gpu tensorflow

7
推荐指数
0
解决办法
1412
查看次数

Nvidia GPU 内存分配但没有进程?

我经常重新运行相同的mxnet脚本,同时我尝试解决新脚本中的一些错误(而且我是新脚本mxnet)。当我尝试运行我的脚本时,经常会出现 GPU 内存不足的错误,当我nvidia-smi用来检查时,我看到的是:

Wed Dec  5 15:41:29 2018
+-----------------------------------------------------------------------------+
| NVIDIA-SMI 396.24.02              Driver Version: 396.24.02                 |
|-------------------------------+----------------------+----------------------+
| 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 108...  Off  | 00000000:65:00.0  On |                  N/A |
|  0%   54C    P2    68W / 300W |  10891MiB / 11144MiB |      0%      Default |
+-------------------------------+----------------------+----------------------+

+-----------------------------------------------------------------------------+
| Processes:                                                       GPU Memory | …
Run Code Online (Sandbox Code Playgroud)

gpu mxnet

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

使用 Vulkan VkImage 作为 CUDA cuArray

将 Vulkan VkImage 用作 CUDA cuArray 的正确方法是什么?

我一直在尝试遵循一些示例,但是在调用 cuExternalMemoryGetMappedMipmappedArray()

以有序的方式提供信息。

我正在使用 CUDA 10.1

基本代码来自https://github.com/SaschaWillems/Vulkan,特别是我正在使用01 - Vulkan Gears演示,丰富了 saveScreenshot 方法09 - 捕获屏幕截图

我不会将快照图像保存到文件中,而是将快照图像作为 CUarray 发送到 CUDA 中。

我启用了以下实例和设备扩展:

        std::vector<const char*> instanceExtensions = {
                VK_EXT_DEBUG_REPORT_EXTENSION_NAME,
                VK_KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME,
                VK_KHR_EXTERNAL_MEMORY_CAPABILITIES_EXTENSION_NAME,
                VK_KHR_EXTERNAL_SEMAPHORE_CAPABILITIES_EXTENSION_NAME };

        std::vector<const char*> deviceExtensions = { VK_KHR_EXTERNAL_MEMORY_EXTENSION_NAME,
                VK_KHR_EXTERNAL_MEMORY_FD_EXTENSION_NAME,
                VK_KHR_EXTERNAL_SEMAPHORE_EXTENSION_NAME,
                VK_KHR_EXTERNAL_SEMAPHORE_FD_EXTENSION_NAME };

Run Code Online (Sandbox Code Playgroud)

我有一个 VkImage,创建如下:

        // Create the linear tiled destination image to copy to and to read the memory from
        VkImageCreateInfo imageCreateCI(vks::initializers::imageCreateInfo());
        imageCreateCI.imageType = VK_IMAGE_TYPE_2D;
        // Note that vkCmdBlitImage (if …
Run Code Online (Sandbox Code Playgroud)

cuda gpu nvidia vulkan

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

CUDA Thrust 与原始内核相比如何?

我是 GPU 编程的新手,不确定什么会导致最有效的代码。使用 Thrust 与编写自定义内核并自己管理内存的优缺点是什么?

如果它有助于详细说明我的目标是什么:我有一个大矩阵,其中对于每个值,我需要执行一些向量运算。我知道我需要动态并行来完成这项任务,并且目前有一个自定义内核来遍历将调用其他内核的矩阵。我正在考虑是否应该用推力调用(例如推力::for_each)替换内核和/或我是否应该在内核内部使用推力来进行向量操作。

cuda gpu thrust

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

如何修复pytorch中的“输入和隐藏张量不在同一设备上”

当我想将模型放在 GPU 上时,出现以下错误:

“运行时错误:输入张量和隐藏张量不在同一设备上,在 cuda:0 处找到输入张量,在 cpu 处找到隐藏张量”

但是,以上所有内容都已放在 GPU 上:

for m in model.parameters():
    print(m.device) #return cuda:0
Run Code Online (Sandbox Code Playgroud)
for m in model.parameters():
    print(m.device) #return cuda:0
Run Code Online (Sandbox Code Playgroud)

Windows 10 服务器
Pytorch 1.2.0 + cuda 9.2
cuda 9.2
cudnn 7.6.3 for cuda 9.2

python gpu python-3.x lstm pytorch

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

GPU 编程,CUDA 还是 OpenCL 还是?

GPU 编程的最佳方法是什么?

我知道:

  • CUDA 非常好,有很多开发人员支持和非常好的 zo 调试,但仅限于 NVidia 硬件
  • OpenCL 非常灵活,可以在 NVidia、AMD 和 Intel 硬件上运行,可以在加速器、GPU 和 CPU 上运行,但据我所知,NVidia 不再支持。
  • Coriander ( https://github.com/hughperkins/coriander ) 将 CUDA 转换为 OpenCL
  • HIP https://github.com/ROCm-Developer-Tools/HIP由 AMD 制作,可以以转换为 AMD 和 NVidia CUDA 的方式编写。它还可以将 CUDA 转换为 HIP。

OpenCL 是我更喜欢的方式,我希望在硬件支持方面非常灵活。但如果不再得到 NVidia 的支持,那就是淘汰赛了。对于我来说,HIP 对于不同的发布文件来说是最好的。但英特尔即将推出的硬件的支持情况如何呢?

还有其他选择吗?对我来说重要的是许多受支持的硬件,长期支持,以便在几年内也可以编译并独立制造。附加:应该能够使用obe以上的编译器,在Linux和Windows上都支持。

cpu cuda gpu opencl hip

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