小编tal*_*ies的帖子

声明"在给定SM上运行的所有线程可能合作"是真还是假?

在Udacity的测验:线程和块"并行编程简介"中,它询问语句"在给定SM上运行的所有线程可以合作解决问题"是真还是假.答案是错误的,但我认为应该是真的,因为:

  • 它使用"可能"而不是"必须".
  • 一些论文正在谈论块间GPU通信.

我有什么误解吗?

cuda gpu gpgpu

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

Julia,CuArrays和ArrayFire对Nvidia GPU软件包的困惑

最近,我研究了GPU计算的用法,其中软件包的用法似乎令人困惑。

例如,CuArrays和ArrayFire似乎在做同样的事情,在这里ArrayFire似乎是在NVIDIA开发者网页上的“官”包。(https://devblogs.nvidia.com/gpu-computing-julia-programming-language

此外,还有CUDAdrv和CUDAnative软件包...,它们似乎令人困惑,因为它们的功能似乎不像其他软件包那么简单。

这些软件包有什么作用?CuArrays和ArrayFire有什么区别吗?

julia arrayfire

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

在colab中,cuda不能用于割炬

错误消息如下:

RuntimeError                              Traceback (most recent call last)
<ipython-input-24-06e96beb03a5> in <module>()
     11 
     12 x_test = np.array(test_features)
---> 13 x_test_cuda = torch.tensor(x_test, dtype=torch.float).cuda()
     14 test = torch.utils.data.TensorDataset(x_test_cuda)
     15 test_loader = torch.utils.data.DataLoader(test, batch_size=batch_size, shuffle=False)

/usr/local/lib/python3.6/dist-packages/torch/cuda/__init__.py in _lazy_init()
    160 class CudaError(RuntimeError):
    161     def __init__(self, code):
--> 162         msg = cudart().cudaGetErrorString(code).decode('utf-8')
    163         super(CudaError, self).__init__('{0} ({1})'.format(msg, code))
    164 

RuntimeError: cuda runtime error (38) : no CUDA-capable device is detected at /pytorch/aten/src/THC/THCGeneral.cpp:51
Run Code Online (Sandbox Code Playgroud)

torch pytorch google-colaboratory

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

如何以与numpy linalg“ inv”或“ pinv”函数相同的精度执行PyCUDA 4x4矩阵求逆

我的代码执行4x4矩阵求反(128、256、512)数时,遇到了精度问题。当我使用原始版本(即numpy函数np.linalg.inv或)时np.linalg.pinv,一切正常。

不幸的是,使用下面的CUDA代码,我将naninf值转换为倒置矩阵。

更明确地说,我将此矩阵求反:

2.120771107884677649e+09 0.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00
0.000000000000000000e+00 3.557266600921528288e+27 3.557266600921528041e+07 3.557266600921528320e+17
0.000000000000000000e+00 3.557266600921528041e+07 3.557266600921528288e+27 3.557266600921528041e+07
0.000000000000000000e+00 3.557266600921528320e+17 3.557266600921528041e+07 1.778633300460764144e+27
Run Code Online (Sandbox Code Playgroud)

如果使用经典的numpy“ inv”,则会得到以下3x3倒置矩阵:

4.715266047722758306e-10 0.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00
0.000000000000000000e+00 2.811147187396482366e-28 -2.811147186834252285e-48 -5.622294374792964645e-38
0.000000000000000000e+00 -2.811147186834252285e-48 2.811147187396482366e-28 -5.622294374230735768e-48
0.000000000000000000e+00 -5.622294374792964645e-38 -5.622294374230735768e-48 5.622294374792964732e-28
Run Code Online (Sandbox Code Playgroud)

为了检查该逆矩阵的有效性,我将其乘以原始矩阵,结果是单位矩阵。

但是使用CUDA GPU反转后,我得到了以下矩阵:

0.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00
0.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00
-inf -inf -9.373764907941219970e-01 -inf
inf nan -inf nan
Run Code Online (Sandbox Code Playgroud)

所以,我想竟被以提高精度到我的CUDA内核或Python代码,以避免这些naninf值。

这是CUDA内核代码,并调用了我的主要代码的一部分(我已经用numpy inv函数注释了经典方法:

    # Create arrayFullCross_vec array
    arrayFullCross_vec = np.zeros((dimBlocks,dimBlocks,integ_prec,integ_prec)) …
Run Code Online (Sandbox Code Playgroud)

python cuda matrix matrix-inverse pycuda

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

港口R进入库达

我有一个fun1写入的函数R需要很长时间才能运行.我需要多次运行所述函数.

我已经完成了关于R在显卡上运行程序的一些阅读,并且只提出了一些可以运行非常特定功能的程序包(大多数矩阵操作).

我的问题是:有没有办法fun1在显卡上运行或任何用户编写的功能(并行化速度).比如R可以安装一个CUDA解释器,或者也许是R为cuda 编译函数的方法,这样我所要做的就是写一些Cuda/C来执行我最初编写的函数R

任何事情都有帮助

parallel-processing r data-analysis

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