def METHOD_NAME(self):
    """
    Allocate various types of arrays for the tests
    """
    self.prng_state = np.random.get_state()
    # Generate arrays of random shape
    self.shape1 = np.random.randint(20, high=512, size=(2,))
    self.shape2 = np.random.randint(20, high=512, size=(2,))
    self.array1 = np.random.rand(*self.shape1).astype(np.float32)
    self.array2 = np.random.rand(*self.shape2).astype(np.float32)
    self.d_array1 = parray.to_device(self.queue, self.array1)
    self.d_array2 = parray.to_device(self.queue, self.array2)
    # Generate random offsets
    offset1_y = np.random.randint(2, high=min(self.shape1[0], self.shape2[0]) - 10)
    offset1_x = np.random.randint(2, high=min(self.shape1[1], self.shape2[1]) - 10)
    offset2_y = np.random.randint(2, high=min(self.shape1[0], self.shape2[0]) - 10)
    offset2_x = np.random.randint(2, high=min(self.shape1[1], self.shape2[1]) - 10)
    self.offset1 = (offset1_y, offset1_x)
    self.offset2 = (offset2_y, offset2_x)
    # Compute the size of the rectangle to transfer
    size_y = np.random.randint(2, high=min(self.shape1[0], self.shape2[0]) - max(offset1_y, offset2_y) + 1)
    size_x = np.random.randint(2, high=min(self.shape1[1], self.shape2[1]) - max(offset1_x, offset2_x) + 1)
    self.transfer_shape = (size_y, size_x)