草庐IT

xml - GPU 加速的 XML 解析

我需要提高一款分析XML文件并将其内容添加到大型SQL数据库的软件的性能。我一直在尝试查找有关是否可以在GPU上实现它的信息。我对CUDA和OpenCL的研究让我没有任何明确的答案,除了可以使用编译器指令以启用GPU处理的C/C++、FORTRAN和许多其他语言开发软件这一事实之外。这让我问这个问题:我真的需要为GPU加速编写的API或库,还是使用标准XML解析库用C/C++编写并使用CUDA/OpenCL编译器指令编译的程序会自动运行XMLGPU上的库函数? 最佳答案 一般来说,GPU不适合XML处理加速......只有当预期任务

windows - x64 允许每个 block 的线程数少于 Win32?

当我执行一些cuda内核时,我注意到对于我自己的许多cuda内核,x64构建会导致失败,而Win32不会。我很困惑,因为cuda源代码是相同的,而且构建很好。就在x64执行时,它说它需要太多资源来启动。但是x64在概念上不应该比Win32允许更多的资源吗?如果可能的话,我通常喜欢每个block使用1024个线程。因此,为了使x64代码工作,我必须将block缩小到256。有人知道吗? 最佳答案 是的,这是可能的。大概您正在谈论的问题是registers-per-threadissue.在32位模式下,所有指针都是32位的,只需要一个

【OpenGL】(1) 专栏介绍:OpenGL 库 | 3D 计算机图形应用 | GPGPU 计算 | 3D 建模和 3D动画 | 渲染技术介绍

   🔗《C语言趣味教程》👈猛戳订阅!!!💭写在前面:本专栏主要内容是关于3D计算机图形技术的学习,重点是学习与此技术相关的3D实时渲染(3Dreal-timerendering)技术。我们会以"理论+实践"的方式进行讲解,将重点介绍基于光栅化的3D渲染管线的计算结构,如OpenGL/DirectX/Vulkan/Metal等,并使用OpenGLAPI接口实现应用程序。目录0x00专栏介绍0x01前置知识0x02将要学习的内容0x03开放图形库(OpenGL)0x043D计算机图形与应用0x05GPGPU计算(General-PurposeGPUComputing)0x063D几何建模和3D动

c++ - 对如何在 C++ AMP 上执行大任务一无所知

我的任务是查看我开发的算法是否可以使用GPU而非CPU上的计算运行得更快。我是加速器计算的新手,有人给我一本我已经通读过的书“C++AMP”,我认为我对它的理解相当好(我过去用C和C++编写代码,但现在主要是C#)。但是,在实际应用中,我似乎就是不明白。所以,如果可以的话,请帮助我。假设我有一项任务是计算一些复杂的函数,该函数需要一个巨大的矩阵输入(如50000x50000)和一些其他数据并输出相同大小的矩阵。整个矩阵的总计算需要几个小时。在CPU上,我只是将任务分成几个部分(部分数量大约为100个)并使用Parralel.For或我自己编写的简单任务管理循环来执行它们。基本上,保持几

c++ - 适用于 Windows 和 Linux 的 OpenCL 程序中的 GCN ISA 程序集

我需要为AMDGPU优化OpenCL程序。我想尝试在GCNISA汇编中重写一些核心OpenCL内核,但我必须同时支持Windows和Linux。我找到了ROCm平台,它看起来可以为Linux完成工作,但不支持Windows。是否有我可以用来完成此任务的工具链? 最佳答案 是的,RGA(RadeonGPUAnalyzer)正是您要找的。Version1.4该产品的一部分在AMD基于LLVM的Lightning编译器(用于ROCm平台的OpenCL编译器)之上增加了对OpenCL的支持。Version2.0添加了图形用户界面。RGA充当

c++ - 在 C++ 中将矩阵高效分解为方形子矩阵

我通过使用1D数据类型并将其包装到行和列中,在C++中实现了Matrix数据类型。现在,我希望有可能从此时开始创建正方形/分块子矩阵,并且我想在内存中进行。问题是我希望这些子矩阵中的一些可以转移到GPU内存并可以在那里并行处理它们。例如,这对矩阵乘法很有用。由于这些子矩阵在主内存中没有对齐,如果不创建单独的拷贝,将它们作为一个单元复制到设备内存看起来是不可能的?我想让这个直接的GPU子矩阵复制映射到CPU原始矩阵以用于更新和效率目的。我事先不知道确切的分区。有人知道我怎样才能实现它吗?提醒一下,矩阵需要按block划分,而不是按行划分,这在C/C++中相对容易。

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

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

c++ - OpenCL 中复杂数学问题的开源库,如 Matrix Mul、LU、FFT 等

GPU在通用中的使用现在很普遍。最基本的是,矩阵乘法是OpenCL教程中的第一个。而不是针对特定的gpu编写代码和内核代码。是否可以从MKL之类的库中调用它们。Arrayfire在那里但不是免费的。我正在尝试将我的模拟软件移植到具有MatrixMul、LU分解、FFT等的GPU。我正在为这些寻找健壮的代码,而不是从头开始编写它们。我已经有了一个可用的matmulopencl程序,但只是缺乏将它与我的代码集成的知识。下一步我正在尝试使用LU,是否有任何LU代码可以帮助我。 最佳答案 查看ViennaCLhttp://viennacl.

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

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

c++ - CUDA 推力 : copy from device to device

我使用标准CUDAmalloc在CUDA中分配了一个内存数组,并将其传递给函数,如下所示:voidMyClass::run(uchar4*input_data)我还有一个类成员,它是一个推力device_ptr声明为:thrust::device_ptrdata=thrust::device_malloc这里的num_pts是数组中值的个数,input_data指针保证是num_pts长。现在,我想将输入数组复制到thrust_device_ptr中。我看过推力文档,其中很多都在谈论从设备复制到主机内存,反之亦然。我想知道在推力上执行此设备到设备复制的最佳性能最佳方式是什么,还是我应该