tensorflow gpu 사용중 다음과 같은 경고가 나온다.

2022-11-23 13:48:15.600418: I tensorflow/stream_executor/cuda/cuda_gpu_executor.cc:939] successful NUMA node read from SysFS had negative value (-1), but there must be at least one NUMA node, so returning NUMA node zero

NUMA node를 읽었는데 -1 값이다. 적어도 하나의 NUMA노드가 있어야 해서 0을 리턴한다.

NUMA

NUMA (Non-Uniformed Memory Access) 란 무엇인가.

불균일 기억 장치 접근(Non-Uniform Memory Access, NUMA)는 멀티프로세서 시스템에서 사용되고 있는 컴퓨터 메모리 설계 방법중의 하나로, 메모리에 접근하는 시간이 메모리와 프로세서간의 상대적인 위치에 따라 달라진다. NUMA구조에서 프로세서는 자기의 로컬 메모리에 접근할 때가 원격 메모리에 접근할 때보다 더 빠르다. 원격 메모리는 다른 프로세서에 연결되어 있는 메모리를 말하고 로컬 메모리는 자기 프로세서에 연결되어 있는 메모리를 말한다. 즉, 하나의 메인보드에서 여러 프로세서를 사용하면서 메모리 접근 효율을 높이기 위한 기술로 특정 프로세서가 메모리를 다 잡게되면 버스를 자기 혼자 독점하고있으니 다른 프로세서는 놀아야하는 상황이 발생하기 때문에 각 프로세서마다 메모리 구역을 나눠주고 ‘여기만 접근해’ 라고 지정하고 그걸 NUMA 노드라고 함.

https://lapina.tistory.com/137 에서 가져옴

$lspci | grep -i nvidia

위의 키워드로 노드를 확인한다.

0000:01:00.0 VGA compatible controller: NVIDIA Corporation Device 249d (rev a1)
0000:01:00.1 Audio device: NVIDIA Corporation Device 228b (rev a1)

첫재줄의 VGA 호환장치의 주소 0000:01:00.0을 확인한다.

sys/bus/pci/devices/ 경로로 가면 목록을 확인 할 수 있다.
위에서 확인했던 주소를 열어보자.

cat 0000\:01\:00.0/numa_node

Image0

-1이 나온다면 연결되어 있지 않은 것이고
위의 스샷처럼 0이라면 연결되어있는 것이다.

-1 인 경우 다음 명령어로 0으로 바꿔준다.

echo 0 | sudo tee -a 0000\:01\:00.0/numa_node

이렇게 설정하면 더이상 애러메세지가 나오지 않는다.
하지만 재부팅을 하면 설정이 초기화되기 때문에
부팅시 자동으로 다시 연결하고 싶다면

/etc/profile 혹은 /etc/crontab
위의 명령어를 넣어서 부팅시 다시 설정하게 해주면 된다.
내 경우 profile에 명령어를 넣으니
부팅시 화면이 표시되지 않는 문제가 있어 crontab에 넣어주었다.

Image0

참고

https://lapina.tistory.com/137
https://ugo04.tistory.com/149

Leave a comment