Наверное, очень простой вопрос здесь, но я искал его в течение нескольких часов, чтобы ничего не показывать.PyOpenCL: как создать буфер локальной памяти?
У меня есть этот кусок кода, я хотел бы иметь 256-битный (8 uint32) bitstring_gpu как localmemory указатель в устройстве:
def Get_Bitstring_GPU_Buffer(ctx, bitstring):
bitstring_gpu = cl.Buffer(ctx, mem_flags.READ_ONLY | mem_flags.COPY_HOST_PTR, hostbuf=bitstring)
return bitstring_gpu
Это позже используется на вызов ядра:
prg.get_active_hard_locations_64bit(queue, (HARD_LOCATIONS,), None, memory_addresses_gpu.data, bitstring_gpu, distances_gpu.data, hash_table_gpu.data).wait()
... и битовое это просто случайные 256-битный битовый (генерируется через SHA256, а затем превращается в Numpy массив.
def Get_Random_Bitstring():
bitstring = address_space_through_sha256_SDM.get_bitstring(str(random.randrange(2**32-1)))
return bitstring
Как я могу заставить bitstring_buf перейти в быструю локальную память?
Связанный, но другой вопрос; здесь буфер создается внутри ядра ...
How to create variable sized __local memory in pyopencl?
Вы упомянули «bitstring_buf», однако я не вижу упоминания об этом в вашем коде ... – Sebivor
Bitstring - это всего лишь 256-битная случайная битовая строка. Я уточню вопрос. – linhares
Возможный дубликат [Как создать переменную размерную \ _ \ _ локальную память в pyopencl?] (Http://stackoverflow.com/questions/5912968/how-to-create-variable-sized-local-memory-in-pyopencl) –