我知道这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) 假设我有一个数组: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
需要x
和y
.
无论如何,我可以摆脱由此产生的张量中的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) 所以我有以下numpy数组:
X = np.zeros((1000000000, 3000), dtype=np.float32)
Run Code Online (Sandbox Code Playgroud)
X.nbytes
返回12000000000000
,即12 TB.
我当然没有那么多内存(确切地说是8GB).这怎么发生的?分配的数组在哪里?
我正在通过示例学习 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来实现这一点?
我是 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 章中得到的)。
如果我想在启动时指定共享内存并将其放入流中,我该如何正确执行此操作?换句话说,中间的参数应该<<<...>>>
是什么样的?
我正在优化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 ×3
gpu ×2
numpy ×2
python ×2
apache-storm ×1
c ×1
clojure ×1
cloud ×1
gpgpu ×1
java ×1
memory ×1
nvidia ×1
performance ×1
python-2.7 ×1
python-3.5 ×1
python-3.x ×1
tensorflow ×1