3.2 Ubuntu·드라이버·CUDA 설치와 버전 전략
실습 · 연습문제 1개
PATH에서 실행될 파일 찾기 path-lookup
여러 CUDA toolkit이 공존하는 서버에서 nvcc를 입력하면 어느 파일이 실행될까. 셸은 PATH의 디렉터리를 앞에서부터 차례로 보고 처음 찾은 파일을 실행한다. 동적 링커가 LD_LIBRARY_PATH에서 라이브러리를 찾을 때도 같은 규칙(앞에서부터, 처음 찾은 것)을 쓴다.
함수 lookup(name, path_var, files, links)를 완성한다.
| 인자 | 의미 |
|---|---|
name |
찾을 파일 이름(예: "nvcc", "libcudart.so.12") |
path_var |
콜론(:)으로 구분한 디렉터리 목록 문자열 |
files |
실제로 존재하는 파일의 절대 경로 집합 |
links |
디렉터리 심볼릭 링크 dict, {링크 경로: 실제 경로} |
반환값은 (찾은 경로, 실제 경로) tuple이다.
- 찾은 경로:
PATH항목 그대로 이어 붙인 경로(예:"/usr/local/cuda/bin/nvcc") - 실제 경로: 링크를 따라간 경로(예:
"/usr/local/cuda-12.4/bin/nvcc") - 어디에도 없으면
None
규칙:
- 빈 항목(
"a::b"의 가운데)은 건너뛴다. - 항목 끝의
/는 무시한다("/usr/bin/"과"/usr/bin"은 같다). - 링크는 경로의 앞부분이 링크 경로와 디렉터리 단위로 일치할 때만 바꾼다.
/usr/local/cuda링크는/usr/local/cuda/bin에는 적용되지만/usr/local/cuda-12.1/bin에는 적용되지 않는다.