草庐IT

CUDA-ExecutionProvider

全部标签

c++ - 编译 CUDA 示例会出现构建错误

我正在运行Windows764位和VisualStudio2008。我安装了CUDA驱动程序和SDK。SDK附带了很多示例,包括已编译的可执行文件和源代码。编译后的可执行文件运行得很好。当我打开vc90解决方案并在Win32配置中构建时,我收到此错误:Error1fatalerrorLNK1181:cannotopeninputfile'.\Release\bandwidthTest.cu.obj'bandwidthTestbandwidthTest构建日志:1>------Buildstarted:Project:bandwidthTest,Configuration:Release

c++ - Cuda虚拟类

我想在cuda内核中执行一些虚拟方法,但我不想在同一个内核中创建对象,而是想在主机上创建它并将其复制到gpu内存。我正在内核中成功创建对象并调用虚拟方法。复制对象时出现问题。这是有道理的,因为显然虚函数指针是伪造的。发生的只是“Cudagridlaunchfailed”,至少Nsight是这么说的。但是当查看SASS时,它会在取消引用虚函数指针时崩溃,这是有道理的。我当然在使用Cuda4.2以及在适配卡上使用“compute_30”进行编译。那么推荐的方法是什么?还是根本不支持此功能?我有想法首先运行一个不同的内核,它创建虚拟对象并提取虚函数指针以在复制它们之前“修补”我的对象。遗憾的

c++ - 在 Cmake 中使用 Cuda 对象链接

现在我正在开发一个使用Cuda5的对象链接功能的项目。由于项目开始变得复杂,我想切换到使用cmake来编译代码。但是,我似乎无法让对象链接正常工作。我最终创建了该项目的玩具版本,它出现了与原始项目相同类型的错误。玩具项目包含一个调用内核函数以在GPU上运行的主文件(TextureMain.cu)。在每个GPU线程中,引用了一个用户定义类(TextureFunc)的实例,其中该类存在于与主文件不同的文件夹中。该类由该文件夹中的TextureFunc.cu和TextureFunc.h文件组成。这是我正在使用的CMakeList.txt文件:在项目目录下(包含src目录):project(T

c++ - 将 CUDA 集成到 C++ 应用程序中以使用现有的 C++ 类

我有一个现有的应用程序,它使用C++类、C++包装器和FORTRAN代码来处理应用程序的计算密集型部分。我想在CUDA中实现部分FORTRAN以利用并行化,但我仍想访问一些子例程,因此我需要链接CUDA、C++和FORTRAN代码。我有三个问题:1.如何将所有目标文件正确链接到Linux终端和Makefile(包含在下面)?2.在不混淆编译器对设备和主机代码的识别的情况下,在类头中引用CUDA函数的正确方法是什么?3.将类传递给CUDA就像将类传递给任何其他外部C代码一样吗?注意:除了Makefile之外,我没有包含完整代码(其中一些代码很长)。如果我需要包含更多内容,请告诉我。.h文

c++ - 在 CUDA 内核中使用 memset

这似乎是一个显而易见的问题,但谷歌没有找到任何有趣的东西。在CUDA内核中使用memset是否合法,例如:__device__voidmyKernel(){intarray[10];memset(array,0,sizeof(array));//...etc...}(我知道intarray[10]={0};可能更好,但这只是一个更复杂的例子。) 最佳答案 是的,如AppendixBoftheprogrammingmanual中所述,memset,以及memcpy,malloc,和free(后两者仅在计算能力上>=2.0设备)在设备代

c++ - 如何将 CUDA .cu 代码与 C++ 应用程序集成

这篇文章与我之前的文章非常相似:HowtoseparateCUDAcodeintomultiplefiles恐怕我在实际询问中犯了如此大的错误,以至于无法在那里尝试和更正它会太困惑。我将此代码松散地基于CUDASDK中的cppIntegration示例。我想要一个main.cpp和我的main()函数,并让它调用一个单独的.cu文件在GPU上做一些工作。在单独的.cu文件中,我希望它能够调用驻留在另一个.cu文件中的内核代码。我设想了三个文件:Main.cpp、KernelWrapper.cu和MyKernel.cu。用于测试目的的Main.cpp除了调用位于KernelWrapper

c++ - 使用 nvcc (CUDA) 编译 Eigen 库

我尝试使用nvcc(CUDA5.0RC)编译以下程序(main.cu):#include#includeintmain(intargc,char**argv){std::cout不幸的是,我收到了一堆警告和错误,我只能使用nvcc而不是Microsoft编译来解释。这个假设对吗?有什么办法可以用nvcc编译Eigen吗?(我实际上不想将特征矩阵传输到GPU,只是访问它们的成员)?如果使用nvcc编译Eigen不可行,是否有关于分离主机和设备代码的巧妙方法的很好的指南/教程?我正在使用CUDA5.0RC、VisualStudio2008、Eigen3.0.5。为了编译.cu文件,我同时使

c++ - openCV 2.4.9 与 CUDA 6.5 的编译错误

我正在运行安装了CUDA6.5的ubuntu14.04系统。我正在尝试使用OpenCV库的特征匹配的gpu实现,我的openCV库版本是2.4.9。cmake..没问题,但是当我想制作项目时,它会给我这样的错误:>/usr/local/include/opencv2/gpu/gpu.hpp:432:29:error:‘vector’does>notnameatypeCV_EXPORTSvoidmerge(constvector&src,>GpuMat&dst,Stream&stream=Stream::Null());>^/usr/local/include/opencv2/gpu/g

c++ - CMake 没有正确找到 CUDA 库

我正在尝试构建一个需要CUDA的程序。对于我提供的CMake脚本:cmake-DCUDA_TOOLKIT_ROOT_DIR=/usr/local/cuda..找到CUDA并且CMake正常运行:staudt~/workspace/clutbb/cluster/build$cmake-DCUDA_TOOLKIT_ROOT_DIR=/usr/local/cuda..--FoundCUDA:/usr/local/cuda(foundversion"6.5")--FoundIntelTBB--Boostversion:1.56.0--FoundthefollowingBoostlibrarie

c++ - CUDA 流和上下文

我目前正在使用一个生成一堆pthreads(linux)的应用程序,并且每个pthreads创建它自己的CUDA上下文。(现在使用cuda3.2)。我遇到的问题是,似乎每个线程都有自己的上下文,这会占用GPU上的大量内存。每个线程大约200MB,所以这真的限制了我。我能否简单地在主机线程中创建流,将流引用传递给工作线程,然后工作线程能够将它们的流编号传递给我的CUDA库,并且所有工作都在同一上下文中进行?工作线程是否自动知道与其父线程相同的CUDA上下文?谢谢 最佳答案 每个CUDA上下文确实会占用相当多的设备内存,并且它们的资源彼