从我读过的一些注释中,出于某种原因,最好是在CUDA之类的并行实现Array of Structures ( AoS )的Array of Structures ( SoA )? 如果这是真的,任何人都可以解释为什么? 提前致谢!
我想这个问题本身就说明了。 我有兴趣做一些严肃的计算,但不是交易程序员。 我可以串起足够的python来完成我想要的。 但是,我可以用python编写一个程序,让GPU使用CUDA来执行它吗? 或者我必须使用Python和C的混合? Klockner(sp)“pyCUDA”网页上的例子有python和C的混合,所以我不确定答案是什么。 如果有人想要谈谈Opencl的话,请随意。 我几个星期前才听说过这个CUDA业务,不知道你可以使用这样的显卡。
我目前正在python项目中工作,我想利用GPU进行一些计算。 乍一看,似乎有很多工具可用; 乍一看,我觉得我想失去一些东西。 Copperhead看起来很棒,但还没有发布。 这似乎只限于编写低级CUDA或openCL内核; 没有推力,没有cudpp。 如果编号喜欢有东西sorting,即时将不得不自己做。 这对我来说似乎不太合适。 我确实错过了什么? 或者,这个GPU脚本不太适合炒作吗? 编辑:GPULIB似乎可能是我所需要的。 文档是最基本的,python绑定只是在传递,但现在正在申请下载链接。 任何人都有这方面的经验,或链接到类似的免费学术使用的GPU库? 重新编辑:好吧,python绑定事实上是不存在的。 Edit2:所以我想我最好的select是用C / CUDA编写一些东西,并从python中调用它。
什么时候调用到cudaDeviceSynchronize函数真的需要? 据我所知,从CUDA文档中,CUDA内核是asynchronous的,所以在每次内核启动后,我们应该调用cudaDeviceSynchronize 。 但是,我已经尝试了使用和不使用cudaDeviceSynchronize的相同的代码(训练neural network),除了时间测量之前的一个。 我发现我得到了相同的结果,但加速度在7-12倍之间(取决于matrix大小)。 所以,问题是如果有任何理由使用cudaDeviceSynchronize分开计时。 例如: 使用cudaMemcpy将数据从GPU复制回主机之前是否需要? 如果我做像matrix乘法 C = A * B D = C * F 我应该把cudaDeviceSynchronize之间的cudaDeviceSynchronize ? 从我的实验看来,我没有。 为什么cudaDeviceSynchronize太慢了呢?
随着C ++编译器,特别是intel的快速发展,以及在你的C / C ++代码中直接使用SIMD函数的能力,Fortran在数值计算领域还有什么真正的优势呢? 我来自math应用背景,我的工作涉及到大量的数值分析,计算,优化等等,有严格定义的性能要求。 我对Fortran几乎一无所知,我在C / CUDA / matlab方面有一些经验(如果你认为后者是一种计算机语言),我的日常任务包括分析非常大的数据(例如10GB大matrix),看起来这个程序至less花了2/3的时间在内存访问上(这就是为什么我把它的一些工作交给GPU),你们认为这对我来说可能是值得的一些性能关键的部分我的代码来改善我的程序的性能? 因为那里需要完成的复杂性和事情,如果只有在那里有显着的性能上的好处,我才会去做这个例程。
最大工作组大小和经纱大小之间的关系是什么? 假设我的设备有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与这些数字有什么关系?
我search了很多地方,但我得到的是如何安装它,而不是如何validation它被安装。 我可以validation我的NVIDIA驱动程序已安装,并且安装了CUDA,但是我不知道如何validationCuDNN是否已安装。 帮助将不胜感激,谢谢! PS。 这是为了实现一个caffe。 目前一切都没有启用CuDNN的工作。
我正在处理一个统计应用程序,其中包含大约10 – 30万个浮点数值。 有几种方法在嵌套循环中对数组执行不同但独立的计算,例如: Dictionary<float, int> noOfNumbers = new Dictionary<float, int>(); for (float x = 0f; x < 100f; x += 0.0001f) { int noOfOccurrences = 0; foreach (float y in largeFloatingPointArray) { if (x == y) { noOfOccurrences++; } } noOfNumbers.Add(x, noOfOccurrences); } 目前的应用程序是用C#编写的,运行在Intel CPU上,需要几个小时才能完成。 我没有GPU编程概念和API的知识,所以我的问题是: 使用GPU来加速这样的计算是否可能(并且是否有意义)? 如果是的话:有谁知道任何教程或得到任何示例代码(编程语言无所谓)? 任何帮助将不胜感激。
我刚接触CUDA范例。 我的问题是确定每个块的线程数,每个网格块。 有一些艺术和审判玩这个? 我发现,很多例子都是为这些事情select了一个看似随意的数字。 我正在考虑一个问题,我可以将任何大小的matrix传递给乘法的方法。 因此,C的每个元素(如在C = A * B中)将由单个线程计算。 在这种情况下,你将如何确定线程/块,块/网格?
有没有人知道使用NVIDIA的CUDA库实现标准压缩方法(如Zip,GZip,BZip2,LZMA,…)的项目? 我想知道是否可以使用大量并行任务(如压缩)的algorithm在graphics卡上的运行速度不会比使用双核或四核CPU的运行速度快得多。 你怎么看待这种方法的利弊?