void LoaderContext::ProgramGlobalFree(void *ptr, size_t size) {
  assert(ptr);
  assert(size);

  hsa_memory_deregister(ptr, size);
  alc_aligned_free(ptr);
}
示例#2
0
void free_buf(hsa_buf* buf) {
    if(!buf || !buf->ptr) {
        return;
    }

    if(buf->is_registered) {
        hsa_memory_deregister(buf->ptr, buf->size);
    }

    free(buf->ptr);
    buf->ptr = NULL;
    buf->size = 0;
}
void LoaderContext::KernelCodeFree(void *ptr, size_t size) {
  assert(ptr);
  assert(size);

  hsa_memory_deregister(ptr, size);

#if defined(_WIN32) || defined(_WIN64)
  VirtualFree(ptr, size, MEM_DECOMMIT);
  VirtualFree(ptr, 0, MEM_RELEASE);
#else
  munmap(ptr, size);
#endif
}