草庐IT

CUDA-aware

全部标签

c# - 用 C# 编写 CUDA?

我一直在寻找有关使用C#编写CUDA(nvidiagpu语言)的信息。我看过一些库,但它们似乎会增加一些开销(因为p/invokes等)。我应该如何在我的C#应用程序中使用CUDA?用C++编写代码并将其编译成dll会更好吗?这种使用包装器的开销是否会扼杀我从使用CUDA中获得的任何优势?有没有在C#中使用CUDA的好例子? 最佳答案 ManagedCuda是一个很好的完整cuda4.2包装器.您只需将C++cuda项目添加到您的解决方案中,其中包含您的c#项目,然后您只需添加call"%VS100COMNTOOLS%vsvars3

Ubuntu20.04安装NVIDIA驱动+CUDA11.6+CUDNN

一、查看并卸载已经有的驱动查看显卡驱动nvidia-smi卸载曾经安装的NVIDIA版本sudoapt-getremove–purgenvidia*禁用nouveau(系统自带的显卡驱动),只有在禁用掉nouveau后才能顺利安装NVIDIA显卡驱动。sudogedit/etc/modprobe.d/blacklist.conf输入密码后在最后一行加上: blacklistnouveau将Ubuntu自带的显卡驱动加入黑名单,Ctrl+s保存后注意此时还需执行以下命令使禁用nouveau真正生效终端输入:sudoupdate-initramfs-u输入以下命令,没有任何返回说明已经干掉nouv

go - Go语言的cgo如何编译Cuda源码?

我用cuda-c编写了一个简单的程序,它可以在eclipsensight上运行。这是源代码:#include#include__global__voidadd(inta,intb,int*c){*c=a+b;}intmain(void){intc;int*dev_c;cudaMalloc((void**)&dev_c,sizeof(int));add>>(2,7,dev_c);cudaMemcpy(&c,dev_c,sizeof(int),cudaMemcpyDeviceToHost);printf("\n2+7=%d\n",c);cudaFree(dev_c);return0;}现在

c++ - 在内核外使用 CUDA printf 打印设备变量

在内核之外的CUDA中打印设备变量的最佳方法是什么?我是否必须对主机执行cudaMemcpy然后打印结果值?当我尝试对使用cudaMalloc创建的指针使用printf时,程序崩溃了。似乎大部分注意力都集中在内核内部打印,而不是常规代码中。谢谢,埃里克 最佳答案 "WhenItrytouseprintfonpointerscreatedusingcudaMalloc,theprogramcrashes"如果你有这个:int*d_data,*h_data;cudaMalloc(&d_data,DSIZE);你不能这样做:printf(

linux - 我可以在主机进程之间共享 cuda GPU 设备内存吗?

是否有可能有两个或多个linux主机进程可以访问相同的设备内存?我有两个进程在它们之间传输高数据速率,我不想将数据从GPU带回进程A中的主机,只是为了将它传递给进程B,后者将memcpyh2d返回到GPU。将多个进程合并为一个进程不是一种选择。 最佳答案 我对CUDAAPI的理解是,这是不可能做到的。设备指针与给定的CUDA上下文相关,并且无法在进程之间共享这些指针。 关于linux-我可以在主机进程之间共享cudaGPU设备内存吗?,我们在StackOverflow上找到一个类似的问题

linux - 是否可以在应用程序之间共享 Cuda 上下文?

我想在两个独立的Linux进程之间传递一个Cuda上下文(使用我已经设置好的POSIX消息队列)。使用cuCtxPopCurrent()和cuCtxPushCurrent(),我可以获得上下文指针,但是这个指针在我调用函数的进程的内存中被引用,在进程之间传递它是没有意义的。我正在寻找其他解决方案。到目前为止,我的想法是:尝试深度复制CUcontext结构,然后传递副本。看看我能否找到一个共享内存解决方案,将我所有的Cuda指针都放在那里,以便两个进程都可以访问它们。将流程合并为一个程序。Cuda4.0中可能有更好的上下文共享,我可以切换到它。我不确定选项(1)是否可行,也不确定(2)是

c++ - 将 CUDA printf 重定向到 C++ 流

问题陈述我正在从事一个使用记录器进行调试的大型项目。因为我喜欢跟踪某些CUDA内核中发生的事情,所以我试图找到一种方法来重定向printf。我的CUDA内核到stringstream(或任何流),然后可以转发到记录器。可能的解决方案我设法使用以下代码做到了这一点:#include#include#include//dup#include#include//stringstream#include//ofstreamchar*output_file="printf_redirect.log";__global__voidprintf_redirect(int*src,int*res){r

c - fatal error : cuda. h:没有那个文件或目录

我在我的电脑上成功安装了CUDA8.0,我可以通过在我的Ubuntu16.10中运行以下命令来查看它的文件:$sudofind/-namenvcc/usr/local/cuda-8.0/bin/nvcc$sudofind/-namecuda/usr/local/cuda/usr/local/cuda-8.0/targets/x86_64-linux/include/thrust/system/cuda/usr/share/doc/cuda/usr/include/nvidia-367/cuda然后,我得到了以下源代码(has_cuda.c)来检查是否安装了CUDA:#includein

linux - Nvcc 的版本与 CUDA 不同

我安装了cuda7,但是当我点击nvcc--version时,它打印出6.5。我想在GTX960卡上安装Theano库,但它需要nvcc7.0。我试过重新安装cuda,但它没有更新nvcc。当我运行apt-getinstallnvidida-cuda-toolkit时,它只安装6.5。如何将nvcc更新到7.0版? 最佳答案 请按照官方安装指南卸载当前的cuda环境,然后安装最新的CUDA开发环境,包括cudaSDK、cudatoolkit和驱动。 关于linux-Nvcc的版本与CUD

c++ - 是否可以解决 CUDA 内存碎片问题?

我正在尝试分配一些内存,但有时会出现“内存不足”错误。cudaMemGetInfo表示我需要更多可用内存。因此,内存碎片问题。有可能解决这个问题吗?是否可以将元素放入内存中,而不是一个一个地放入内存中,然后碎片化成我可以放入内存中的几个和平点? 最佳答案 如果你因为内存碎片而“内存不足”,那么你使用内存的方式就存在一些错误!!您负责对该内存进行碎片化,考虑重新设计您的程序,例如使用内存池来避免过多的新/删除以避免内存碎片 关于c++-是否可以解决CUDA内存碎片问题?,我们在StackO