问题标签 [pycuda]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
osx-mountain-lion - EPD Python vs System Python--OSX Mountain Lion 10.8
我是一个两周大的 mac 用户,所以请耐心等待。我正在尝试将 EPD python 设置为我的默认 python 解释器,而不是 mac 附带的系统 python。据我了解,EPD 通过修改 .bash_profile 在安装时自动执行此操作,但在我安装 EPD 后,.bash_profile 没有改变,据我所知,系统 python 仍然是默认解释器。我该如何改变这个?
我想将默认python更改为EPD的主要原因是我安装的所有包都自动放入/Library/Python/2.7/site-packages目录而不是与EPD关联的site-packages目录。特别是,我无法将 PyCuda 安装在 EPD 的 site-packages 目录中。
我希望这有点道理。我迷路了,不知道从这里去哪里。非常感谢您的帮助。
cuda - 更改 CUDA 中多个单元格的值
它必须是一个简单的,虽然我找不到答案。我正在编写一个必须计算元胞自动机状态的程序,为了了解 CUDA 的工作原理,我首先尝试编写一个非常简单的程序。它需要一个矩阵,每个线程都必须在其单元格以及该单元格上方和下方的单元格中增加一个值。所以,如果我给它以下矩阵:
我希望得到以下结果:
第一行的值为 2,因为它上面没有可以将第一行的值再增加一次的行。并且以类似的方式,最后一行的值为 2。
但我得到的矩阵如下所示:
而且我不明白为什么第 4 行、第 5 行和第 6 行的值为 2 - 必须是 3,而不是 2。
这是我的代码:
一件更有趣的事情:如果我评论以下行之一:
一切都按预期工作,没有任何意外的值。在某些情况下,CUDA 似乎无法在一个线程中处理三个相邻单元格的值。
cuda - CUDA调度器的工作
我如何知道 CUDA 调度程序的行为?除了在我的应用程序中通过改变网格大小、块大小等来测试它之外,是否有任何供应商提供的文档准确地解释了块的分布方式?
python - pycuda代码的问题:Segmentation fault (core dumped)
代码如下:
但是我在终端中遇到如下错误:
我不知道这是怎么回事?有人帮忙吗?
pycuda - PyCUDA:调用函数的函数的语法
当使用来自 SourceModule 的函数依赖于 SourceModule 中的另一个函数时,我如何在函数调用中传递它,即什么是“???” 在以下代码中:
感谢您提供任何信息。
cuda - PyCUDA在同一平台上的结果不一致
我正在为大学工作实施密码破解程序,使用PyCUDA
. 除了在 CUDA 上实现 NTLM 算法外,一切似乎都正常工作。
为了测试它,我创建了一个小模块,它启动一个只有 1 个线程的内核,散列一个值并返回它以与 CPU 上获得的散列进行比较。下面是代码:
问题是我在连续运行中得到不同的结果。有时我连续几次得到正确的结果,但下次我运行它时(2-3 秒后),结果是错误的。我的输出如下所示:
上面的输出只是一个连续运行程序几次的例子。如您所见,我有时(有时也连续)得到正确的结果,但有时结果是错误的,我不明白为什么。
我尝试重新安装 CUDA SDK(版本 4.2.9)并重新启动我的计算机,但同样的事情发生了。
使用 Windows 7 64 位,Geforce GT240
有任何想法吗?
python - 将 CUDA 与 Python 的 ODEInt 和并行归约相结合
我是一名生物物理学研究生,正在尝试使用 PyCUDA 和 Scipy 编写蛋白质聚合模型ODEInt
。在过去的两周内,我已经让代码运行起来了,但是速度很慢。让我看看我是否可以解释我的代码的作用。
我有np
一系列N
浓度,每个元素都是i+1
长度聚合物的浓度。我有一个函数可以计算聚合物浓度的变化率,CUDA
其中每个内核计算一种特定长度聚合物的变化率。在此计算过程中,(N-i-1)
线程需要对长度数组求和,从而大大降低了我的代码速度。
做一些阅读和谷歌搜索,我遇到了并行减少作为一种调用并行性的方式,以使像数组总和这样的串行计算变得更快。当然,我指的是 Mark Harris 的 powerpoint 幻灯片。这是一本很好的读物,这看起来是一种大幅加快我的代码速度的潜在方法,但我有几个问题:
如果聚合物种类的数量 N 需要为 ~ 8700-9000,是否可以使用 CUDA 同时减少这 N 个阵列?进行快速计算(再次感谢 SO 对如何计算最大并发线程数的出色解释),我得到了我的 GTX Titan 可以同时运行 15 * 64 * 32 = 30720 个线程。如果我一次在 ~8960 个内核上调用我的内核,我应该只剩下 21760 个线程可以使用,对吗?由于您似乎至少需要(数组的长度/ 2)线程才能正确减少它,所以我注定要失败。
我在想,也许我可以通过将剩余的线程分开并一次减少几个大数组来使用剩余的线程。
我不知道……我只是一名物理研究生。在我踏上错误方向的漫长旅程之前,我想我会问专业人士。是否可以轻松有效地告诉内核减少某些东西?
谢谢你,卡斯滕
这是我正在尝试做的事情的代表。
您会注意到,我们一直在讨论的数组的总和基本上是每个线程的同一数组的较小版本。这让我想知道这是否是我应该在主机上做的事情。
matrix - Cuda/PyCuda - 大矩阵遍历和块/网格大小
我正在做的事情突出了一个事实,即我对块和网格在 cuda 中的工作方式没有牢牢掌握。我有一个 1000x10 矩阵,我想遍历它并用一个值填充每个元素。内核是这样的:
其中,M=1000 和 N = 10。我不知道如何将其分割,以便覆盖矩阵中的每个元素。由于我需要覆盖 1000*10 = 10,000 个元素并且考虑到线程数量的限制,我不能使用 (10,1000,1) 的块大小。使用 pycuda,我尝试过诸如 block = (10,100,1), grid = (1,10) 之类的方法,但我从未完全覆盖矩阵元素。这样做的正确方法是什么?
boost - 使用 boost 和 python 在 GPU 上集成 ODE
不久前,我在这里发布了一个关于我正在尝试使用 pycuda 构建的模型,该模型解决了大约 9000 个耦合 ODE。然而,我的模型太慢了,一位 SO 成员建议从主机到 GPU 的内存传输可能是罪魁祸首。
现在 cuda 仅用于计算我正在处理的 9000 个物种中的每一个的变化率。由于我将一个数组从主机传递到 GPU 以执行此计算并从 GPU 返回一个数组以集成到主机上,因此我可以看到这会如何减慢速度。
boost会解决我的问题吗?根据我的阅读,boost 允许 c++ 和 python 之间的互操作性。它还包括我读过的 c++ odeint ,与推力合作允许在 GPU 上快速减少和集成。我的理解正确吗?
谢谢你,卡斯滕
php - 包含 pyCuda 时,shell_exec 的输出不再返回给 PHP
我正在调用这个 python 文件:
从这样的PHP:
运行 PHP 文件时显示 hello 效果很好。但是,当我将 pyCuda (2012.1) 导入 python 文件时,输出不再返回到 PHP,即使从 bash 运行命令时仍然显示它。这是导入了 pyCuda 的 python 文件:
为什么在导入 pyCuda 时 PHP 不再接收输出,在 PHP 中读取此 python 文件的输出的最佳方法是什么?
非常感谢!