V0.6 #852

Merged
Atheros1 merged 399 commits from v0.6 into master 2016-05-03 01:58:38 +02:00
2 changed files with 22 additions and 20 deletions
Showing only changes of commit 9075f3f5e6 - Show all commits

View File

@ -1,31 +1,28 @@
import numpy #!/usr/bin/env python2.7
from struct import pack, unpack from struct import pack, unpack
import time import time
import hashlib import hashlib
import random import random
import pyopencl as cl import os
hash_dt = numpy.dtype([('target', numpy.uint64), ('v', numpy.str_, 73)])
ctx = False ctx = False
queue = False queue = False
program = False program = False
try: try:
if (len(cl.get_platforms()) > 0): import numpy
ctx = cl.create_some_context() import pyopencl as cl
queue = cl.CommandQueue(ctx) hash_dt = numpy.dtype([('target', numpy.uint64), ('v', numpy.str_, 73)])
if (len(cl.get_platforms()) > 0):
#f = open('/usr/src/PyBitmessage/src/kernel.cl', 'r') ctx = cl.create_some_context()
import os queue = cl.CommandQueue(ctx)
print "working directory: " + os.getcwd() full_path = os.path.dirname(os.path.realpath(__file__))
# time.sleep(5) f = open(os.path.join(full_path, 'kernel.cl'), 'r')
f = open('kernel.cl', 'r') fstr = ''.join(f.readlines())
fstr = ''.join(f.readlines()) program = cl.Program(ctx, fstr).build(options="")
program = cl.Program(ctx, fstr).build()
except Exception as e: except Exception as e:
print "opencl fail:" + str(e) print "opencl fail:" + str(e)
# time.sleep(5) ctx = False
ctx = False
def has_opencl(): def has_opencl():
return (ctx != False) return (ctx != False)
@ -43,7 +40,7 @@ def do_opencl_pow(hash, target):
dest_buf = cl.Buffer(ctx, cl.mem_flags.WRITE_ONLY, output.nbytes) dest_buf = cl.Buffer(ctx, cl.mem_flags.WRITE_ONLY, output.nbytes)
kernel = program.kernel_sha512 kernel = program.kernel_sha512
worksize = kernel.get_work_group_info(cl.kernel_work_group_info.WORK_GROUP_SIZE, cl.get_platforms()[0].get_devices()[0]) worksize = kernel.get_work_group_info(cl.kernel_work_group_info.WORK_GROUP_SIZE, cl.get_platforms()[0].get_devices()[1])
kernel.set_arg(0, hash_buf) kernel.set_arg(0, hash_buf)
kernel.set_arg(1, dest_buf) kernel.set_arg(1, dest_buf)

View File

@ -73,7 +73,7 @@ def _doFastPoW(target, initialHash):
return result[0], result[1] return result[0], result[1]
time.sleep(0.2) time.sleep(0.2)
def _doGPUPow(target, initialHash): def _doGPUPoW(target, initialHash):
print "GPU POW\n" print "GPU POW\n"
nonce = openclpow.do_opencl_pow(initialHash.encode("hex"), target) nonce = openclpow.do_opencl_pow(initialHash.encode("hex"), target)
trialValue, = unpack('>Q',hashlib.sha512(hashlib.sha512(pack('>Q',nonce) + initialHash).digest()).digest()[0:8]) trialValue, = unpack('>Q',hashlib.sha512(hashlib.sha512(pack('>Q',nonce) + initialHash).digest()).digest()[0:8])
@ -83,7 +83,12 @@ def _doGPUPow(target, initialHash):
def run(target, initialHash): def run(target, initialHash):
target = int(target) target = int(target)
if shared.safeConfigGetBoolean('bitmessagesettings', 'opencl') and openclpow.has_opencl(): if shared.safeConfigGetBoolean('bitmessagesettings', 'opencl') and openclpow.has_opencl():
return _doGPUPow(target, initialHash) # trialvalue1, nonce1 = _doGPUPoW(target, initialHash)
# trialvalue, nonce = _doFastPoW(target, initialHash)
# print "GPU: %s, %s" % (trialvalue1, nonce1)
# print "Fast: %s, %s" % (trialvalue, nonce)
# return [trialvalue, nonce]
return _doGPUPoW(target, initialHash)
elif frozen == "macosx_app" or not frozen: elif frozen == "macosx_app" or not frozen:
return _doFastPoW(target, initialHash) return _doFastPoW(target, initialHash)
else: else: