如何使用pyOpenCL在GPU内存上分配内存?

时间:2020-05-03 05:47:11

标签: python pyopencl

我一直在寻找与malloc()类似的东西,它将分配内存。我只想保留内存。

我想填满X GB / MB。

到目前为止,我已经设法查询了可用的本地内存。

我该如何填充其中的80%?

当前,下面的代码正在系统内存(RAM)上分配空间

import pyopencl as cl # OpenCL - GPU computing interface
from pyopencl import device_info 
import numpy as np
import time
import sys

# Hardware devices
platforms = cl.get_platforms()

# getting GPUs
my_gpu_devices = [platforms[0].get_devices(device_type=cl.device_type.GPU)[0]]
print(my_gpu_devices)

# Context set to GPU 0
ctx = cl.Context(devices = my_gpu_devices)

# Querying Local memory size
local_memory_size = my_gpu_devices[0].get_info(device_info.LOCAL_MEM_SIZE)

print("VRam size : ", local_memory_size)
# time.sleep(200)

flood_data = np.random.rand(256 ** 2).astype(np.int32)
print(sys.getsizeof(flood_data))

buf = cl.Buffer(ctx, 
                cl.mem_flags.READ_WRITE, 
                size = (local_memory_size - 1000), 
                hostbuf = None
)

queue = cl.CommandQueue(ctx)

for _ in range (0, 200000):
    cl.enqueue_fill_buffer(
                queue = queue, 
                mem = buf, 
                pattern = np.int32(0), 
                offset = 0, 
                size =  int(sys.getsizeof(np.int32) * 128)

    )

0 个答案:

没有答案