什么时候调用到cudaDeviceSynchronize函数真的需要? 据我所知,从CUDA文档中,CUDA内核是asynchronous的,所以在每次内核启动后,我们应该调用cudaDeviceSynchronize 。 但是,我已经尝试了使用和不使用cudaDeviceSynchronize的相同的代码(训练neural network),除了时间测量之前的一个。 我发现我得到了相同的结果,但加速度在7-12倍之间(取决于matrix大小)。 所以,问题是如果有任何理由使用cudaDeviceSynchronize分开计时。 例如: 使用cudaMemcpy将数据从GPU复制回主机之前是否需要? 如果我做像matrix乘法 C = A * B D = C * F 我应该把cudaDeviceSynchronize之间的cudaDeviceSynchronize ? 从我的实验看来,我没有。 为什么cudaDeviceSynchronize太慢了呢?
最大工作组大小和经纱大小之间的关系是什么? 假设我的设备有240个CUDAstream处理器(SP)并返回以下信息 – CL_DEVICE_MAX_COMPUTE_UNITS:30 CL_DEVICE_MAX_WORK_ITEM_SIZES:512/512/64 CL_DEVICE_MAX_WORK_GROUP_SIZE:512 CL_NV_DEVICE_WARP_SIZE:32 这意味着每个stream式多处理器(即计算单元)有8个SP。 现在warp size = 32与这些数字有什么关系?
有没有人知道使用NVIDIA的CUDA库实现标准压缩方法(如Zip,GZip,BZip2,LZMA,…)的项目? 我想知道是否可以使用大量并行任务(如压缩)的algorithm在graphics卡上的运行速度不会比使用双核或四核CPU的运行速度快得多。 你怎么看待这种方法的利弊?
虽然“googl'ing”和做一些研究,我没有find任何严重/stream行的科学GPGPU计算和OpenCL的AMD硬件框架/ SDK。 有没有我错过的文学和/或软件? 特别是我对深度学习感兴趣。 对于我所知的所有deeplearning.net推荐的NVIDIA硬件和CUDA框架。 另外,我所知道的所有大型深度学习框架,例如Caffe , Theano , Torch , DL4J ……都专注于CUDA,并且不打算支持OpenCL / AMD 。 此外,人们可以find大量的科学论文以及基于CUDA的深度学习任务的相应文献,但基于OpenCL / AMD的解决scheme几乎没有。 2015/16年度基于OpenCL / AMD的解决scheme是否有可能出现新的或现有的科学框架? OpenCL / AMD 深度学习的良好开端是什么? 任何文学? 教程? 杂项来源?
我知道OpenCL可以控制GPU的内存架构,因此可以实现更好的优化,但是,我们可以使用计算着色器进行向量操作(加法,乘法,反转等)吗?
我是GPU编程的新手。 我有一台配备NVIDIA GeForce GT 640显卡的笔记本电脑。 我面临着两难困境,build议最受欢迎。 如果我去CUDA – Ubuntu或Windows显然,CUDA更适合Windows,而在Ubuntu上安装则是一个严重的问题。 我已经看到一些博客宣称在Ubuntu 11.10和Ubuntu 12.04上安装了CUDA 5。 但是,我一直无法让他们工作。 此外, 标准的CUDA教科书更喜欢在Windows域中工作,在安装和使用Unix / Ubuntu时或多或less都是沉默的。 CUDA或OpenCL – 现在这可能比我的第一个问题更棘手! 我大部分使用CUDA / Nvidia都遇到过GPGPU项目,但OpenCL可能是开源的下一个最佳select,在Ubuntu中安装可能不会成为问题,尽pipe这里的一些build议将是最有用的。 如果我使用OpenCL而不是CUDA,我会牺牲任何function吗? 任何帮助或build议?
AccelerEyes于2012年12月宣布,它将与Mathworks在GPU代码上合作,并已停止使用MATLAB的产品Jacket: http://blog.accelereyes.com/blog/2012/12/12/exciting-updates-from-accelereyes/ 不幸的是,他们不再销售Jacket许可证。 据我所知,基于ArrayFire的Jacket GPU Array解决scheme比由MATLAB提供的gpuArray解决scheme快得多。 我开始使用gpuArray,但是我发现许多函数执行得不好。 例如一个简单的 myArray(:) = 0 很慢。 我写了一些定制的CUDA-Kernels,但是执行不力的标准MATLABfunction增加了很多开销,即使在整个代码中一直使用gpuArrays。 我通过用手工编写的CUDA代码replace了MATLAB代码来解决了一些问题 – 但我不想重新实现MATLAB标准function。 我缺less的另一个function是稀疏的GPUmatrix。 所以我的问题是: 如何加快由MATLAB提供的糟糕实现的默认GPU实现? 特别是,如何在使用GPU的MATLAB中加速稀疏matrix运算?
什么特性使OpenCL独一无二地selectOpenGL和GLSL进行计算? 尽pipegraphics相关的术语和不切实际的数据types,是否有任何实际的OpenGL警告? 例如,并行函数评估可以通过使用其他纹理渲染纹理来完成。 减less操作可以通过迭代渲染到更小和更小的纹理来完成。 另一方面,随机写访问不可能以任何有效的方式进行(唯一的方法是通过纹理驱动的顶点数据来渲染三angular形)。 OpenCL有可能吗? 还有什么可能不可能与OpenGL?
graphics处理单元( GPGPU )上的通用计算是利用GPU的function进行任何计算的一个非常有吸引力的概念。 我很乐意使用GPGPU进行image processing,粒子和快速几何操作。 现在看来,这个领域的两位竞争者是CUDA和OpenCL。 我想知道: Windows / Mac上的OpenCL是否可用于Java? 什么是与OpenCL / CUDA接口的库方法? 是直接使用JNA的一个选项? 我忘了什么吗? 任何现实世界的经验/例子/战争故事,赞赏。
我想听听有两种编码经验的人。 我自己,我只有NVIDIA的经验。 NVIDIA CUDA似乎比竞争对手更受欢迎。 (只要在这个论坛上统计问题标签,'cuda'胜过'opencl'3:1,'nvidia'胜过'ati'15:1,根本没有'ati-stream'的标签)。 另一方面,根据维基百科,ATI / AMD卡应该有更多的潜力,特别是每美元。 目前市场上最快的NVIDIA显卡,GeForce 580(500美元),被评为1.6单精度TFlops。 AMD Radeon 6970可以有370美元,它的额定2.7 TFlops。 580在772 MHz有512个执行单元。 6970在880 MHz有1536个执行单元。 AMD对于NVIDIA的纸张优势有多逼真,而且在大多数GPGPU任务中都可能实现? 整数任务会发生什么?