python如何使用gpu运算,如何用gpu运行python程序

  python如何使用gpu运算,如何用gpu运行python程序

  有两个障碍。编写运行在GPU上的程序。AFAIK,目前还没有把Python程序转换成GPU执行代码的机制。所以只要找不到自己需要的,就必须使用GPU编程语言(CUDA,OpenCL,Haskell,…)。

  从Python调用运行在GPU上的程序来交换数据。有几个Python CUDA项目可以实现这一点:

  通过适当的搜索,我们可能会发现更多。

  然后,Python程序使用第2部分中的技术之一或其等效技术来加载和调用使用本答案第1部分中的技术创建的GPU“内核”。

  编辑

  您可以在GPU上生成完整的“蛮力”值集和md5哈希。然后使用Python检索结果。它可能比用Python生成值并传递给GPU,然后检索md5更简单。

  理解后,程序会生成1个字符、2个字符、3个字符、4个字符、5个字符、6个字符的所有小写字符串,并生成md5 hash。

  我之前的分析是完全错误的,我道歉。

  Edit3:SkimmingWikipedia MD5似乎优化了固定长度字符串(例如,6个ASCII字符)的MD5计算。

  根据维基百科的伪代码,只有64个循环,16个循环的迭代组使用的是同样的算法。因此,如果键小于55字节,计算中心可以从以下位置“扩展”:对于I从0到63。

  如果0是15,那么

  f:=(bandc ) or ) (notb ) and)).

  g :=i

  else if 16 i 31

  f:=(dandb ) or ) (notd)和c)).

  g:=(5I1 ) mod 16

  else if 32 i 47

  f :=b异或c异或d

  g:=(3I5 ) mod 16

  else if 48 i 63

  f:=cxor(bor ) notd))

  g:=(7I ) mod 16

  温度:=d

  d :=c

  丙:=乙

  b:=bleftrotate () afk[I]w[g],r[i])

  答:=温度

  结束于

  ()//i==0

  f:=(bandc ) or ) ) notb ) and )//4 ops

  //g :=i

  温度:=d

  d :=c

  丙:=乙

  b:=bleftrotate () afk[0]w[0])、r[0]//9 ops

  答:=温度

  //i==1

  f:=(bandc ) or ) (notb ) and)).

  //g :=i

  温度:=d

  d :=c

  丙:=乙

  b:=bleftrotate () afk[1]w[1],r[1])

  答:=温度

  这种扩展将使一些数组索引保持不变,并允许优秀的GPU编译器执行更恒定的传播。这可能导致显著的改进。由于每一步大约有9次运算,编译器需要对5条数据进行加扰,所以大约需要14次运算/步*64,大约1000次运算。

  编辑4:

  开心!我看过更多维基百科的MD5算法,——MD5,比我想象的更容易被攻击。每组16个中只有前两个循环直接使用6字节的变量密钥串,其余的字符串都是常量。算法的其余部分是混洗和位运算,这可能需要非常重要的进一步优化。每16个周期中只有2个周期涉及键,可能快8倍,甚至快4倍以上。

  所以它运行在1GHz频率而不是1024核GPU,提供4096/微秒或8096/us=4-8美豚/纳秒而不是1024美豚/微秒。

  大概有27 ^ 6个密钥=387420489个密钥,所以有md5 hash。

  37420489键/4-8/纳秒=0.05-0.1秒

  主机和GPU的通信速度比较慢,但不太可能超过100%。

  在大约0.1秒和0.2秒之间。

  美丽海豚Md5是16字节,所以需要6.2 GB保存。对于现代的两个GPU来说,一个GPU只需要两次传输,但是开销非常大。如果clean dolphin值存储在磁盘上,由SSD使用或通过10Gbit以太网移动,clean dolphin代将在I/O时间内泛滥。

  每6个ASCII字符的键,因为只能打印94个ASCII字符:

  94 6=689869781056键/4-8/纳秒=86-172秒

  哦,天啊!-(1) ())))))).

  长密钥,有比MD5更好的!

  试着写一个生成最好的GPU算法的Python程序怎么样?

  当Python程序“展开”循环生成GPU“内核”文本并打印直线计算文本时,所有常数都将被输入到。

  然后,尝试找到计算每个密钥长度的MD5的最佳指令序列。使用扩展程序跟踪每个位的操作和依赖关系,并尝试将这些位及其操作重新组合成一个连续的32位字和一个新的直线计算。(平心而论,GPU编译器或许可以做到这一点?可能会很有趣)

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: