草庐IT

pytorch-gpu-cuda

全部标签

c++ - CUDA 和 Eclipse : How can I tell eclipse that <<< (or >>>) is part of the syntax?

到目前为止,我发现如果定义了__CDT_PARSER__,可以通过定义它们来防止Eclipse提示专有CUDA关键字。以下代码可防止Eclipse提示大多数CUDA关键字。//Preventeclipsefrombitchingaboutunknownkeywords#ifdef__CDT_PARSER__#define__global__#define__device__#define__host__#define__shared__#endif然而,这不适用于用于配置内核启动的括号,因为我的内核通常有很长的参数列表,这很烦人。有什么想法吗? 最佳答案

windows - 从 GPU 获取完整的桌面截图

我一直在使用WindowsAPI的BitBlt函数来执行屏幕抓取。但是也有很多缺点:DWM和Aero导致速度大幅下降(3毫秒-->35毫秒只是为了调用BitBlt)——要解决这个问题需要禁用Aero,我宁愿不这样做。屏幕闪烁,事物四处移动。必须将数据重新传输到GPU才能将数据作为纹理加载如果没有CAPTUREBLT标志,则无法捕获分层窗口。启用后,鼠标光标会在捕获时闪烁。这可能看起来像是一个小问题,但是当应用程序没有其他错误时,它会非常烦人。作为解决方法,我打算将分层窗口渲染为附加光标。我已经在使用OpenGL来显示和操作捕获的屏幕数据。BitBlt给我像素数据,将它加载到纹理中相对容

c++ - CUDA:嵌入式for循环内核

我有一些代码想放入cuda内核中。看:for(r=Y;r是否应该将其分成两个内核,一个用于计算RowSums,一个用于计算均值,我应该如何处理我的循环索引不是从零开始到N结束的事实? 最佳答案 假设您有一个计算这三个值的内核。您配置中的每个线程将为每个(r,c)对计算三个值。__global__value_kernel(Y,H,X,W){r=blockIdx.x+Y;c=threadIdx.x+W;chan1value=...chan2value=...chan3value=...}我不相信你可以在上面的内核中计算总和(至少是完全并

c++ - 最佳 GPU 性能的理想位图大小?

我知道在处理显卡时,需要提供2的幂位图。1,2,4,8,16,32...我打算制作一个基于图block的项目,只有我需要知道向显卡提供巨大的位图是否有任何限制。使用小/大位图的优点/缺点是什么?我应该使用更合适的位图大小吗? 最佳答案 一般来说,在处理现代GPU时,数据量越大越好。你没有说你正在使用什么API(OpenGL、CUDA等),但你可以这样想:chunk_time=overhead_time+(num_of_elements/num_of_chunks)*per_element_timetotal_time=chunk_t

c++ - CUDA 运行时错误 4 - 从 CUDA 3.2 更新到 CUDA4 后出现

我最近尝试将我的系统从CUDA3.2更新到CUDA4.0这似乎不是一个很顺利的更新。首先,现在很多SDK示例都失败了。matrixMul和FFT问题等等都回来说错误太大,所以他们失败了。我写的代码似乎也有一些问题。我不得不追踪一些我以前从未遇到过的由NaN引起的错误,现在我也遇到了偶尔的内核启动失败。通常它说cudaSafeCall()RuntimeAPIerror4:unspecifiedlaunchfailure.或cutilCheckMsg()CUTILCUDAerror:fftshift()executionfailed:(4)unspecifiedlaunchfailure.

c++ - 如何使用 CUDA/Thrust 根据其中一个数组中的值对两个数组/vector 进行排序

这是一个关于编程的概念性问题。总而言之,我有两个数组/vector,我需要对一个数组/vector进行排序,其中的变化也在另一个数组中传播,因此如果我对arrayOne进行排序,对于排序中的每个交换-同样的事情也会发生在arrayTwo上。现在,我知道std::sort允许您定义一个比较函数(对于我假设的自定义对象),我正在考虑定义一个以同时交换arrayTwo。所以我想要的是-使用CUDA根据其中一个vector中的值对两个vector进行排序。这就是我的不确定性上升的地方,基本上我想使用Thrust库来进行排序。它是否支持自定义比较函数的定义?如果是这样,我仍然没有弄清楚如何在ar

c++ - CUDA 和模板 : specialization declaration needed?

我有一个模板化包装函数,它调用在.cu文件中定义的内核(__global__)template__global__voidcompute_kernel(T*input,T*output,n){Mm;//computestuffusingm};templatevoidcompute(T*input,T*output,intn){//...computeblocks,threads,etc.compute_kernel>>(input,output,n);//...};和一个头文件包含在只有声明的主机代码中templatevoidcompute(T*input,T*output,intn)

c++ - 在 CUDA 线程中填充计数 'buckets'

在我的程序中,我通过体素网格跟踪大量粒子。粒子与体素的比例是任意的。在某个时刻,我需要知道哪些粒子位于哪些体素中,以及有多少粒子位于哪些体素中。具体来说,体素必须确切地知道其中包含哪些粒子。由于我不能在CUDA中使用任何类似std::vector的东西,我正在使用以下算法(在高级别):分配一个整数数组,其大小为体素数为所有粒子启动线程,确定每个粒子所在的体素,并在我的“桶”数组中增加适当的计数器分配一个大小为粒子数的指针数组计算每个体素在这个新数组中的偏移量(将其前面的体素中的粒子数相加)将粒子以有序的方式放置在数组中(我使用此数据来加速稍后的操作。速度的提高非常值得增加内存使用量)。

c++ - 从gpu特征描述符转换的opencv特征描述符的问题

我在使用openvc将GPU特征描述符矩阵转换为CPU特征描述符矩阵时遇到了一些问题,使用:voiddownloadDescriptors(constGpuMat&descriptorsGPU,vector&descriptors);如您所见,此方法将包含描述符的GpuMat转换为包含描述符的浮点vector。问题是,当我访问此vector的某些元素时,返回的值与0的预期间隔完全不同。至255.我制作了以下测试程序来比较提取时间和通过SURF_GPU获得的描述和SURF:clock_tstart;clock_tend;SURF_GPUsurfGPU;SURFsurf;Matimg1=i

【深度学习】【部署】Flask快速部署Pytorch模型【入门】

【深度学习】【部署】Flask快速部署Pytorch模型【入门】提示:博主取舍了很多大佬的博文并亲测有效,分享笔记邀大家共同学习讨论文章目录【深度学习】【部署】Flask快速部署Pytorch模型【入门】前言搭建简单的Web服务搭建深度学习的Web服务win10下打包成exe(选看)总结前言Django和Flask都是python的服务框架,Flask相较于Django的优势是更加轻量级,因此尝试用Flask构建API服务,Flask快速部署深度学习模型再打包exe与深度学习模型直接打包exe相比,前者模型只需要加载一次权重就可以一直使用,而后者每一次预测都需要重新加载一次模型权重,严重浪费了