草庐IT

TensorFlow-CUDA-cuDNN-GPU

全部标签

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

c++ - 我有两个 GPU,我怎么能只让其中一个执行特定的 CUDA 任务呢?

刚接触CUDA,但有一些时间花在计算上,我家里有geforces,办公室有tesla(同代)。在家里,我在同一台计算机上安装了两个gpus,一个是GK110(计算能力3.5),另一个是GF110(计算能力2.0),我更喜欢使用GK110仅用于计算任务,GF110用于显示,除非我告诉它进行计算,有没有办法通过驱动程序设置来完成,或者我仍然需要重写我的一些代码?另外,如果我没理解错的话,如果GK110的显示端口没有连接,那么烦人的windows超时检测即使计算时间很长也不会尝试重置它?顺便说一句,我的CUDA代码是用compute_35和compute20编译的,因此代码可以在两个GPU上

c++ - 将 MPI 与 c++11 和 CUDA 相结合

我正在编写分子动力学模拟,一些内核将使用CUDA进行计算。我从使用一些c++11功能的普通CPU实现开始我的代码。现在我必须添加一些CUDA代码,我必须使用不支持c++11功能的编译器(gcc在我的makefile中,我分别从所有cpp文件创建对象,最后将它们全部链接在一起。此外,我的代码以这样一种方式拆分,即可以使用“现代”编译器编译没有CUDA的部分,而使用旧编译器编译其余部分(利用CUDA)。我现在的问题是,这是否可以,或者我是否会/可能会遇到问题? 最佳答案 我不知道Cuda,但我知道的是将C++98和C++11目标文件链接

c++ - 改进 CUDA 中的异步执行

我目前正在编写一个程序,使用CUDAAPI在GPU上执行大型模拟。为了加速性能,我尝试同时运行我的内核,然后再次将结果异步复制到主机内存中。代码大致如下所示:#defineNSTREAMS8#defineBLOCKDIMX16#defineBLOCKDIMY16voiddomainUpdate(float*domain_cpu,//pointertodomainonhostfloat*domain_gpu,//pointertodomainondeviceconstunsignedintdimX,constunsignedintdimY,constunsignedintdimZ){di

c++ - CUDA 中的复杂算术

我经常在CUDA中使用复杂的算术,需要定义自己的实现,例如超越函数(sin、cos、exp,...)在复数上。我现在想通过编写一个包含此类函数的库来明确解决问题,以便考虑“大量”情况并避免在任何时候因新实现而陷入困境。我知道,对于他们中的一些人来说,从准确性和计算复杂性之间权衡的角度来看,编写代码可能并非易事。不过,我也知道C++有自己的complexmathlibrary.是否有可能为CUDA目的“回收”现有的C++解决方案? 最佳答案 可能你已经找到了答案,但这是我的答案:有可能“回收”sourcesforcomplexC++I

c++ - 在 C++Amp 中减少 GPU-CPU 数据传输

我在尝试使用C++Amp优化我的应用程序时遇到了以下问题:数据传输。对我来说,将数据从CPU复制到GPU没有问题(因为我可以在应用程序的初始状态下执行此操作)。更糟糕的是,我需要快速访问C++Amp内核计算的结果,因此GPU和CPU之间的瓶颈很痛苦。我读到Windows8.1下的性能提升,但是我使用的是Windows7,我不打算更改它。我阅读了有关暂存阵列的信息,但我不知道它们如何帮助解决我的问题。我需要向主机返回一个浮点值,这似乎是最耗时的操作。floatSubset::reduction_cascade(unsignedelement_count,concurrency::arra

一文读懂「四大主流计算芯片 CPU、GPU、ASIC、FPGA」特点和场景

纵观人类历史,从结绳计数、木制计数到巴比伦的粘土板上的刻痕,再到中国古代的算盘,社会生产力的提高与当时所采用的计算工具密切相关。计算工具能力越强,就能大幅缩短人类解决复杂问题的时间,社会生产力水平自然就会越高。CPUCPU,全称CentralProcessingUnit,即中央处理器。现代电子计算机的发明是基于1940年代诞生的冯·诺依曼架构,这个架构主要由运算器、控制器、存储器、输入设备、输出设备等五个主要部分组成。特点:CPU具有通用性和灵活性,能够执行各种任务,如操作系统管理、软件运行和数据处理等。它擅长串行计算,即按照指定顺序执行任务。应用:广泛应用于个人电脑、服务器、移动设备等各种计