최근에 NVIDIA Cuda Toolkit의 컴파일 환경을 연구하고 xmake 2.1.10의 개발 버전에서 cuda 컴파일 환경에 대한 지원이 추가되었으며 *.cu
코드 를 직접 컴파일 할 수 있습니다 .
Cuda Toolkit 관련 지침 및 설치 문서는 공식 문서 인 CUDA Toolkit Documentation을 참조하십시오 .
Cuda SDK를 다운로드하여 설치 한 후 기본적으로 macosx의 /Developer/NVIDIA/CUDA-x.x
디렉토리에 설치합니다. CUDA_PATH
해당 SDK 디렉토리 는 Windows 의 환경 변수 를 통해 찾을 수 있으며 디렉토리
는 기본적으로 Linux에 설치됩니다 /usr/local/cuda
.
xmake $ xmake
가 *.cu
코드 를 컴파일하기 위해 명령을 실행하면 이러한 기본 설치 디렉토리를 감지 한 다음 nvcc 컴파일러를 호출하여 cuda 프로그램을 직접 컴파일합니다. 대부분의 경우 다음을 실행하기 만하면됩니다.
$ xmake
Cuda 프로젝트 생성 및 컴파일
컴파일하기 전에 xmake를 통해 빈 cuda 프로젝트를 만들 수 있습니다. 예를 들면 다음과 같습니다.
$ xmake create -l cuda test
$ cd test
$ xmake
-l
매개 변수 사양에 따라 cuda 코드 프로젝트 를 생성하고 프로젝트 이름은 test이고 실행 출력은 다음과 같습니다.
[00%]: ccache compiling.release src/main.cu
[100%]: linking.release test
이 cuda 프로그램을 직접 실행할 수도 있습니다.
$ xmake run
그런 다음이 cuda 프로젝트의 xmake.lua
파일을 살펴 보겠습니다 .
-- define target
target("test")
-- set kind
set_kind("binary")
-- add include directories
add_includedirs("inc")
-- add files
add_files("src/*.cu")
-- generate SASS code for each SM architecture
for _, sm in ipairs({
"30", "35", "37", "50", "52", "60", "61", "70"}) do
add_cuflags("-gencode arch=compute_" .. sm .. ",code=sm_" .. sm)
add_ldflags("-gencode arch=compute_" .. sm .. ",code=sm_" .. sm)
end
-- generate PTX code from the highest SM architecture to guarantee forward-compatibility
sm = "70"
add_cuflags("-gencode arch=compute_" .. sm .. ",code=compute_" .. sm)
add_ldflags("-gencode arch=compute_" .. sm .. ",code=compute_" .. sm)
대부분은 C / C ++ 프로젝트 설명과 유사하지만, 유일한 차이점은 add_cuflags
일부 cuda 코드 별 컴파일 옵션을 설정하여 사용자의 필요에 따라 구성의이 부분을 직접 조정할 수 있다는 것입니다.
자세한 add_cuflags
지침 은 xmake 공식 문서를 참조하십시오 .
Cuda 컴파일 환경 구성
기본적으로 xmake는 시스템에 설치된 Cuda SDK 환경을 성공적으로 감지 할 수 있습니다. 사용자는 추가 구성 작업을 수행 할 필요가 없습니다. 물론 감지되지 않으면 사용자가 Cuda SDK의 경로를 수동으로 지정할 수도 있습니다.
$ xmake f --cuda_dir=/usr/local/cuda
$ xmake
xmake에게 현재 Cuda SDK 설치 디렉토리가 어디에 있는지 알려주십시오.
현재 cuda 환경에 대한 xmake의 감지 지원을 테스트하려면 직접 실행할 수 있습니다.
$ xmake l detect.sdks.find_cuda_toolchains
{
linkdirs =
{
/Developer/NVIDIA/CUDA-9.1/lib
}
, bindir = /Developer/NVIDIA/CUDA-9.1/bin
, includedirs =
{
/Developer/NVIDIA/CUDA-9.1/include
}
, cudadir = /Developer/NVIDIA/CUDA-9.1
}
감지 상황을 테스트 하기 위해 관련 감지 코드 find_cuda_toolchains.lua 를 제공하여 xmake 의 감지 프로세스를 개선 할 수도 있습니다.
기타 지침
참고 : 현재 방금 완료된 cuda에 대한 지원은 공식 버전을 발행하지 않았습니다. xmake 지원 및 cuda 진행에 대한 자세한 내용은 다음을 참조하십시오. AND DELINQUENCY # 158 .
이 기능을 사용하려면 최신 마스터 버전을 다운로드하여 설치 하거나 Windows 2.1.10-dev 설치 패키지를 다운로드하면 됩니다 .