VPI Brute Force Matcher sample code returns error

Following the example given here, I always get a VPI_ERROR_INVALID_ARGUMENT when calling vpiSubmitBruteForceMatcher.

This is the code:

VPIStream stream;
VPI_CHECK_STATUS(vpiStreamCreate(0, &stream));
VPIArray matches;
VPIArray desc1, desc2;
VPI_CHECK_STATUS(vpiArrayCreate(10, VPI_ARRAY_TYPE_BRIEF_DESCRIPTOR, VPI_BACKEND_CUDA, &desc1));
VPI_CHECK_STATUS(vpiArrayCreate(10, VPI_ARRAY_TYPE_BRIEF_DESCRIPTOR, VPI_BACKEND_CUDA, &desc2));
VPI_CHECK_STATUS(vpiArrayCreate(8, VPI_ARRAY_TYPE_MATCHES, VPI_BACKEND_CUDA, &matches));
VPI_CHECK_STATUS(vpiSubmitBruteForceMatcher(stream, VPI_BACKEND_CUDA, desc1, desc2, VPI_NORM_HAMMING, 1, matches, VPI_ENABLE_CROSS_CHECK)); // Returns error VPI_ERROR_INVALID_ARGUMENT
VPI_CHECK_STATUS(vpiStreamSync(stream));
...

VPI_CHECK_STATUS is just a macro that catches errors, also cloned from NVIDIA code.

Platform is Jetson Orin Nano Development Kit 8 GB, JetPack 6.0 with Cuda 12.2. VPI is version 3.0.10 according to apt list.

Have I missed something obvious in the documentation?

Thanks in advance.