草庐IT

CUDA_TOOL

全部标签

c++ - CUDA 零拷贝内存注意事项

我想弄清楚使用cudaHostAlloc(或cudaMallocHost?)是否合适。我正在尝试运行一个内核,其中我的输入数据多于GPU上可用的数据量。我可以在cudaMallocHost上拥有比GPU上更多的空间吗?如果没有,假设我分配了我需要的空间的1/4(这将适合GPU),使用固定内存有什么好处吗?我基本上仍然需要从1/4大小的缓冲区复制到我的全大小malloc缓冲区,这可能并不比使用普通的cudaMalloc快,对吗?这个典型的使用场景是否适合使用cudaMallocHost:分配固定的主机内存(我们称之为“h_p”)用输入数据填充h_p-为h_p获取GPU上的设备指针使用该设

CUDA 应用程序的 C++ volatile 和运算符重载

我有一个A类,我重载了它的operator=。但是,我需要做这样的事情:volatileAx;Ay;x=y;编译时出现错误error:nooperator"="matchestheseoperandsoperandtypesare:volatileA=A如果我删除了volatile,它就是可编译的。有没有办法在不删除“volatile”(并且仍然保持volatile的行为)的情况下编译它?基本上这是一个CUDA程序,其中“x”是一个共享内存(所有线程都可以访问和修改它的值)。我希望它是“易变的”以避免编译器优化并重新使用该值而不是访问内存地址。关于这个问题的更多信息:一开始A只是一个原

c++ - 如何以程序员愉快的方式使用 CUDA 常量内存?

我正在使用CUDA框架开发一个数字处理应用程序。我有一些所有线程都应该可以访问的静态数据,所以我把它放在常量内存中,如下所示:__device____constant__CaseParamsdeviceCaseParams;我使用调用cudaMemcpyToSymbol将这些参数从主机传输到设备:voidcopyMetaData(CaseParams*caseParams){cudaMemcpyToSymbol("deviceCaseParams",caseParams,sizeof(CaseParams));}有效。无论如何,似乎(通过反复试验,以及阅读网上的帖子)出于某种病态的原因

c++ - CUDA 设备代码支持哪些真正的 C++ 语言结构?

CUDA文档3.2版的附录D提到了CUDA设备代码中的C++支持。明确提到CUDA支持“计算能力2.x设备的类”。但是,我正在使用计算能力为1.1和1.3的设备,我可以使用此功能!例如,这段代码有效://classdefinitionvoluntarysimplifiedclassFoo{private:intx_;public:__device__Foo(){x_=42;}__device__voidbar(){returnx_;}};//kernelusingthepreviousclass__global__voidtestKernel(uint32_t*ddata){Foof;

c++ - 为什么使用cudaMallocManaged时NVIDIA Pascal GPU在运行CUDA内核时运行缓慢

我正在与PascalTitanXGPU一起测试新的CUDA8,并且期望我的代码能够加快速度,但是由于某种原因,它最终会变得更慢。我在Ubuntu16.04上。这是可以重现结果的最少代码:CUDASample.cuhclassCUDASample{public:voidAddOneToVector(std::vector&in);};CUDASample.cu__global__staticvoidCUDAKernelAddOneToVector(int*data){constintx=blockIdx.x*blockDim.x+threadIdx.x;constinty=blockId

c++ - 尝试 'Make' CUDA SDK,ld 找不到库,ldconfig 说可以

我知道还有很多其他问题与这个问题类似,但那里提出的解决方案都不适合我基本上,制作SDK示例文件时,我得到/usr/bin/ld:cannotfind-lcuda这将是一个足够简单的“找到库并将其扔给ldconfig”,除了ldconfig已经说它有它......$sudoldconfig-v|grepcuda/usr/local/cuda/lib64:libcudartemu.so.3->libcudartemu.so.3.0.14libcudart.so.3->libcudart.so.3.0.14/usr/local/cuda/lib:libcudartemu.so.3->libc

c++ - 在 Windows 上的 Qt Creator 中编译 Cuda 代码

几天来,我一直在尝试让Qt项目文件在32位Windows7系统上运行,我希望/需要在其中包含Cuda代码。这种事情的组合要么太简单以至于没有人费心在网上放一个例子,要么太难以至于没有人成功,看起来。不管怎样,我发现的唯一有用的论坛线程是Linux或Mac上的相同问题,或者是Windows上的VisualStudio。然而,所有这些都会产生各种不同的错误,无论是由于库的链接或冲突,还是文件名中的空格或Windows版本的CudaSDK中不存在的文件夹。是否有人可以提供清晰的.pro文件来解决问题?我的目标是用Qt风格的普通C++代码编译一个简单的程序,使用Qt4.8库,它引用.cu文件中

c++ - CUDA __device__ 未解析的外部函数

这个问题在这里已经有了答案:Externalcallsarenotsupported-CUDA(1个回答)关闭7年前。我试图了解如何在单独的头文件中解耦CUDA__device__代码。我有三个文件。文件:1:int2.cuh#ifndefINT2_H_#defineINT2_H_#include"cuda.h"#include"cuda_runtime.h"#include"device_launch_parameters.h"__global__voidkernel();__device__intk2(intk);intlaunchKernel(intdim);#endif/*IN

c++ - cuda 共享库链接 : undefined reference to cudaRegisterLinkedBinary

目标:创建一个包含我的CUDA内核的共享库,该内核具有无CUDA包装器/header。为共享库创建一个test可执行文件。问题共享库MYLIB.so似乎可以正常编译。(没问题)。链接错误:./libMYLIB.so:对__cudaRegisterLinkedBinary_39_tmpxft_000018cf_00000000_6_MYLIB_cpp1_ii_74c599a1的undefinedreference简化的makefile:libMYlib.so:MYLIB.og++-shared-Wl,-soname,libMYLIB.so-olibMYLIB.soMYLIB.o-L/th

windows - 在 Windows 中安装 CUDA 8 和 CUDA 9

只是检查我是否能够在Windows上安装2个不同的cuda版本。系统配置:Windows10专业版GTX1080Ti 最佳答案 只有一个要求,一个人需要满足才能在同一台机器上安装多个CUDA。您需要拥有最新的Nvidia驱动程序,这是您要安装的最高CUDA所必需的。环境先决条件英伟达latestdriver以及至少2个不同的CUDA库。其他设置设置环境变量。创建一个脚本来更改PATH变量以实现快速切换。然后shell将执行您在路径中设置的CUDA版本。有关更多说明,请查看here和here.