This is further speeding up host memory allocation. So far, an OpenCL cl_mem object was created with no host-pointer and it was up to the OpenCL runtime to allocate the host memory. It turns out, this is horribly slow for GH200 stack (for unknown reasons). It was only helpful to mark such OpenCL allocated host memory as "not worth to transfer initially" (CL_MAP_WRITE_INVALIDATE_REGION); a bug in itself. Normally, allocating host memory by relying on the OpenCL runtime yields best performance at least when this memory is the origin/destination of a (PCIe-)transfer. However, GH200 SW stack seems to struggle with this idea. Introduced code path (covered by XHINTS) specific to Nvidia, which simply wraps a malloc'ed pointer (host memory).
Implemented malloc based c_dbcsr_acc_host_mem_allocate.
This is further speeding up host memory allocation. So far, an OpenCL cl_mem object was created with no host-pointer and it was up to the OpenCL runtime to allocate the host memory. It turns out, this is horribly slow for GH200 stack (for unknown reasons). It was only helpful to mark such OpenCL allocated host memory as "not worth to transfer initially" (CL_MAP_WRITE_INVALIDATE_REGION); a bug in itself. Normally, allocating host memory by relying on the OpenCL runtime yields best performance at least when this memory is the origin/destination of a (PCIe-)transfer. However, GH200 SW stack seems to struggle with this idea. Introduced code path (covered by XHINTS) specific to Nvidia, which simply wraps a malloc'ed pointer (host memory).