gpgpu相关内容

CUDA中的双精度浮点

CUDA是否支持双精度浮点数?也需要同样的原因。 解决方案 提示: 如果你想使用双精度,你必须将GPU架构设置为 sm_13 (如果你的GPU支持它)。 否则它仍然会将所有双精度值转换为浮点值,并只给出一个警告(如faya的帖子中所示)。 标志是: -arch = sm_13 code> ..
发布时间:2017-03-04 12:17:10 其它硬件开发

GPU作为CPU的可行性?

您认为GPU作为像CUDA这样的CPU计划的未来是什么?你认为他们将成为主流,并成为行业中下一个被采用的流行?苹果正在构建一个使用GPU来完成CPU任务的新框架,并且在Nvidias CUDA的科学项目中取得了很多成功。 解决方案 首先我不认为这个问题真的属于SO。 在我看来,GPU是一个非常有趣的选择,当你做基于矢量的浮点数学。然而这转化为:它不会成为主流。大多数主流(桌面)应用程 ..
发布时间:2017-03-04 12:16:46 其它硬件开发

CUDA中的矩阵向​​量乘法:基准&性能

我更新我的问题与一些新的基准测试结果(我也重新设计的问题更具体,我更新了代码)... 在CUDA C中的矩阵向​​量乘法的内核,位于 CUDA C使用共享内存。让我首先提出一些基准测试结果,我在一个Jetson TK1(GPU:Tegra K1,计算能力3.2)和一个与cuBLAS的比较: 这里我猜cuBLAS有一些魔术,因为它似乎执行不受数字 A 的列,这反过来意味着沿着 A 的列有 ..
发布时间:2017-03-04 12:13:38 其它硬件开发

使用CUBLAS例程在GPGPU上保留点积

我编写一个代码来计算两个向量的点积,使用点积的CUBLAS例程,但它返回主机内存中的值。我想使用点积进一步计算在GPGPU只。如何使值仅驻留在GPGPU上,并将其用于进一步的计算,而无需从CPU到GPGPU的显式副本? 解决方案 >根据talonmies的答案,从CUBLAS V2 api(CUDA 4.0)开始,返回值可以是一个设备指针。参考他的答案。但是如果你使用V1 API,它是一个 ..
发布时间:2017-03-04 12:01:06 其它硬件开发

关于NVIDIA GPU的IEEE-754标准(sm_13)

如果我在主机和设备(GPU arch sm_13)上执行浮点(单精度)操作,那么值是不同的? 解决方案 有关这方面的一个很好的讨论可以在白皮书。基本上: IEEE-754几乎是目前所有的功能; 这个标准,你仍然可以看到结果的差异(着名的,英特尔在内部为双精度做80位),或高优化设置与您的编译器可以改变结果 计算能力2.0及更高版本NVIDIA卡支持单精度和双精度的IEEE-754 ..
发布时间:2017-03-04 11:56:55 其它硬件开发

与第三方CUDA库链接会减慢cudaMalloc

这不是一个秘密,在CUDA 4.x的第一次调用 cudaMalloc 可以是可笑的慢(这是报告了几次),貌似一个 最近,我注意到了奇怪的行为: cudaMalloc 的运行时间取决于我链接到我的程序的第三方CUDA库 (注意,我不使用这些库,只是链接我的程序) 我使用以下程序运行一些测试: int main(){ cudaSetDevice(0); unsigned ..
发布时间:2017-03-04 11:54:33 其它硬件开发

如何调用CUDA内核中的主机函数?

正如以下错误所暗示的,在内核中不允许调用主机函数('rand'),我不知道是否有解决方案,如果我需要这样做。 错误:不允许从__device __ / __ global__函数(“xS_v1_cuda”)调用主机函数(“rand”) __ device__的函数。 修饰符。如果您在设备代码中需要随机数字,请查看cuda随机生成器 curand http://developer.n ..
发布时间:2017-03-04 11:53:10 其它硬件开发

将主机函数作为函数指针传递给CUDA中的__global__或__device__函数

我目前正在开发一个GPU版本的CPU函数 (例如函数Calc(int a,int b,double * c,souble * d,CalcInvFunction GetInv)),其中主函数通过函数指针(例如在上面的例子中GetInv是CalcInvFunction类型的主函数)。我的问题是,如果我必须把Calc()函数完全在GPU中,我必须传递GetInv函数作为函数指针参数在设备功能/内核函 ..
发布时间:2017-03-04 11:51:49 其它硬件开发

使用CUDA的大整数加法

我一直在GPU上开发一个加密算法,目前坚持使用算法来执行大整数加法。大整数以通常的方式表示为一串32位字。 例如,我们可以使用一个线程来添加两个32位字。为简单起见,假设 要添加的数字具有相同的长度和每块线程的数量==字数。然后: __ global__ void add_kernel(int * C,const int * A,const int * B){ int x = A ..
发布时间:2017-03-04 11:49:04 其它硬件开发

在不同范围内的Cuda内核中生成随机数

我想在cuda内核中产生随机数随机数。我希望从均匀分布和整数形式生成随机数,从1到8开始。每个线程的随机数将不同。可以生成随机数的范围也将从一个线程到另一个线程变化。一个线程中的范围的最大值可以低至2,或者在另一个线程中,其可以高达8,但不高于8。所以,我提供了一个例子,下面我想要生成的数字: 在线程#1 - 最大范围是2,所以随机数应该在1和2之间 在线程#2 - >最大范围是6,所以 ..
发布时间:2017-03-04 11:48:27 其它硬件开发

CUDA限制似乎达到了,但是有什么限制呢?

我有一个CUDA程序,似乎在某种程度上限制了一些资源,但我不知道该资源是什么。这里是内核函数: __ global__ void DoCheck(float2 * points,int * segmentToPolylineIndexMap, int segmentCount,int * output) { int segmentIndex = threadIdx.x + block ..
发布时间:2017-03-04 11:45:15 其它硬件开发

CUDA线程如何划分为经线?

如果我使用线程网格启动内核(例如只有1个块): ); 这个网格现在如何分割成经纱?这个网格的前两行是经线还是前两栏,还是这是任意排序的?假设GPU计算能力为2.0,翘曲大小为32。 解决方案 线程在块内按顺序编号, c $ c> threadIdx.x 变化最快,然后 threadIdx.y 第二快的变化, threadIdx.z 最慢的变化。这在功能上与多维数组 ..
发布时间:2017-03-04 11:38:13 其它硬件开发

CUDA应用程序超时&在几秒钟后失败 - 如何解决这个问题?

我注意到,CUDA应用程序往往具有5-15秒的粗略最大运行时间,然后它们将失败并退出。我意识到理想的是没有CUDA应用程序运行那么长,但假设它是使用CUDA的正确选择,并且由于每个线程的顺序工作量,它必须运行那么长,是有任何方法来延长这个时间量,要解决这个问题? 解决方案 我不是CUDA专家, 您可以禁用Windows监视程序计时器,但这是 强烈不推荐 >,原因应该很明显。 要禁用它,您 ..
发布时间:2017-03-04 11:37:07 其它硬件开发

在GPGPU / CUDA / OpenCL的最佳方法?

图形处理单元的通用计算( GPGPU )是一个非常有吸引力的概念,利用GPU的力量为任何种类的计算。 我想要使用GPGPU进行图像处理,粒子和快速几何操作。 ,似乎这个空间中的两个竞争者是CUDA和OpenCL。我想知道: Windows / Mac上的OpenCL是否可以使用Java? 是否直接使用JNA? 我忘记了什么? > 任何现实世界的体验/示例/战争故事都 ..
发布时间:2017-03-04 11:36:56 Java开发

如何测量NVIDIA CUDA的内核时间?

我想测量GPU的内核时间,如何在NVIDIA CUDA中测量它? eg __ global__ void kernelSample() { 这里的一些代码 获取开始时间 一些代码在这里 获取停止时间 一些代码在这里 } 解决方案 尝试这样,它会以毫秒为单位测量两个事件之间的时间。 cudaEvent_t start,stop; float elapsedT ..
发布时间:2017-03-04 11:31:45 其它硬件开发

CUDA块/ warp /线程如何映射到CUDA核心?

我一直在使用CUDA几个星期,但我有一些疑虑的块/ warp /线程的分配。 我从教学角度研究建筑(大学项目),所以达到最高的表现不是我的关注。 首先,我想知道我是否直接得到这些事实: 程序员写了一个内核, 每个块都分配给流处理多处理器(SM)。一旦分配,它不能迁移到另一个SM。 每个SM将其自己的块分割成经线(目前最大为32个线程)。一个warp中的所有线程在SM的资源 ..
发布时间:2017-03-04 11:29:40 其它硬件开发

CUDA:总共有多少并发线程?

我有一个GeForce GTX 580,我想说明的线程总数(理想情况下)实际上与此并行运行,以与2或4与多核CPU进行比较。 p> deviceQuery提供以下可能的相关信息: CUDA功能主要/次要版本号:2.0 (16)多处理器x(32)CUDA内核/ MP:512 CUDA内核 每个块的最大线程数:1024 我想我听说每个CUDA核心可以运行一个warp i并 ..
发布时间:2017-03-04 11:28:54 其它硬件开发