例程1 调用memkind_malloc()分配内存
Key:
void *memkind_malloc(memkind_t kind, size_t size); // 用于分配内存,完成后得到相应的指针,和malloc作用相同
int memkind_posix_memalign(memkind_t kind, void **memptr, size_t alignment, size_t size); // 采用内存对齐的方式分配内存
memkind_t 指定的是可以分配哪些memory,在下文中详细说明了可调用的参数,但是调用是否成功,需依据具体硬件而定:http://memkind.github.io/memkind/man_pages/memkind.html
MEMKIND_DEFAULT Default allocation using standard memory and default page size.
MEMKIND_HUGETLB Allocate from standard memory using huge pages. Note: This kind requires huge pages configuration described in SYSTEM CONFIGURATION section.
MEMKIND_GBTLB (DEPRECATED) Allocate from standard memory using 1GB chunks backed by huge pages. Note: This kind requires huge pages configuration described in SYSTEM CONFIGURATION section.
MEMKIND_INTERLEAVE Allocate pages interleaved across all NUMA nodes with transparent huge pages disabled.
MEMKIND_HBW Allocate from the closest high bandwidth memory NUMA node at time of allocation. If there is not enough high bandwidth memory to satisfy the request errno is set to ENOMEM and the allocated pointer is set to NULL.
MEMKIND_HBW_ALL Same as MEMKIND_HBW except decision regarding closest NUMA node is postponed until the time of first write.
MEMKIND_HBW_HUGETLB Same as MEMKIND_HBW except the allocation is backed by huge pages. Note: This kind requires huge pages configuration described in SYSTEM CONFIGURATION section.
MEMKIND_HBW_ALL_HUGETLB Combination of MEMKIND_HBW_ALL and MEMKIND_HBW_HUGETLB properties. Note: This kind requires huge pages configuration described in SYSTEM CONFIGURATION section.
MEMKIND_HBW_PREFERRED Same as MEMKIND_HBW except that if there is not enough high bandwidth memory to satisfy the request, the allocation will