2017-10-02 10 views
0

cuda.h 파일과 cuda 라이브러리 (특히 ML 라이브러리)에 의존하는 다양한 Go 라이브러리가 있습니다. 내가 Windows에서 이러한 라이브러리 중 하나를 설치하려고 할 때마다, 나는windows와 함께 cuda를 사용하려고 시도합니다.

fatal error: cuda.h: No such file or directory 
//#include <cuda.h> 

은 내가 (DO 내가 노력하고 이동 라이브러리에 CUDA는 라이브러리/헤더 파일을 링크 할 필요가 무엇인지 알고 말하는 오류가 설치하려면), 그러나, 나는 윈도우에서 특히 이렇게하는 방법에 대해 잘 모르겠습니다. 나는 여러 가지 이유로 GCC와 MSVC를 사용하지 않고 있지만 MSVC를 사용해도 동일한 문제가 발생했습니다.

내 이동 환경에 직접 cuda 컴파일러/헤더 파일을 연결할 수있는 방법이 있습니까? 아니면 수동으로 Cuda 헤더를 가지고있는 디렉토리로 이동/cgo 컴파일러를 지정해야합니까? ?

나는이 라이브러리를 도움을주는 개발자들에게 물어 보려고 노력했지만 대부분이 리눅스 사용자이기 때문에 실제로 알지 못합니다. 철저한 Google 검색은 실제로 아무데도 나를 안내하지 않기 때문에 여기에서 묻습니다.

+1

Windows 시스템에 CUDA를 설치 했습니까? 그것은 첫 걸음이 될 것입니다. CUDA를 사용하려는 경우 GCC는 공식적으로 지원되는 컴파일러가 아닙니다. MSVC를 사용해야합니다. –

+0

물론 컴퓨터에 cuda가 설치되어 있습니다. MSVC는 또한 동일한 오류를 제공합니다. – Abeltensor

+0

MSVC를 사용하는 경우 MSVC 프로젝트에'cuda.h '가있는 디렉토리를 가리키는 포함 경로를 추가하십시오. –

답변

1

답변을 찾을 수있었습니다.

창문의 CUDA 설치 이상한 경로로 기본적으로 일을 설치합니다

C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v8.0\include 

이 경로는 폴더 이름에서 공간의 결과로 컴파일러 많은 고통을 일으키는 원인이되었다. C:\CUDA\v8.0에 Cuda를 재설치 한 다음 내 CFLAGS와 LDFLAGS를 CGO 파일에 적절히 추가하면 올바르게 실행될 수있었습니다. 여기에 참고로

는 CFLAGS 내가 얻을하는 데 사용 LDFLAGS가이 작업을하다 :이 이동 github.com/chewxy/cu 라이브러리와

//#cgo windows LDFLAGS:-LC:/cuda/v8.0/lib/x64 
//#cgo windows CFLAGS: -IC:/cuda/v8.0/include 
import "C" 

했다. 또한 관리자는 이미 버전 8 또는 버전 9가 없기 때문에 새 플래그를 해당 라이브러리에 cgoflags.go 파일에 추가했습니다. 나는 그에게 이것을 말했고 그는 나중에 그것을 업데이트 할 것이지만 지금 당장 당신이해야 할 일이다.

+1

경로를 따옴표로 묶어 공백과 함께 문제를 해결할 수 있습니다 (예 : "C : \ Program Files \ NVIDIA GPU Computing Toolkit \ CUDA \ v8.0 \ include"MSVS 프로젝트의 "extra include paths"항목에 경로를 지정하는 경우에는 필요하지 않습니다. –

+0

GCC를 사용하고있었습니다. MSVS는 내가이 일을하기 위해 많은 노력을 기울이지 않았다. MSVC toolbelt에 가서 컴파일러를 바꿨고 (또한 간단히 LLVM도 시도했다.) 창 링커가 이러한 유형의 문제에 대해 더 잘 작동하는지 알았지 만 실제로는 그렇게 보이지 않았다 (여전히 같은 오류가 발생했다).아마도 내가 cgo로 라이브러리를 구축하고 있다면이 솔루션은 잠재적 인 솔루션 일 것입니다.하지만 솔직히 대부분의 경우 경로를 좀 더 단순하게 이동하는 것이 좋습니다. – Abeltensor