OpenCL fixes
- directory change - automatically detect all available GPUs
This commit is contained in:
parent
53ca944483
commit
5a681068fe
|
@ -13,13 +13,19 @@ try:
|
||||||
import numpy
|
import numpy
|
||||||
import pyopencl as cl
|
import pyopencl as cl
|
||||||
hash_dt = numpy.dtype([('target', numpy.uint64), ('v', numpy.str_, 73)])
|
hash_dt = numpy.dtype([('target', numpy.uint64), ('v', numpy.str_, 73)])
|
||||||
if (len(cl.get_platforms()) > 0):
|
gpus = []
|
||||||
ctx = cl.create_some_context()
|
for platform in cl.get_platforms():
|
||||||
|
gpus.extend(platform.get_devices(device_type=cl.device_type.GPU))
|
||||||
|
if (len(gpus) > 0):
|
||||||
|
ctx = cl.Context(devices=gpus)
|
||||||
queue = cl.CommandQueue(ctx)
|
queue = cl.CommandQueue(ctx)
|
||||||
full_path = os.path.dirname(os.path.realpath(__file__))
|
full_path = os.path.dirname(os.path.realpath(__file__))
|
||||||
f = open(os.path.join(full_path, 'kernel.cl'), 'r')
|
f = open(os.path.join(full_path, "bitmsghash", 'bitmsghash.cl'), 'r')
|
||||||
fstr = ''.join(f.readlines())
|
fstr = ''.join(f.readlines())
|
||||||
program = cl.Program(ctx, fstr).build(options="")
|
program = cl.Program(ctx, fstr).build(options="")
|
||||||
|
else:
|
||||||
|
print "No OpenCL GPUs found"
|
||||||
|
ctx = False
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
print "opencl fail: " + str(e)
|
print "opencl fail: " + str(e)
|
||||||
ctx = False
|
ctx = False
|
||||||
|
@ -40,7 +46,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()[1])
|
worksize = kernel.get_work_group_info(cl.kernel_work_group_info.WORK_GROUP_SIZE, gpus[0])
|
||||||
|
|
||||||
kernel.set_arg(0, hash_buf)
|
kernel.set_arg(0, hash_buf)
|
||||||
kernel.set_arg(1, dest_buf)
|
kernel.set_arg(1, dest_buf)
|
||||||
|
|
Reference in New Issue
Block a user