草庐IT

CUDA_TOOL

全部标签

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

C++11 标准与 CUDA 6.0

我想在我的CUDA6.0项目中为我的C++文件使用C++11标准。当我将CUDA6.0NsightEclipse设置中的编译器更改为g++并添加-std=c++11选项时,我收到了很多这样的错误:error:namespace"std::__gnu_cxx"hasnomember"__normal_iterator"显然,我必须为CUDA和我的C++文件“选择”一次编译器。我该怎么做?安装支持未记录的C++11的CUDA6.5不是一个选项。 最佳答案 问题是CUDA6.0不支持C++11标准,当将-std=c++11选项传递给编译器

python - Tensorflow 0.7.1 与 Cuda 工具包 7.5 和 cuDNN 7.0

我最近尝试将我的Tensorflow安装从0.6升级到0.7.1(Ubuntu15.10、Python2.7),因为它被描述为与更多最新的Cuda库兼容。一切都运行良好,包括来自Tensorflow入门页面的简单测试。但是我无法使用cuDNN。使用cuDNN运行程序时,我首先收到警告“无法加载cuDNNDSO”后来程序崩溃了Itensorflow/core/common_runtime/gpu/gpu_device.cc:717]CreatingTensorFlowdevice(/gpu:0)->(device:0,name:GeForceGTX980,pcibusid:0000:01

linux - 在 Windows 中运行时的 CUDA 性能损失

当我在Windows7(相对于Linux)中运行我的CUDA应用程序时,我注意到性能受到很大影响。我想我可能知道减速发生在哪里:无论出于何种原因,WindowsNvidia驱动程序(版本331.65)在通过运行时API调用时不会立即分派(dispatch)CUDA内核。为了说明这个问题,我分析了mergeSort应用程序(来自CUDA5.5附带的示例)。首先考虑在Linux中运行时的内核启动时间:接下来,考虑在Windows中运行时的启动时间:这post表明问题可能与批处理内核启动的Windows驱动程序有关。无论如何我可以禁用这个批处理吗?我运行的是GTX690GPU、Windows