小编cha*_*255的帖子

OpenMP 4对齐选项?

我对OpenMP中的新对齐选项有疑问.这是在使用它的背景下#pragma omp simd aligned(a:n)

假设我有一个整数数组,我使用posix_memalign分配,所以我知道数组开始时让我们说32字节边界.现在让我说我想对该数组中的每个值进行平方.我能说......么...

int* array = { some array of length len aligned to 32 bytes };
#pragma omp simd aligned(array:32)
for(int i = 0; i < len; i++)
    array[i] *= array[i];
Run Code Online (Sandbox Code Playgroud)

这是一个安全的假设吗?或者对齐也暗示我在数组中使用的大小数据类型(int)是32个字节的倍数?有点像gcc中的属性((aligned(32))将使宽度类型至少为32个字节.

c c++ simd openmp

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

如果不同的核心具有不同的 L1 缓存,为什么会出现缓存乒乓效应和问题?

我正在阅读有关错误共享和缓存乒乓的信息,当不同内核上有多个线程尝试使用相同的缓存行但数据不同时(例如数组中彼此相邻的两个 int 值)。在这种情况下,缓存线需要在核心之间来回移动。我感到困惑的是,我认为每个核心都有自己的 L1 缓存,那么为什么它需要与其他核心共享该缓存行?难道它不只是保留自己的副本并更新它吗?另外,如果 cpu 被迫使核心之间的所有缓存保持一致,那么像 c++ 中这样的关键字有什么意义volatile(除了可能阻止编译器将值存储在寄存器中)?

c++ multithreading caching

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

cuda 中是否有模板化的数学函数?

我一直在 cuda 中寻找模板化数学函数,但似乎找不到。在普通的 C++ 中,如果我调用std::sqrt它是模板化的,并且将根据参数是浮点数还是双精度数来执行不同的版本。

我想要这样的 CUDA 设备代码。我的内核将真实类型作为模板参数传递,现在我必须在使用sqrtffloat 和sqrtdouble之间进行选择。我认为推力可能具有此功能,但它仅适用于复数。

c++ cuda

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

Keras的后端函数中使用的参数keepdims是什么?

Keras后端中有许多具有keepdims参数的功能。例如

sum(x, axis=None, keepdims=False)
Run Code Online (Sandbox Code Playgroud)

我找不到任何解释。有人可以解释它的作用吗?

此外,这是什么意思的axisNone?和说的一样axis = -1吗?

python keras

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

为什么tensorflow不能确定这个表达式的形状?

我有以下表达式给我带来了问题。我已经将 batch_size 定义为batch_size = tf.shape(input_tensor)[0]根据模型输入张量的大小动态确定批次的大小。我在代码的其他地方使用过它,没有问题。我感到困惑的是,当我运行以下代码行时,它说形状是 (?, ?) 我希望它是 (?, 128) 因为它知道第二维。

print(tf.zeros((batch_size, 128)).get_shape())
Run Code Online (Sandbox Code Playgroud)

我想知道形状,因为我正在尝试执行以下操作并且出现错误。

    rnn_input = tf.reduce_sum(w * decoder_input, 1)
    last_out = decoder_outputs[t - 1] if t else tf.zeros((batch_size, 128))
    rnn_input = tf.concat(1, (rnn_input, last_out))
Run Code Online (Sandbox Code Playgroud)

此代码需要在第一个时间步将 last_out 设置为零。

这是错误 ValueError: Linear expects shape[1] of arguments: [[None, None], [None, 1024]]

当我确定 RNN 的初始状态向量时,我正在做类似的事情。

state = tf.zeros((batch_size, decoder_multi_rnn.state_size), tf.float32)
Run Code Online (Sandbox Code Playgroud)

当我尝试打印状态的大小时,我也会得到 (?, ?) 但是当我尝试使用它时它并没有真正抛出任何异常。

tensorflow

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

TensorFlow没有属性"with_dependencies"

我想使用该tf.with_dependencies函数来保存我的RNN状态.出于某种原因,我收到以下错误.

Traceback (most recent call last):
  File "/home/chase/workspace/AudioRNN/audiornn.py", line 56, in <module>
    tf.with_dependencies([expected_output], input_tensor)
AttributeError: module 'tensorflow' has no attribute 'with_dependencies'
Run Code Online (Sandbox Code Playgroud)

我的tensorflow代码的其余部分运行正常.我在eclipse中,我按Ctrl +单击tf.with_dependencies它将我带到源代码.我注意到该tf.group函数也在这个文件中,我可以称之为正常.有什么问题tf.with_dependencies?我在Ubuntu 16.04上.我正在使用python 3和tensorflow的最新版本.

这是dir(tf)根据要求的印刷品.

AggregationMethod
Assert
AttrValue
ConfigProto
DType
DeviceSpec
Dimension
Event
FIFOQueue
FixedLenFeature
FixedLenSequenceFeature
FixedLengthRecordReader
GPUOptions
GRAPH_DEF_VERSION
GRAPH_DEF_VERSION_MIN_CONSUMER
GRAPH_DEF_VERSION_MIN_PRODUCER
Graph
GraphDef
GraphKeys
GraphOptions
HistogramProto
IdentityReader
IndexedSlices
InteractiveSession
LogMessage
NameAttrList
NoGradient
NodeDef
OpError
Operation
OptimizerOptions
PaddingFIFOQueue
Print
QUANTIZED_DTYPES
QueueBase
RandomShuffleQueue
ReaderBase
RegisterGradient
RegisterShape
RunMetadata
RunOptions
Session
SessionLog
SparseTensor
SparseTensorValue
Summary …
Run Code Online (Sandbox Code Playgroud)

tensorflow

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

Keras无法使用theano后端进行编译

当我尝试编译keras文档中的示例时,我收到以下错误.

/usr/include/string.h: In function ‘void* __mempcpy_inline(void*, const void*, size_t)’:
/usr/include/string.h:652:42: error: ‘memcpy’ was not declared in this scope
   return (char *) memcpy (__dest, __src, __n) + __n;
                                          ^
ERROR (theano.sandbox.cuda): Failed to compile cuda_ndarray.cu: ('nvcc return status', 1, 'for cmd', 'nvcc -shared -O3 -m64 -Xcompiler -DCUDA_NDARRAY_CUH=mc72d035fdf91890f3b36710688069b2e,-DNPY_NO_DEPRECATED_API=NPY_1_7_API_VERSION,-fPIC,-fvisibility=hidden -Xlinker -rpath,/home/chase/.theano/compiledir_Linux-4.4--generic-x86_64-with-Ubuntu-16.04-xenial-x86_64-3.5.1+-64/cuda_ndarray -I/usr/local/lib/python3.5/dist-packages/theano/sandbox/cuda -I/usr/lib/python3/dist-packages/numpy/core/include -I/usr/include/python3.5m -I/usr/local/lib/python3.5/dist-packages/theano/gof -o /home/chase/.theano/compiledir_Linux-4.4--generic-x86_64-with-Ubuntu-16.04-xenial-x86_64-3.5.1+-64/cuda_ndarray/cuda_ndarray.so mod.cu -L/usr/lib -lcublas -lpython3.5m -lcudart')
Run Code Online (Sandbox Code Playgroud)

我在Ubuntu 16.04上.我正在使用从默认存储库安装的CUDA 7.5.我使用CUDA编译了一些我自己的cuda程序以及ArrayFire程序,所以我知道CUDA正在工作.

这是我试图编译的...

from keras.models import Sequential

model = Sequential()
from keras.layers.core import Dense, Activation

model.add(Dense(output_dim=64, input_dim=100))
model.add(Activation("relu"))
model.add(Dense(output_dim=10))
model.add(Activation("softmax")) …
Run Code Online (Sandbox Code Playgroud)

python cuda theano keras

4
推荐指数
1
解决办法
2042
查看次数

无论批量大小如何,Tensorflow都使用相同数量的gpu内存

我是tensorflow的新手,我正在努力训练CIFAR 10数据集.我注意到无论根据我的nvidia控制面板我使用的批量大小,我使用的是97%的gpu内存.我尝试批量大小为100到2,在每种情况下我的gpu内存使用率总是97%.它为什么要这样做?

def batchGenerator(batch_size = 32):
    bi = 0
    random.shuffle(train_data)
    while bi + batch_size < len(train_data):
        x = np.zeros((batch_size, 32, 32, 3))
        y = np.zeros((batch_size, 10))
        for b in range(batch_size):
            x[b] = train_data[bi + b][0]
            if random.choice((True, False)):
                img = cv2.flip(x[b], 0)
            if random.choice((True, False)):
                img = cv2.flip(x[b], 1)
            y[b][train_data[bi + b][1]] = 1
        bi += batch_size
        yield(x, y)

with tf.Session() as s:
    s.run(tf.initialize_all_variables())
    for epoch in range(100):
        a = 0.0
        i = 0
        for x_train, y_train in batchGenerator(2):
            outs …
Run Code Online (Sandbox Code Playgroud)

tensorflow

4
推荐指数
1
解决办法
1058
查看次数

为什么 ffmpeg 警告“输入流 #0.0 的猜测通道布局:单声道”?

我正在使用 ffmpeg 从我的 python 脚本读取和写入原始音频。我使用的保存和加载命令都会产生警告“猜测输入流 #0.0 的通道布局:单声道”?尽管我在输入和输出之前告诉 ffmpeg-ac 1只有一个通道,但事实却是这样。我看到了一些其他我应该设置的答案,-guess_layout_max 0但这似乎是一个黑客,因为我不想让 ffmpeg 猜测;我准确地告诉它有多少个频道-ac 1。它不需要做出任何猜测。

我的保存命令的格式如下,其中r是采样率,也是f我想要将原始音频保存到的文件。我通过管道从 python 发送原始音频。

ffmpeg_cmd = 'ffmpeg -hide_banner -loglevel warning -y -ar %d -ac 1 -f u16le -i pipe: -ac 1 %s' % (r, shlex.quote(f))

同样,我的加载命令如下,其中 ffmpeg 读取f原始音频并将其写入标准输出。

ffmpeg_cmd = 'ffmpeg -hide_banner -loglevel warning -i %s -ar %d -ac 1 -f u16le -c:a pcm_u16le -ac 1 pipe:' % (shlex.quote(f), r)

python ffmpeg

4
推荐指数
1
解决办法
5538
查看次数

CUDA,有atomicRead吗?

我正在开发一个 CUDA 程序,其中所有块和线程都需要动态确定迭代问题的最小步长。我希望块中的第一个线程负责将全局 dz 值读入共享内存,以便其余线程可以对其进行减少。同时其他块中的其他线程可能正在写入它。CUDA 中是否有一个atomicRead 选项或类似的选项。我想我可以用零或其他东西进行原子加法。或者说这有必要吗?

template<typename IndexOfRefractionFunct>
    __global__ void _step_size_kernel(IndexOfRefractionFunct n, double* dz, double z, double cell_size)
    {
        int idx = blockIdx.x * blockDim.x + threadIdx.x;
        if(idx >= cells * cells)
            return;

        int idy = idx / cells;
        idx %= cells;

        double x = cell_size * idx;
        double y = cell_size * idy;

        __shared__ double current_dz;
        if(threadIdx.x == 0)
            current_dz = atomicRead(dz);

        ...

        atomicMin(dz, calculated_min);
    }
Run Code Online (Sandbox Code Playgroud)

另外我刚刚意识到 cuda 似乎不支持双精度原子。有什么办法解决这个问题吗?

c++ cuda

3
推荐指数
1
解决办法
2024
查看次数

标签 统计

c++ ×4

cuda ×3

python ×3

tensorflow ×3

keras ×2

c ×1

caching ×1

ffmpeg ×1

multithreading ×1

openmp ×1

simd ×1

theano ×1