我需要对使用 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 时,我只会使用一个索引?
非常感谢,
我想将 apache spark 与 GPU 集成,但 spark 可以在 java 上运行,而 gpu 使用 CUDA/OpenCL,那么我们如何合并它们。
我在 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。
在 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) 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 …
我经常重新运行相同的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) 将 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) 我是 GPU 编程的新手,不确定什么会导致最有效的代码。使用 Thrust 与编写自定义内核并自己管理内存的优缺点是什么?
如果它有助于详细说明我的目标是什么:我有一个大矩阵,其中对于每个值,我需要执行一些向量运算。我知道我需要动态并行来完成这项任务,并且目前有一个自定义内核来遍历将调用其他内核的矩阵。我正在考虑是否应该用推力调用(例如推力::for_each)替换内核和/或我是否应该在内核内部使用推力来进行向量操作。
当我想将模型放在 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
GPU 编程的最佳方法是什么?
我知道:
OpenCL 是我更喜欢的方式,我希望在硬件支持方面非常灵活。但如果不再得到 NVidia 的支持,那就是淘汰赛了。对于我来说,HIP 对于不同的发布文件来说是最好的。但英特尔即将推出的硬件的支持情况如何呢?
还有其他选择吗?对我来说重要的是许多受支持的硬件,长期支持,以便在几年内也可以编译并独立制造。附加:应该能够使用obe以上的编译器,在Linux和Windows上都支持。