标签: gpu

Cuda:未找到图书馆nvvm

我试图运行下面的代码,但报告错误:

NvvmSupportError:找不到libNVVM.执行conda install cudatoolkit:找不到库nvvm

我的开发环境是:Ubuntu 17.04,Spyder/Python3.5,我通过conda(numba和cudatoolkit)安装.Nvidia GPU(GTX 1070和GTX 1060).

import numpy as np
from timeit import default_timer as timer
from numba import vectorize

@vectorize(["float32(float32, float32)"], target='cuda')     
def VecADD(a,b):
    return a+b        

n = 32000000
a = np.ones (n, dtype=np.float32) 
b = np.ones (n, dtype=np.float32)     
c = np.zeros(n, dtype=np.float32) 

start = timer()
C = VecADD(a,b)
print (timer() - start)
Run Code Online (Sandbox Code Playgroud)

有谁知道如何解决这个问题?

python ubuntu cuda gpu numba

19
推荐指数
1
解决办法
8795
查看次数

什么是XLA_GPU和XLA_CPU for tensorflow

我可以列出gpu设备唱下面的tensorflow代码:

import tensorflow as tf
from tensorflow.python.client import device_lib
print device_lib.list_local_devices()
Run Code Online (Sandbox Code Playgroud)

结果是:

[name: "/device:CPU:0"
 device_type: "CPU"
 memory_limit: 268435456
 locality {
 }
 incarnation: 17897160860519880862, name: "/device:XLA_GPU:0"
 device_type: "XLA_GPU"
 memory_limit: 17179869184
 locality {
 }
 incarnation: 9751861134541508701
 physical_device_desc: "device: XLA_GPU device", name: "/device:XLA_CPU:0"
 device_type: "XLA_CPU"
 memory_limit: 17179869184
 locality {
 }
 incarnation: 5368380567397471193
 physical_device_desc: "device: XLA_CPU device", name: "/device:GPU:0"
 device_type: "GPU"
 memory_limit: 21366299034
 locality {
   bus_id: 1
   links {
     link {
       device_id: 1
       type: "StreamExecutor"
       strength: 1
     }
   }
 }
 incarnation: 7110958745101815531
 physical_device_desc: "device: …
Run Code Online (Sandbox Code Playgroud)

python gpu tensorflow

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

GPU共享内存的大小非常小 - 我该怎么办呢?

在当今的大多数nVIDIA GPU上,共享内存的大小(OpenCL术语中的"本地内存")仅为16 KiB.
我有一个应用程序,我需要创建一个具有10,000个整数的数组.所以我需要适应10,000个整数的内存量= 10,000*4b = 40kb.

  • 我该如何解决这个问题?
  • 有没有超过16 KiB共享内存的GPU?

gpu nvidia gpu-shared-memory

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

GPU中缓存未命中的变化

我一直在玩一个访问7个全局内存缓冲区的OpenCL内核,对值做一些事情并将结果存储回第8个全局内存缓冲区.正如我所观察到的,随着输入大小的增加,L1缓存未命中率(=未命中(未命中+命中))变化很大.我找不到这种变化的来源.此处的输入大小表示全局工作项的数量(2的幂和工作组大小的倍数).工作组大小的数量仍为256.

这些是结果.这些显示了L1缓存未命中率.从4096个工作项(16个工作组)开始.

0.677125
0.55946875
0.345994792
0.054078125
0.436167969
0.431871745
0.938546224
0.959258789
0.952941406
0.955016479
Run Code Online (Sandbox Code Playgroud)

分析器说它每个线程使用18个寄存器.这是代码(函数TTsum()应该只做一堆依赖的超越操作,所以它与缓存无关)我猜:

float TTsum(float x1, float x2, float x3, float x4, float x5, float x6, float x7)
{
        float temp = 0;
        for (int j = 0; j < 2; j++)
                temp = temp +  x1 + (float)x2 + x3 + x4 + x5 + x6 + x7;
        temp = sqrt(temp);
        temp = exp(temp);
        temp = temp / x1;
        temp = temp / (float)x2;
        for (int j = 0; …
Run Code Online (Sandbox Code Playgroud)

gpu gpgpu opencl

18
推荐指数
1
解决办法
1480
查看次数

"-arch sm_13"和"-arch sm_20"之间的区别是什么?

我的应用程序需要双精度计算.根据我在谷歌上发现的,我应该添加一个标志"-arch sm_13"或"-arch sm_20".

Q1:"-arch sm_13"和"-arch sm_20"有什么区别?

Q2:"-arch sm_13"和"-arch sm_20"之间的性能是否存在差异?

我的GPU:GTX 570.

谢谢.

cuda gpu gpu-programming

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

为什么不将GPU用作CPU?

我知道这个问题只是部分与编程有关,因为我想得到的答案最初来自这两个问题:

为什么CPU核心数量如此之低(与GPU相比)?为什么我们不使用GPU而不是CPU,仅GPU或CPU?(我知道GPU是专用的,而CPU更多用于多任务等).我也知道存在内存(主机与GPU)限制以及精度和缓存功能.但是,就硬件比较而言,高端到高端的CPU/GPU比较GPU的性能要高得多.

所以我的问题是:我们可以使用GPU而不是CPU用于操作系统,应用程序等

我问这个问题的原因是因为我想知道当前计算机仍然使用2个主处理单元(CPU/GPU)和两个主存储器和缓存系统(CPU/GPU)的原因,即使它不是程序员想.

cpu gpu opencl

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

如何在OpenCL中使用固定内存/映射内存

为了减少我的应用程序从主机到设备的传输时间,我想使用固定内存.NVIDIA的最佳实践指南建议使用以下代码映射缓冲区并写入数据:

cDataIn = (unsigned char*)clEnqueueMapBuffer(cqCommandQue, cmPinnedBufIn, CL_TRUE,CL_MAP_WRITE, 0, memSize, 0, NULL, NULL, NULL);

for(unsigned int i = 0; i < memSize; i++) 
{ 
    cDataIn[i] = (unsigned char)(i & 0xff); 
}

clEnqueueWriteBuffer(cqCommandQue, cmDevBufIn, CL_FALSE, 0, 
szBuffBytes, cDataIn, 0, NULL, NULL);
Run Code Online (Sandbox Code Playgroud)

英特尔的优化指南建议使用对clEnqueueMapBuffer和clEnqueueUnmapBuffer的调用,而不是调用clEnqueueReadBuffer或clEnqueueWriteBuffer.

使用固定内存/映射内存的正确方法是什么?是否有必要使用enqueueWriteBuffer写入数据或者enqueueMapBuffer是否足够?

另外,CL_MEM_ALLOC_HOST_PTR和CL_MEM_USE_HOST_PTR之间有什么区别?

memory gpu data-transfer gpgpu opencl

18
推荐指数
1
解决办法
6119
查看次数

TENSorflow多个会话与多个GPU

我有一个带有2个GPU的工作站,我正在尝试同时运行多个tensorflow作业,所以我可以同时训练多个模型,等等.

例如,我试图通过在script1.py中使用python API将会话分成不同的资源:

with tf.device("/gpu:0"):
    # do stuff
Run Code Online (Sandbox Code Playgroud)

在script2.py中:

with tf.device("/gpu:1"):
    # do stuff
Run Code Online (Sandbox Code Playgroud)

在script3.py中

with tf.device("/cpu:0"):
    # do stuff
Run Code Online (Sandbox Code Playgroud)

如果我自己运行每个脚本,我可以看到它正在使用指定的设备.(此外,这些模型非常适合单个GPU,即使两者都可用,也不会使用另一个.)

但是,如果一个脚本正在运行并且我尝试运行另一个脚本,我总是会收到此错误:

I tensorflow/core/common_runtime/local_device.cc:40] Local device intra op parallelism threads: 8
I tensorflow/stream_executor/cuda/cuda_gpu_executor.cc:909] successful NUMA node read from SysFS had negative value (-1), but there must be at least one NUMA node, so returning NUMA node zero
I tensorflow/core/common_runtime/gpu/gpu_init.cc:103] Found device 0 with properties: 
name: GeForce GTX 980
major: 5 minor: 2 memoryClockRate (GHz) 1.2155
pciBusID 0000:01:00.0
Total memory: 4.00GiB …
Run Code Online (Sandbox Code Playgroud)

gpu tensorflow

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

有没有办法确定TensorFlow使用多少GPU内存?

Tensorflow倾向于在其GPU上预分配整个可用内存.对于调试,有没有办法说明实际使用了多少内存?

gpu tensorflow

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

如何在 Google Colab 中获得分配的 GPU 规格

我正在使用 Google Colab 进行深度学习,我知道他们会随机将 GPU 分配给用户。我希望能够查看在任何给定会话中分配给我的 GPU。有没有办法在 Google Colab 笔记本中做到这一点?

请注意,如果有帮助,我正在使用 Tensorflow。

python gpu tensorflow google-colaboratory

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