标签: nvidia

即使清除并删除文件后也无法卸载 cuda

我正在一台计算机上工作,Nvidia 驱动程序和 Cuda 是由其他人安装的,所以我不知道他们安装它们的方法。其中/usr/local/有两个目录cudacuda.10.0。运行nvidia-smi会输出:

CUDA版本:11.0

这让我相信系统上安装了两个 cuda 版本,这导致了一些错误。

在这个问题之后,我首先删除了 cuda:

sudo apt-get --purge remove "*cublas*" "cuda*" "nsight*" 
Run Code Online (Sandbox Code Playgroud)

然后做

sudo rm -rf /usr/local/cuda* 
Run Code Online (Sandbox Code Playgroud)

(我没有卸载 nvidia-drivers 并且Driver Version: 450.80.02已安装)。运行nvidia-smi仍然输出:

CUDA版本:11.0

如何卸载cuda 11?我更喜欢 cuda 10,但找不到 cuda 11 的安装位置。

我还需要卸载 nvidia 驱动程序吗?

ubuntu cuda nvidia tensorflow

0
推荐指数
1
解决办法
5061
查看次数

寻求更好地理解 CUDA 中的本地内存。它在哪里生活?有多少?我想尝试利用它吗?

看来我误解了本地内存,认为访问速度很快,并且在内核中分配一个大数组可以利用它,这将是一件好事。然而,经过一番谷歌搜索后,看起来本地内存实际上是全局内存的一部分,因此访问速度会很慢。所以现在我试图准确理解当我在内核中分配一个大数组时会发生什么。考虑到寄存器非常有限,数组肯定无法容纳在该空间中。剩余部分是否会溢出并写入本地分配的全局内存空间?它的各个部分是否根据需要移入和移出寄存器?如果我必须在内核中多次读写它,那么它是否以某种方式缓存,可以减轻它是全局内存的事实?线程实际可以使用多少内存来动态分配数组,这个限制只是全局内存量除以线程数吗?

如果这对你答案中的数字很重要,我正在使用 V100。谢谢!

cuda gpu nvidia

0
推荐指数
1
解决办法
1051
查看次数

CUDA 是否向块中的所有线程广播共享内存而不会发生存储体冲突?

在 CUDA 编程指南的共享内存部分中,它指出 warp 的共享内存访问不是序列化的,而是广播读取的。

然而,它没有说明如果整个块请求相同的内存地址会发生什么。warp 之间的访问是串行的还是 CUDA 可以广播到整个块。

我的案例的演示代码

// Assume 1024 sized int array
__global__ add_from_shared(int* i, int* j, int* out)
{
    __shared__ int shmem[1024];
    shmem[threadIdx.x] = i[threadIdx.x];
    ...
    Do some stuff
    ...
    // Is the shared memory call here serilized between warps or is it a broadcast over the entire block?
    j[threadIdx.x] += shmem[0];
}  
Run Code Online (Sandbox Code Playgroud)

谢谢

cuda gpu gpgpu nvidia gpu-shared-memory

0
推荐指数
1
解决办法
953
查看次数

在 GPU 上运行多个进程时的内存问题

这个问题可以与我的另一个问题相关查看。

我尝试并行运行多个机器学习进程(使用 bash)。这些是使用 PyTorch 编写的。在一定数量的并发程序(我的例子中是 10 个)之后,我收到以下错误:

RuntimeError: Unable to find a valid cuDNN algorithm to run convolution
Run Code Online (Sandbox Code Playgroud)

正如这个答案中提到的,

...发生这种情况的原因可能是达到了 VRAM 内存限制(从错误消息来看,这相当不直观)。

对于我的 PyTorch 模型训练案例,减小批量大小有帮助。您可以尝试此操作,或者减小模型大小以消耗更少的 VRAM。

我尝试了此处提到的解决方案,以强制执行每个进程的 GPU 内存使用限制,但此问题仍然存在。

对于单个进程或较少数量的进程,不会出现此问题。由于同一时刻只有一个上下文运行,为什么这会导致内存问题?

使用/不使用 MPS 时都会出现此问题。我认为 MPS 可能会出现这种情况,但其他情况则不然,因为 MPS 可能会并行运行多个进程。

cuda gpu gpgpu nvidia pytorch

0
推荐指数
1
解决办法
979
查看次数

OpenGL GLX_EXT_swap_control 存在但无法链接函数

我无法在代码中使用 glXSwapBufferEXT,我得到未声明的标识符。但例如 glXQueryDrawable 可以工作。

在我的 cmake 文件中,我链接了 Opengl 库,并将它们包含在编译器中。

在我的标题中,我包括 GL/glx.h 和 GL/glxext.h。

运行 glxinfo 显示 GLX_EXT_swap_control 存在,并且在我的应用程序中测试扩展也显示它在运行时存在。

我究竟做错了什么?我错过了什么吗?

我为 Quadro K5000 安装了 NVIDIA 346.47 驱动程序

Linux gcc4.9/clang3.5

c++ opengl nvidia cmake

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

nvidia cuda使用机器的所有核心

我在一台拥有四个内核的cpu的机器上运行cuda程序,如何更改cuda c程序以使用所有四个内核和所有可用的gpu?

我的意思是我的程序在gpus计算之前也在主机端执行操作'...

谢谢!

c cuda nvidia scientific-computing

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

Cuda GPU 编译,我认为它没有使用 GPU

我尝试学习CUDA。它与 C 非常相似。我尝试在我的 GPU 中运行一些代码。但我认为它并不快,我认为这与我的代码有关。我想只有我 __global__ void func(ull* num1, ull* num2, ull* sum)在 GPU 上工作。这就是我要的。但它并不快。我该怎么办。

typedef uint64_t ull;

#define E1 1
#define E2 5000000000000000

__global__ void func(ull* num1, ull* num2, ull* sum)
{
    for (ull i = *num1; i <= *num2; i++)
    {
        sum[0] += i;
    }
}

int main()
{
    ull n1 = E1;
    ull n2 = E2;
    ull sum = 0;

    ull* d_n1;
    ull* d_n2;
    ull* d_sum;

    cudaMalloc(&d_n1, sizeof(ull));
    cudaMalloc(&d_n2, sizeof(ull));
    cudaMalloc(&d_sum, sizeof(ull));

    cudaMemcpy(d_n1, &n1, sizeof(ull), cudaMemcpyHostToDevice); …
Run Code Online (Sandbox Code Playgroud)

c++ cuda gpu gpgpu nvidia

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