Opencl GPU暴力实现
我想就以下问题寻求建议: 对于一个研究项目,我正在编写一个基于GPU和(py)OpenCl的暴力算法 (我知道JTR就在那里) 现在我在Python中有一个蛮力生成器,它用单词(amount=1024*64)填充每一轮缓冲区。GPU正在为缓冲区中的每个值计算MD5哈希值,并将其与给定值进行比较。真是太好了 但是: 我不认为这真的是我能从GPU获得的全部性能-或者是吗?当我必须通过CPU填充缓冲区并将其传递给GPU进行哈希计算或比较时,是否存在瓶颈?或者我错了,这已经是fastet或几乎是我可以获得的fastet性能 在我考虑这个问题之前,我已经做了很多研究。到目前为止,我还没有在GPU内核上找到蛮力实现——为什么 Thx 编辑1: 我试着用不同的方式解释我想知道的。假设我有一台普通的电脑。在GPU上执行蛮力算法比在CPU上执行蛮力算法要快(如果你做得对的话)。我浏览了一些GPU暴力工具,没有找到一个在GPU内核上实现整个暴力的工具 现在我正在将“word包”传递到GPU,并让它们在那里完成工作(哈希和比较)——看起来这是常见的方式。“拆分”蛮力算法不是更快吗?这样GPU上的每个单元都会自己生成自己的“单词包”Opencl GPU暴力实现,opencl,gpu,md5,gpgpu,brute-force,Opencl,Gpu,Md5,Gpgpu,Brute Force,我想就以下问题寻求建议: 对于一个研究项目,我正在编写一个基于GPU和(py)OpenCl的暴力算法 (我知道JTR就在那里) 现在我在Python中有一个蛮力生成器,它用单词(amount=1024*64)填充每一轮缓冲区。GPU正在为缓冲区中的每个值计算MD5哈希值,并将其与给定值进行比较。真是太好了 但是: 我不认为这真的是我能从GPU获得的全部性能-或者是吗?当我必须通过CPU填充缓冲区并将其传递给GPU进行哈希计算或比较时,是否存在瓶颈?或者我错了,这已经是fastet或几乎是我可以获
我所做的只是想知道为什么常见的方法是将带有值的包从CPU传递到GPU,而不是在GPU上执行CPU工作!这是因为无法在GPU上拆分暴力算法,还是改进不值得将其移植到GPU?关于“暴力”方法的性能。 我所做的只是想知道为什么常见的方法是将带有值的包从CPU传递到GPU,而不是在GPU上执行CPU工作!是因为不可能在GPU上拆分暴力算法,还是改进不值得将其移植到GPU
我不知道你的算法的细节,但是,一般来说,在创建一个混合CPU-GPU算法之前,需要考虑一些要点。仅举几个例子:
- 不同的架构(最好的CPU算法可能不是最好的 GPU算法)李>
- 额外的同步点
- 不同的内存空间(意味着PCIe/网络传输)
- 更复杂的算法
- 更复杂的微调
- 供应商政策
关于您当前方法的绩效 我认为你应该把问题分为两部分:
- 这是我的GPU内核效率
- 我在GPU上实际工作了多少时间
作为一般建议,在实施任何优化之前,请花一些时间分析您的应用程序。这将为您节省大量时间。谢谢您的时间!我更新了我的问题,也许你可以再看一次,让我知道你是怎么想的。我的问题不是关于我的程序和我的性能的,而是关于暴力GPU算法的常见实现。不客气。我不知道你的算法具体是什么。尽管我提供了一些想法,但还是值得为您的问题添加一些特定的标签。