
CUDA 10.2 및 cublas 라이브러리 설치와 관련하여 문제가 있습니다.
Cuda 파일은 /usr/local에 있고 cublas 파일은 /usr/include 파일에 있습니다.
이제 Cuda 설치를 위한 HOME_PATH를 입력해야 하는 프로그램이 생겼습니다.
cublas 파일을 /usr/local에 심볼릭 링크하려고 했지만 프로그램이 필요한 파일을 찾을 수 없습니다.
cublas 파일을 /usr/local에 복사하는(보호되는) 방법이 있습니까? 아니면 어떤 방식으로든 cublas 파일의 설치 경로를 변경하시겠습니까?
미리 감사드립니다.
크리스
답변1
아래에서는 현재 Nvidia 드라이버가 있는 Ubuntu 시스템으로 시작한다고 가정합니다.
CUDA는 단지 응용 프로그램이지만 특정(종종 오래된) 컴파일러 버전이 필요하고 자체(여러 버전은 더 이상 사용되지 않음) 비디오 드라이버를 제공해야 합니다.
CUDA 릴리스에는 다음을 위한 자체 디렉터리가 있습니다.
- bin - 실행 파일용
- lib64 - 링크 라이브러리용
- include - 컴파일러 파일
PATH 환경 변수의 시작 부분에 CUDA bin 디렉터리를 추가하면 해당 프로그램에 액세스하고 시스템 기본 프로그램을 재정의할 수 있습니다(g++, gcc, ar, nm 및 ranlib의 이전 버전의 경우).
LD_LIBRARY_PATH 시작 부분에 CUDA lib64 디렉터리를 추가하면 프로그램의 표준 로드에서 해당 (공유) 라이브러리를 선택할 수 있습니다.
CUDA 포함 디렉터리는 일반적으로 makefile 컴파일러 플래그에 변수로 추가되므로 해당 파일은 컴파일러에서 선택될 수 있습니다. 이러한 CUDA 파일을 시스템 bin, lib 및 include 디렉터리에 뿌릴 필요가 없습니다. 응용프로그램은 일반적으로 그렇게 하지 않습니다. CUDA 릴리스 디렉터리 아래에 CUDA bin, lib64 및 포함 파일을 유지하면 여러 CUDA 릴리스를 동시에 지원할 수 있습니다. 각 릴리스에 연결된 스크립트에서 PATH 및 LD_LIBRARY_PATH를 수정하면 됩니다.
프로그램 분리에 대한 한 가지 예외는 시스템에서 제공하는 이전 컴파일러를 설치하는 것일 수 있습니다. gcc-8 및 도구(ar-8, nm-8, ranlib-)는 CUDA 10.2에 필요합니다. CUDA bin 디렉터리에 추가된 링크(gcc, ar, nm, ranlib)를 통해 이전 컴파일러에 액세스하세요. 시스템 기본값을 이전 컴파일러로 변경하지 마십시오(예: 링크 또는 업데이트 대안을 통해).
강제로 이전 컴파일러(비디오 드라이버 등)를 사용하게 되면 시스템의 다른 부분이 손상될 수 있습니다. 충분히 오래된 CUDA 릴리스에는 표준 저장소에서 제공하지 않는 오래된 컴파일러가 필요할 수 있습니다(CUDA 8.0의 경우 gcc-5를 생각해 보세요). 이러한 컴파일러의 복사본과 필요한 공유 라이브러리를 CUDA 릴리스 bin 및 lib64 디렉터리에 넣어야 합니다.
이러한 방식으로 CUDA 릴리스를 설정하는 것은 쉽습니다. 제공된 deb 파일을 선택한 위치에 압축을 풀면 됩니다.
dpkg-deb --extract CUDAarchive YourDirectory
예전에는 이것이 필요한 전부였지만 10.2와 같은 CUDA 릴리스에서는 릴리스에 제공된 deb 파일의 내용을 더 많은 deb 파일로 만들었습니다. 이전 릴리스에 대해 원치 않는 Nvidia deb 파일을 기록하고 이를 무시하거나 삭제한 다음 모든 개별 deb 파일의 압축을 풉니다. 이제 CUDA 릴리스 디렉토리가 있으므로 PATH 및 LD_LIBRARY_PATH를 변경하는 스크립트를 설정하십시오(또는 여러 CUDA 릴리스에 관심이 없다면 이러한 변경 사항을 .profile에 넣으십시오(bash 유형 쉘을 사용한다고 가정).
이 접근 방식은 모든 CUDA 파일을 패키지 관리자 외부에 유지하므로 업데이트가 이루어지지 않습니다. 이는 관점에 따라 좋을 수도 있고 나쁠 수도 있습니다.
불행하게도 "파일 실행" 스크립트를 실행하거나 제공된 CUDA 릴리스 deb를 설치하면 문제가 발생합니다.
- 기존 Nvidia 드라이버가 현재 비디오 드라이버를 대체합니다. 다행히도 계속 로그인할 수 있습니다.
- 현재 Nvidia 드라이버를 다시 설치하면 이전 드라이버와 모든 종속 항목(모든 CUDA 파일)이 삭제될 수 있습니다. 글쎄, 패키지 관리자가 해당 작업을 수행하는 것을 절대 방해하지 마십시오. 하지만 전체 CUDA 릴리스의 복사본을 만들고 패키지 관리자가 이를 삭제하고 복원하도록 할 수 있습니다.
패키지 관리자를 사용한 이러한 모든 해결 방법은 결국 위에서 설명한 것처럼 패키지 관리자가 없는 CUDA 릴리스가 됩니다.