草庐IT

CUDA-aware

全部标签

c++ - OpenCL 中的暴力破解(来自 CUDA 的端口)不起作用

*代码和问题的另一个更新*刚开始学习openCL大约1周左右,我尝试移植一个关于暴力破解MD5哈希以从中获取实际字符串的CUDA程序。我使用2个文件:kernel.cl和main.cpp。//thisiskernel.cl{...*definingsomemd5variables*...}voidIncrementBruteGPU(unsignedchar*ourBrute,unsignedintcharSetLen,unsignedintbruteLength,unsignedintincrementBy){inti=0;while(incrementBy>0&&i这是主要的://j

c++ - OpenCV Cuda 不是有类似于 findContours 的函数吗?

有几个OpenCVCPU函数具有直接的CUDA对应项,例如cv::cvtColor和cv::cuda::cvtColor。但我没有发现cv::findContoursCPU的直接或间接(GPU)Cuda对应项。OpenCVCuda没有类似于findContours的功能吗?或者findContours是否同时适用于cv::Mat和cv::cuda::GpuMat? 最佳答案 不幸的是,不是。甚至在最新的OpenCV3.2.0版本中也没有。但是他们有这个更新,如下所示:https://github.com/opencv/opencv/

c++ - 代码解析不适用于 CUDA、Clion 和 CMake

我有一个分为模块的项目,这是一个虚拟示例:根CMakeLists.txt模块工具CMakeLists.txt来源util_file.cpp库达CMakeLists.txt来源cuda_file.cu如果我使用CLion编辑cuda_file.cu,CLion将无法解析所有符号(甚至包括标准库中的符号)。所有代码完成/创建功能当然都消失了(除其他外)。问题似乎是,每当您创建仅包含CUDA文件的库或可执行文件时,Clion就会变得愚蠢并且不再解析或解析任何内容。我发现了两种解决方法,但它们使用起来不友好或“干净”:将一个空的.cpp文件添加到目录并将其添加到add_library()CMa

c++ - 简单的 MPI_Send 和 Recv 使用 CUDA 给出段错误(11)和无效权限(2)

我正在尝试对格子玻尔兹曼建模的CUDA代码进行MPI,但在使用MPI_Send和MPI_Recv函数时遇到了令人沮丧的问题。我已经验证我有CUDA感知MPI和一些简单的设备缓冲区到设备缓冲区MPI发送/接收代码,所以我可以在GPU设备内存之间发送和接收数组,而无需通过CPU/主机。我的代码是针对3D晶格的,它在各个节点之间沿z方向划分,节点之间有光晕,以确保流体可以在这些划分之间流动。光环位于GPU上。下面的代码是一个简化和编译给出了与我的主要代码相同的错误。在这里,Rank0节点上的GPUHalo是MPI_Send()到rank1节点,它是MPI_Recv()。我的问题目前看起来很简

c++ - CUDA 7.5 实验性 __host__ __device__ lambda

我玩了一下experimentaldevicelambdas在CUDA7.5中引入并在此blogpostbyMarkHarris中提升.对于下面的示例,我删除了很多不需要显示我的问题的东西(我的实际实现看起来更好......)。我尝试编写一个foreach函数,它根据模板参数对设备上的vector(每个元素1个线程)或主机(串行)进行操作。使用这个foreach函数,我可以轻松实现BLAS函数。例如,我使用为vector的每个分量分配一个标量(我在最后附上完整的代码):templatevoidassignScalar(size_tsize,double*vector,doublea){

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设备)在设备代