2014-04-17 2 views
1

간단한 C 코드는 libnuma 라이브러리를 사용하여 NUMA 시스템의 특정 메모리 노드에 메모리를 할당 할 수 있습니다. 예를 들어, 다음과 같은 기능을 사용하여 수행 할 수 있습니다 :특정 NUMA 메모리 노드에서 C++ 객체를 인스턴스화하는 방법은 무엇입니까?

void *numa_alloc_onnode(size_t size, int node) 

어떻게 인스턴스화 일부 메모리 노드의 클래스? 한 가지 방법은 다음과 같습니다.

numa_set_membind(<nodemask>); 
o = new Object(); 
numa_set_localalloc(); 

이 방법이 유용할까요?

답변

3

Placement new 당신이 찾고있는 것입니다. 예 :

void *blob = numa_alloc_onnode(sizeof(Object), ...); 
Object *object = new(blob) Object; 
+0

정렬 요구 사항에주의해야하지만 –

+0

어떻게 할당을 해제합니까? –

+2

또한, 분명히'numa_free()'를 사용하여 자유롭게해야하기 때문에 완료해야합니다 : 'object-> ~ Object(); numa_free (blob); ' – shoban

관련 문제