小编tal*_*ies的帖子

哪些规则确定对象是否可以轻易复制

随着c ++ 11的引入,简单的可复制性已经变得非常相关.最值得注意的是使用'std :: atomic'.基础很简单.如果出现以下情况,课程foo可以轻易复制:

foo* src = new foo();
foo* dest = malloc(sizeof(foo));
memcpy(dest, src, sizeof(foo));
Run Code Online (Sandbox Code Playgroud)

具有相同的效果:

foo* src = new foo();
foo* dest = new foo(src);
Run Code Online (Sandbox Code Playgroud)

因此,复制内存的对象与复制构造函数具有相同的效果.然而,当然,这是一个问题.不仅有复制构造函数.但也移动构造函数,移动赋值运算符.等等.

std :: is_trivially_copyable可用于测试对象是否可以轻易复制.因此,通过反复试验,可以使对象易于复制.

但当然,一套定义明确的规则会更好一些:).所以我的要求.

c++ move c++11

12
推荐指数
1
解决办法
3167
查看次数

如何方便的获取pytorch模块的设备类型?

我必须在使用不同设备的不同类型的 pytorch 模型上堆叠一些我自己的层。

例如,Acuda模型,Bcpu模型(但在获得设备类型之前我不知道)。那么新模型分别是CD,其中

class NewModule(torch.nn.Module):
    def __init__(self, base):
        super(NewModule, self).__init__()
        self.base = base
        self.extra = my_layer() # e.g. torch.nn.Linear()

    def forward(self,x):
        y = self.base(x)
        z = self.extra(y)
        return z

...

C = NewModule(A) # cuda
D = NewModule(B) # cpu
Run Code Online (Sandbox Code Playgroud)

但是我必须继续前进base,并extra相同的设备,即baseextra的C是CUDA模型和D的是CPU的型号。所以我试过这个__inin__

def __init__(self, base):
    super(NewModule, self).__init__()
    self.base = base
    self.extra = …
Run Code Online (Sandbox Code Playgroud)

python gpu pytorch

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

tensorflow/stream_executor/cuda/cuda_driver.cc:328] 调用 cuInit 失败:CUDA_ERROR_UNKNOWN:未知错误

我正在尝试将 GPU 与 Tensorflow 结合使用。我的 Tensorflow 版本是2.4.1,我使用的是 Cuda 版本 11.2。这是 的输出nvidia-smi

+-----------------------------------------------------------------------------+
| NVIDIA-SMI 460.39       Driver Version: 460.39       CUDA Version: 11.2     |
|-------------------------------+----------------------+----------------------+
| GPU  Name        Persistence-M| Bus-Id        Disp.A | Volatile Uncorr. ECC |
| Fan  Temp  Perf  Pwr:Usage/Cap|         Memory-Usage | GPU-Util  Compute M. |
|                               |                      |               MIG M. |
|===============================+======================+======================|
|   0  GeForce MX110       Off  | 00000000:01:00.0 Off |                  N/A |
| N/A   52C    P0    N/A /  N/A |    254MiB /  2004MiB |      8% …
Run Code Online (Sandbox Code Playgroud)

gpu nvidia python-3.x tensorflow2.0

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

RuntimeError: CUDA 错误: model.cuda() 之后没有可在设备上执行的内核映像

我正在研究这个模型:

class Model(torch.nn.Module):
    def __init__(self, sizes, config):
        super(Model, self).__init__()

        self.lstm = []
        for i in range(len(sizes) - 2):
            self.lstm.append(LSTM(sizes[i], sizes[i+1], num_layers=8))
        self.lstm.append(torch.nn.Linear(sizes[-2], sizes[-1]).cuda())
        self.lstm = torch.nn.ModuleList(self.lstm)

        self.config_mel = config.mel_features

    def forward(self, x):
        # convert to log-domain
        x = x.clip(min=1e-6).log10()

        for layer in self.lstm[:-1]:
            x, _ = layer(x)
            x = torch.relu(x)

        #x = torch_unpack_seq(x)[0]

        x = self.lstm[-1](x)
        mask = torch.sigmoid(x)

        return mask
Run Code Online (Sandbox Code Playgroud)

进而:

model = Model(model_width, config)
model.cuda()
Run Code Online (Sandbox Code Playgroud)

但我收到此错误:

File "main.py", line 29, in <module>
    Model.train(args)
  File ".../src/model.py", line 57, in …
Run Code Online (Sandbox Code Playgroud)

python pytorch

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

错误:标识符"blockIdx"未定义

我的CUDA设置

Visual Studio 2010和2008 SP1(CUDA要求).并行NSight 1.51 CUDA 4.0 RC或3.2和Thrust

基本上,我遵循指南:http: //www.ademiller.com/blogs/tech/2011/03/using-cuda-and-thrust-with-visual-studio-2010/

然后我继续编译成功,没有错误消息.

所以我尝试了更多来自网络的CUDA代码示例.Visual Studios上出现了这些错误.我仍然可以成功编译没有错误消息,但这些错误只是在视觉上突出显示

  • "错误:标识符"blockIdx"未定义."
  • "错误:标识符"blockDim"未定义."
  • "错误:标识符"threadIdx"未定义."

这是截图.

http://i.imgur.com/RVBfW.png

我应该担心吗?它是Visual Studios错误还是我的设置配置错误?任何帮助表示赞赏.多谢你们!

PS我对Visual Studios和CUDA都很陌生.

// incrementArray.cu
#include "Hello.h"
#include <stdio.h>
#include <assert.h>
#include <cuda.h>
void incrementArrayOnHost(float *a, int N)
{
  int i;
  for (i=0; i < N; i++) a[i] = a[i]+1.f;
}
__global__ void incrementArrayOnDevice(float *a, int N)
{
  int idx = blockIdx.x*blockDim.x + threadIdx.x;
  if (idx<N) a[idx] = a[idx]+1.f;
}
int main(void)
{
  float *a_h, *b_h;           // pointers …
Run Code Online (Sandbox Code Playgroud)

cuda visual-studio-2010 visual-c++

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

用相同的数字填充一个numpy数组?

我知道如何在100个元素数组中填充零:

np.zeros(100)
Run Code Online (Sandbox Code Playgroud)

但如果我想用9填充呢?

numpy

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

TensorFlow CUDA_ERROR_OUT_OF_MEMORY

我正在尝试在TensorFlow中构建一个大型CNN,并打算在多GPU系统上运行它.我采用了"塔式"系统并为两个GPU分割批次,同时保留CPU上的变量和其他计算.我的系统有32GB的内存,但是当我运行我的代码时,我得到错误:

E tensorflow/stream_executor/cuda/cuda_driver.cc:924] failed to alloc 17179869184 bytes on host: CUDA_ERROR_OUT_OF_MEMORY
W ./tensorflow/core/common_runtime/gpu/pool_allocator.h:195] could not allocate pinned host memory of size: 17179869184
Killed
Run Code Online (Sandbox Code Playgroud)

如果我将CUDA设备隐藏到TensorFlow,我已经看到代码工作(虽然非常慢),因此它不使用cudaMallocHost()......

感谢您的时间.

tensorflow

11
推荐指数
1
解决办法
9689
查看次数

Pytorch 断言错误:未在启用 CUDA 的情况下编译 Torch

我正在尝试从此repo运行代码。我通过更改 main.py 中的第 39/40 行来禁用 cuda

parser.add_argument('--type', default='torch.cuda.FloatTensor', help='type of tensor - e.g torch.cuda.HalfTensor')
Run Code Online (Sandbox Code Playgroud)

parser.add_argument('--type', default='torch.FloatTensor', help='type of tensor - e.g torch.HalfTensor')
Run Code Online (Sandbox Code Playgroud)

尽管如此,运行代码给了我以下异常:

Traceback (most recent call last):
  File "main.py", line 190, in <module>
    main()
  File "main.py", line 178, in main
    model, train_data, training=True, optimizer=optimizer)
  File "main.py", line 135, in forward
    for i, (imgs, (captions, lengths)) in enumerate(data):
  File "/Users/lakshay/anaconda/lib/python3.6/site-packages/torch/utils/data/dataloader.py", line 201, in __next__
    return self._process_next_batch(batch)
  File "/Users/lakshay/anaconda/lib/python3.6/site-packages/torch/utils/data/dataloader.py", line 221, in _process_next_batch
    raise batch.exc_type(batch.exc_msg)
AssertionError: Traceback (most …
Run Code Online (Sandbox Code Playgroud)

python deep-learning pytorch

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

Tensorflow中的A3C - 我应该使用线程还是分布式Tensorflow API

我想在我的本地机器(1个CPU,1个cuda兼容GPU)中实现Asynchronous Advantage Actor Critic(A3C)模型以进行强化学习.在该算法中,若干"学习者"网络与环境的副本交互并定期更新中心模型.

我已经看到在同一个图中创建n个"工作者"网络和一个"全局"网络的实现,并使用线程来运行这些.在这些方法中,通过将梯度应用于具有"全局"范围的可训练参数来更新全局网络.

但是,我最近读了一些关于分布式张量流的内容,现在我有点困惑.使用分布式tensorflow API实现这一点会更容易/更快/更好吗?在文档和会谈中,他们总是提到在多设备环境中使用它.我不知道在本地异步算法中使用它是否过分.

我还想问一下,有没有办法批处理每个工人计算出的梯度,在n步之后一起应用?

multithreading tensorflow

11
推荐指数
1
解决办法
956
查看次数

使用 xgb 和 XGBclassifier 的 CPU 比 GPU 快

由于我是初学者,我提前道歉。我正在尝试使用 xgb 和 XGBclassifier 使用 XGBoost 进行 GPU 与 CPU 测试。结果如下:

   passed time with xgb (gpu): 0.390s
   passed time with XGBClassifier (gpu): 0.465s
   passed time with xgb (cpu): 0.412s
   passed time with XGBClassifier (cpu): 0.421s
Run Code Online (Sandbox Code Playgroud)

我想知道为什么 CPU 的性能似乎不比 GPU 好。这是我的设置:

  • 蟒蛇 3.6.1
  • 操作系统:Windows 10 64位
  • GPU:NVIDIA RTX 2070 Super 8gb vram(驱动更新到最新版本)
  • 已安装 CUDA 10.1
  • CPU i7 10700 2.9Ghz
  • 在 Jupyter Notebook 上运行
  • 通过 pip 安装了 xgboost 1.2.0 的夜间版本

** 还尝试使用通过 pip 从预先构建的二进制轮子安装的 xgboost 版本:同样的问题

这是我正在使用的测试代码(从这里提取):

param = {'max_depth':5, …
Run Code Online (Sandbox Code Playgroud)

cpu gpu python-3.x xgboost

11
推荐指数
2
解决办法
1971
查看次数