Virtual memory management minimum granularity


I have a question about the minimal granularity when trying to allocate GPU memory by cuMemcreate.

With my system, which is 3090 with CUDA 12,
I got the minimal allocation granularity of 2MB when I query with cuMemGetAllocationGranularity.
I wonder where this 2MB came from.

I suspect this might be the GPU huge-page size, but why isn’t the normal GPU page size such as 4KB?

Is there any way we can change this minimal allocation granularity?