MPSMatrixDecompositionCholesky Status code

Hi,

I am trying to extend the pytorch library. I would like to add MPS native Cholesky Decomposition. I finally got it working (mostly). But I am struggling to implement the status codes.

What I did:

// init status

 id<MTLBuffer> status = [device newBufferWithLength:sizeof(int) options:MTLResourceStorageModeShared];
     if (status) {
    int* statusPtr = (int*)[status contents];
  *statusPtr = 42; // Set the initial content to 42
  NSLog(@"Status Value: %d", *statusPtr);
  }
  else {
    NSLog(@"Failed to allocate status buffer");
  }
...
    [commandBuffer addCompletedHandler:^(id<MTLCommandBuffer> commandBuffer) {
      // Your completion code here
      int* statusPtr = (int*)[status contents];
      int statusVal = *statusPtr;
      NSLog(@"Status Value: %d", statusVal);
      // Update the 'info' tensor here based on statusVal
      // ...
    }];

      for (const auto i : c10::irange(batchSize)) {
...
  
        [filter encodeToCommandBuffer:commandBuffer
                        sourceMatrix:sourceMatrix
                        resultMatrix:solutionMatrix
                        status:status];

      }

(full code here: https://github.com/pytorch/pytorch/blob/ab6a550f35be0fdbb58b06ff8bfda1ab0cc236d0/aten/src/ATen/native/mps/operations/LinearAlgebra.mm)

But this code prints the following when input with a non positive definite tensor:

2023-09-02 19:06:24.167 python[11777:2982717] Status Value: 42
2023-09-02 19:06:24.182 python[11777:2982778] Status Value: 0
initial tensor: tensor([[-0.0516,  0.7090,  0.9474],
        [ 0.8520,  0.3647, -1.5575],
        [ 0.5346, -0.3149,  1.9950]], device='mps:0')
L: tensor([[-0.0516,  0.0000,  0.0000],
        [ 0.8520, -0.3612,  0.0000],
        [ 0.5346, -0.3149,  1.2689]], device='mps:0')

What am I doing wrong? Why do I get a 0 (success) status even tough the matrix is not positive definite.

Thank you in advance!