草庐IT

CUDA-ExecutionProvider

全部标签

c++ - Cuda Hello World printf 即使使用 -arch=sm_20 也不工作

我不认为我是Cuda的新手,但显然我是。我最近将我的cuda设备升级到了1.3到2.1的一种功能(GeforceGT630)。我还想全面升级到Cuda工具包5.0。我可以编译通用的cuda内核,但即使设置了-arch=sm_20,printf也无法正常工作。代码:#include#include#include#include__global__voidtest(){printf("HiCudaWorld");}intmain(intargc,char**argv){test>>();return0;}编译器:Error2errorMSB3721:Thecommand""C:\Prog

c++ - 为什么我调用 CUDA 数学库 sqrt() 函数失败?

我是Cuda的新手,我有以下功能:__global__voidsquare(float*myArrayGPU){myArrayGPU[threadIdx.x]=sqrt(threadIdx.x);}我想使用cuda数学库,我尝试了#include"math.h"但我仍然遇到错误错误:不允许从__global__函数(“square”)调用__host__函数(“__sqrt”)知道我应该包含什么库来使用sqrt吗? 最佳答案 threadIdx.x是int类型。CUDA数学库仅针对单精度(float)和double(double)重

c++ - CUDA,使用 memset(或 fill 或 ...)将 float 数组设置为 max val possible

编辑:感谢之前的回答。但实际上我想在CUDA中进行,显然CUDA没有Fill函数。我必须为每个线程填充一次矩阵,所以我想确保我使用的是最快的方法。这是我最好的选择吗?我想将float矩阵设置为可能的最大值(在float中)。做这项工作的正确方法是什么?float*matrix=newfloat[N*N];for(inti=0;i提前致谢。 最佳答案 CUDA中最简单的方法是使用thrust::fill.Thrust包含在CUDA4.0及更高版本中,或者您可以installit如果您使用的是CUDA3.2。#include#inclu

c++ - CUDA/C++ - 链接错误 : undefined reference to

我是一名新手,正在寻求有关使用g++将一些已编译的CUDA目标代码链接到C++项目的帮助。之前有一些针对此帖子的问题和解决方案(here和here),但没有一个对我有用,我似乎无法弄清楚原因。不幸的是,为此我一直在使用Windows。我尝试开始工作的简单示例如下所示://kernel.hintcuda_vec_add(float*h_a,float*h_b,float*h_c,intn);添加两个vector的CUDA代码。//kernel.cu#include__global__voidvec_add_kernel(float*a,float*b,float*c,intn){inti

c++ - CUDA 探查器 : Calculate memory and compute utilization

我正在尝试使用ubuntu上的CUDAnsight分析器为我的GPU加速应用程序的内存带宽利用率和计算吞吐量利用率建立两个总体测量值。该应用程序在TeslaK20cGPU上运行。我想要的两个测量值在某种程度上与此图中给出的测量值相当:问题是这里没有给出确切的数字,更重要的是我不知道这些百分比是如何计算的。内存带宽利用率Profiler告诉我我的GPU的最大全局内存带宽为208GB/s。这是指设备内存BW还是全局内存BW?它说的是全局,但第一个对我来说更有意义。对于我的内核,分析器告诉我设备内存带宽为98.069GB/s。假设最大208GB/s是指设备内存,那么我可以简单地将内存带宽利用

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){