小编roz*_*ang的帖子

如何将 Numba 用于 Pytorch 张量?

我是 Numba 新手,我需要使用 Numba 来加速一些 Pytorch 功能。但我发现即使是一个非常简单的功能也不起作用:(

import torch
import numba

@numba.njit()
def vec_add_odd_pos(a, b):
    res = 0.
    for pos in range(len(a)):
        if pos % 2 == 0:
            res += a[pos] + b[pos]
    return res

x = torch.tensor([3, 4, 5.])
y = torch.tensor([-2, 0, 1.])
z = vec_add_odd_pos(x, y)
Run Code Online (Sandbox Code Playgroud)

但出现以下错误

def vec_add_odd_pos(a, b):
    res = 0.
    ^

This error may have been caused by the following argument(s):
- argument 0: cannot determine Numba type of <class 'torch.Tensor'>
- argument 1: …
Run Code Online (Sandbox Code Playgroud)

numba pytorch tensor

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

如何在 Amardillo 中连接两个或多个向量?

例如,如果我有

vec a(3, fill::randu);
vec b(5, fill::randu);
Run Code Online (Sandbox Code Playgroud)

如何获得大小为 8 的新向量 c,其中前三个元素来自 a,其余元素来自 b?

vector concatenation armadillo

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

如何在PyTorch多处理中共享张量列表?

我正在使用PyTorch多处理进行编程。我希望所有子过程都可以读/写相同的张量列表(不调整大小)。例如,变量可以是

m = list(torch.randn(3), torch.randn(5))
Run Code Online (Sandbox Code Playgroud)

由于每个张量具有不同的大小,因此我无法将它们组织成一个张量。

python列表没有share_memory_()函数,并且multiprocessing.Manager无法处理张量列表。如何在多个子流程之间共享变量m?

list sharing multiprocessing pytorch tensor

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

如何编写在CPU模式和CUDA设备模式下使用的Numba函数?

我想编写一个在 CPU 模式和 CUDA 设备模式下使用的 Numba 函数。当然,我可以使用和不使用 cuda.jit 装饰器编写两个相同的函数。例如:

from numba import cuda, njit

@njit("i4(i4, i4)")
def func_cpu(a, b)
    return a + b

@cuda.jit("i4(i4, i4)", device=True)
def func_gpu(a, b)
    return a + b
Run Code Online (Sandbox Code Playgroud)

但在软件工程中它是丑陋的。有没有一种更优雅的方式,即将代码组合在一个函数中?

cuda numba

-1
推荐指数
1
解决办法
137
查看次数