小编use*_*674的帖子

nvidia-smi易失性GPU利用率解释?

我知道这nvidia-smi -l 1将每秒钟提供一次GPU使用(类似于以下内容).但是,我很欣赏有关Volatile GPU-Util真正含义的解释.这是使用的SM数量超过总SM数,占用数量还是其他数量?

+-----------------------------------------------------------------------------+
| NVIDIA-SMI 367.48                 Driver Version: 367.48                    |
|-------------------------------+----------------------+----------------------+
| GPU  Name        Persistence-M| Bus-Id        Disp.A | Volatile Uncorr. ECC |
| Fan  Temp  Perf  Pwr:Usage/Cap|         Memory-Usage | GPU-Util  Compute M. |
|===============================+======================+======================|
|   0  Tesla K20c          Off  | 0000:03:00.0     Off |                    0 |
| 30%   41C    P0    53W / 225W |      0MiB /  4742MiB |     96%      Default |
+-------------------------------+----------------------+----------------------+
|   1  Tesla K20c          Off  | 0000:43:00.0     Off |                    0 |
| 36% …
Run Code Online (Sandbox Code Playgroud)

cuda gpu gpgpu nvidia gpu-programming

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

过滤出张量中的非零值

假设我有一个数组:input = np.array([[1,0,3,5,0,8,6]]),我想过滤掉[1,3,5,8,6].

我知道您可以使用tf.where条件,但返回的值仍然为0.以下代码段的输出是 [[[1 0 3 5 0 8 6]]].我也不明白为什么tf.where需要xy.

无论如何,我可以摆脱由此产生的张量中的0?

import numpy as np
import tensorflow as tf

input = np.array([[1,0,3,5,0,8,6]])

X = tf.placeholder(tf.int32,[None,7])

zeros = tf.zeros_like(X)
index = tf.not_equal(X,zeros)
loc = tf.where(index,x=X,y=X)

with tf.Session() as sess:
    out = sess.run([loc],feed_dict={X:input})
    print np.array(out)
Run Code Online (Sandbox Code Playgroud)

python numpy python-2.7 python-3.x tensorflow

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

非常大的numpy数组不会引发内存错误.它在哪里生活?

所以我有以下numpy数组:

X = np.zeros((1000000000, 3000), dtype=np.float32)
Run Code Online (Sandbox Code Playgroud)

X.nbytes返回12000000000000,即12 TB.

我当然没有那么多内存(确切地说是8GB).这怎么发生的?分配的数组在哪里?

python memory numpy python-3.5

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

如何测量 Storm 拓扑中的延迟和吞吐量

我正在通过示例学习 Storm ExclamationTopology。我想测量!!!一个bolt和吞吐量(比如,每秒有多少个单词通过bolt)的延迟(添加到一个单词中所需的时间)。

这里,我可以计算单词的数量和执行螺栓的次数:

_countMetric = new CountMetric();
_wordCountMetric = new MultiCountMetric();


context.registerMetric("execute_count", _countMetric, 5);
context.registerMetric("word_count", _wordCountMetric, 60);
Run Code Online (Sandbox Code Playgroud)

我知道 Storm UI 给出了Process Latency并且Execute Latency这篇文章很好地解释了它们是什么。

但是,我想记录每个 Bolt 每次执行的延迟,并使用此信息和word_count来计算吞吐量。

我如何使用Storm Metrics来实现这一点?

java cloud performance clojure apache-storm

5
推荐指数
1
解决办法
716
查看次数

启动内核时共享内存和流

我是 CUDA 新手,正在从事个人项目。我知道,如果您想在启动时指定共享内存量:

kernel<<<grid_size,block_size,shared_mem_size>>>(parameters);
Run Code Online (Sandbox Code Playgroud)

另一方面,如果我想将内核放入流中:

kernel<<<grid_size,block_size,0,stream_being_used>>>(parameters);
Run Code Online (Sandbox Code Playgroud)

我不明白为什么第三个参数在流的情况下是0?(我是从 Sanders 和 Kandrot 的《CUDA 示例》第 10 章中得到的)。

如果我想在启动时指定共享内存并将其放入流中,我该如何正确执行此操作?换句话说,中间的参数应该<<<...>>>是什么样的?

c cuda gpu gpu-shared-memory

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

表面存储器比全局存储器花费更多的时间(两倍)

我正在优化cuda程序。因此,我首先从矩阵乘法程序的优化开始。我用于并行化的线程方案是Blocksize(1,1),Gridsize(N,N)。我将表面内存用于内存优化目的(因为此线程方案无法使用共享内存)。当我比较优化前后的时间时,我发现执行使用表面内存后需要花费两倍的时间(我尝试使用不同的线程方案,但问题仍然存在)。从我到目前为止所读的内容来看,全局内存比表面内存要慢。因此使用表面存储器应该花费更少的时间。下面我给出使用表面存储器的矩阵乘法程序。有人可以告诉我这是什么问题吗?

#include < stdio.h > 
#include < cuda.h >

//#define N 3

surface < void, 2 > a_surf;
surface < void, 2 > b_surf;
surface < void, 2 > c_surf;

void CUDA_SAFE_CALL(cudaError_t call, int line) {
    switch (call) {
    case cudaSuccess:
        break;
    default:
        printf("ERROR at line :%i.%d' ' %s\n",
            line, call, cudaGetErrorString(call));
        exit(-1);
        break;
    }

}

__global__ void mul(int N) {
    int a, b, c, temp;
    int i;

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

cuda

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