win 10+VS 2017+Cuda 10.0 환경 설정 상세 설명
1.1 하드웨어 지원
우선 컴퓨터 그래 픽 카드 가 Cuda 설 치 를 지원 하 는 지 확인 하 세 요.
'내 컴퓨터'를 오른쪽 클릭 하고'장치 관리자'를 클릭 합 니 다.디 스 플레이 어댑터 에서 그래 픽 카드 모델 을 볼 수 있 습 니 다.
홈 페이지리스트에 포 함 될 경우 해당 모델 을 클릭 해 다운로드 인터페이스 에서 Cuda 설치 패 키 지 를 다운로드 할 수 있다.
1.2 설치 VS 2017
홈 페이지 에서 VS 2017 을 다운로드 하고 설치 합 니 다.
1.3 Cuda 설치
설치 과정 에서 이 컴퓨터 에 설 치 된 VS 버 전 중 하나 가 있 는 지 자동 으로 감지 되 며,VS 버 전과 Cuda 버 전이 일치 하지 않 으 면 설치 가 불가능 합 니 다.
(또한 컴퓨터 에 360 백신 이 설치 되 어 있 으 면 설치 과정 에서 바이러스 수정 의심 알림 이 계속 있 을 수 있 으 므 로 모두 조작 을 허용 해 야 하 며 그렇지 않 으 면 설치 할 수 없다.)
이상 의 절 차 는 잘못 보고 하지 않 고 통과 한 후에 기본 환경 은 이미 구축 되 었 다.
2.환경 성공 여부 테스트
많이 참 고 했 기 때문에 여러 가지 방법 이 있 습 니 다.제 가 모두 열거 하 겠 습 니 다.
2.1
cmd 실행,
nvcc --version
을 입력 하면 버 전 번 호 를 볼 수 있 습 니 다.그림 참조:set cuda
cuda 가 설정 한 환경 변 수 를 볼 수 있 습 니 다.그림 과 같 습 니 다.2.2
시작 메뉴->NVIDIA Corporation->CUDA Samples->6.5->Browse CUDA Samples,왼쪽 단 추 를 누 르 면 예제 코드 의 위 치 를 엽 니 다.
다음 그림 에서 보 여 주 는 파일 을 찾 아 VS 에서 열 고 컴 파일 합 니 다(Build).
이 과정 은 약 40 분 이 걸 립 니 다.컴 파일 에 성공 하면 VS 중국 에서 그림 과 같은 힌트 를 볼 수 있 습 니 다.
(컴 파일 과정 에서 제 VS 는 다음 과 같이 SDK 오 류 를 찾 을 수 없습니다.
해결 방법 은:
다시 설치 할 필요 가 없습니다.시작 메뉴 에서 VS 의 설치 소프트웨어 를 찾 으 려 면 열 고 수정(modify)을 누 르 십시오.어떤 버 전이 없 으 면 windows SDK 를 설치 하면 됩 니 다.)
컴 파일 되 지 않 기 전에 Debug 폴 더 에는 그림 과 같은 세 개의 파일 만 있 었 습 니 다.
컴 파일 에 성공 하면 이 위치(구체 적 인 경 로 는 위의 그림 참조)에 많은 파일 이 생 성 됩 니 다.device Query Drv.exe 를 찾 은 프로그램 을 cmd 에 끌 어 다 놓 고 다시 실행 합 니 다.
결 과 는 다음 그림 과 같 습 니 다.우 리 는 이 컴퓨터 의 GPU 하드웨어 정 보 를 얻 었 습 니 다.주의:두 번 째 줄 의 계산 능력 에 주목 하면 이 기계 의 계산 능력 은 5.0 임 을 알 수 있 습 니 다.
2.3
vs 2017 을 열 면(VS 2017 템 플 릿 란 아래 에'NVIDIA/CUDA 10.0'이 나타 나 는 것 을 관찰 할 수 있 습 니 다.)빈 win 32 프로그램,즉 cuda 만 들 기테스트 항목.cuda 선택test,오른쪽 단 추 를 누 르 면 C>항목 의존 항목 C>사용자 정의 생 성,CUDA 9.0 을 선택 합 니 다.원본 파일 폴 더 오른쪽 단추->추가->새 항목->CUDA C/C++파일 선택,cudamain。클릭 cudamain.cu 의 속성,설정 속성 C>일반 C>항목 유형 C>"CUDA C/C++"를 선택 하 십시오.
주의:다음 단계 의 항목 속성 설정 은 모두 x64 에 대한 것 입 니 다.
6.디 렉 터 리 설정 포함:
프로젝트 속성 C>속성 C>설정 속성 C>VC++디 렉 터 리 C>포함 디 렉 터 리 를 오른쪽 클릭
2.포함 디 렉 터 리 추가:
$(CUDA_PATH)\include
7.라 이브 러 리 디 렉 터 리 설정1.VC++디 렉 터 리 C>라 이브 러 리 디 렉 터 리
라 이브 러 리 디 렉 터 리 추가:
$(CUDA_PATH)\lib\x64
8.의존 항속성 설정 C>링크 기 C>입력 C>추가 의존 항목
라 이브 러 리 파일 추가:
cublas.lib;cuda.lib;cudadevrt.lib;cudart.lib;cudart_static.lib;OpenCL.lib
cuda_main.cu 코드 는 다음 과 같 습 니 다.
#include "cuda_runtime.h"
#include "cublas_v2.h"
#include <time.h>
#include <iostream>
using namespace std;
//
int const M = 5;
int const N = 10;
int main()
{
//
cublasStatus_t status;
//
float *h_A = (float*)malloc(N*M * sizeof(float));
float *h_B = (float*)malloc(N*M * sizeof(float));
//
float *h_C = (float*)malloc(M*M * sizeof(float));
// 0-10
for (int i = 0; i < N*M; i++) {
h_A[i] = (float)(rand() % 10 + 1);
h_B[i] = (float)(rand() % 10 + 1);
}
//
cout << " A :" << endl;
for (int i = 0; i < N*M; i++) {
cout << h_A[i] << " ";
if ((i + 1) % N == 0) cout << endl;
}
cout << endl;
cout << " B :" << endl;
for (int i = 0; i < N*M; i++) {
cout << h_B[i] << " ";
if ((i + 1) % M == 0) cout << endl;
}
cout << endl;
/*
** GPU
*/
// CUBLAS
cublasHandle_t handle;
status = cublasCreate(&handle);
if (status != CUBLAS_STATUS_SUCCESS)
{
if (status == CUBLAS_STATUS_NOT_INITIALIZED) {
cout << "CUBLAS " << endl;
}
getchar();
return EXIT_FAILURE;
}
float *d_A, *d_B, *d_C;
//
cudaMalloc(
(void**)&d_A, //
N*M * sizeof(float) //
);
cudaMalloc(
(void**)&d_B,
N*M * sizeof(float)
);
//
cudaMalloc(
(void**)&d_C,
M*M * sizeof(float)
);
//
cublasSetVector(
N*M, //
sizeof(float), //
h_A, //
1, //
d_A, // GPU
1 //
);
cublasSetVector(
N*M,
sizeof(float),
h_B,
1,
d_B,
1
);
//
cudaThreadSynchronize();
// , 。
float a = 1; float b = 0;
// 。
cublasSgemm(
handle, // blas
CUBLAS_OP_T, // A
CUBLAS_OP_T, // B
M, // A, C
M, // B, C
N, // A B
&a, // α
d_A, // A
N, // lda
d_B, // B
M, // ldb
&b, // β
d_C, // C ( )
M // ldc
);
//
cudaThreadSynchronize();
//
cublasGetVector(
M*M, //
sizeof(float), //
d_C, // GPU
1, //
h_C, //
1 //
);
//
cout << " ( (A*B) ):" << endl;
for (int i = 0; i < M*M; i++) {
cout << h_C[i] << " ";
if ((i + 1) % M == 0) cout << endl;
}
//
free(h_A);
free(h_B);
free(h_C);
cudaFree(d_A);
cudaFree(d_B);
cudaFree(d_C);
// CUBLAS
cublasDestroy(handle);
getchar();
return 0;
}
실행 결과:2.4
CUDA 10.0 Runtime 항목 을 직접 새로 만 듭 니 다.그림(그림 에서 파일 이름 은 이 예 와 상 관 없 이 참고 할 필요 가 없습니다).
오른쪽 키 항목→속성→설정 속성→링크 기→일반→추가 라 이브 러 리 디 렉 터 리,다음 디 렉 터 리 추가:
$(CUDA_PATH_V10_0)\lib$(Platform)
예제 코드 는 다음 과 같다.
#include "cuda_runtime.h"
#include "device_launch_parameters.h"
#include <stdio.h>
int main() {
int deviceCount;
cudaGetDeviceCount(&deviceCount);
int dev;
for (dev = 0; dev < deviceCount; dev++)
{
int driver_version(0), runtime_version(0);
cudaDeviceProp deviceProp;
cudaGetDeviceProperties(&deviceProp, dev);
if (dev == 0)
if (deviceProp.minor = 9999 && deviceProp.major == 9999)
printf("
");
printf("
Device%d:\"%s\"
", dev, deviceProp.name);
cudaDriverGetVersion(&driver_version);
printf("CUDA : %d.%d
", driver_version / 1000, (driver_version % 1000) / 10);
cudaRuntimeGetVersion(&runtime_version);
printf("CUDA : %d.%d
", runtime_version / 1000, (runtime_version % 1000) / 10);
printf(" : %d.%d
", deviceProp.major, deviceProp.minor);
printf("Total amount of Global Memory: %u bytes
", deviceProp.totalGlobalMem);
printf("Number of SMs: %d
", deviceProp.multiProcessorCount);
printf("Total amount of Constant Memory: %u bytes
", deviceProp.totalConstMem);
printf("Total amount of Shared Memory per block: %u bytes
", deviceProp.sharedMemPerBlock);
printf("Total number of registers available per block: %d
", deviceProp.regsPerBlock);
printf("Warp size: %d
", deviceProp.warpSize);
printf("Maximum number of threads per SM: %d
", deviceProp.maxThreadsPerMultiProcessor);
printf("Maximum number of threads per block: %d
", deviceProp.maxThreadsPerBlock);
printf("Maximum size of each dimension of a block: %d x %d x %d
", deviceProp.maxThreadsDim[0],
deviceProp.maxThreadsDim[1],
deviceProp.maxThreadsDim[2]);
printf("Maximum size of each dimension of a grid: %d x %d x %d
", deviceProp.maxGridSize[0], deviceProp.maxGridSize[1], deviceProp.maxGridSize[2]);
printf("Maximum memory pitch: %u bytes
", deviceProp.memPitch);
printf("Texture alignmemt: %u bytes
", deviceProp.texturePitchAlignment);
printf("Clock rate: %.2f GHz
", deviceProp.clockRate * 1e-6f);
printf("Memory Clock rate: %.0f MHz
", deviceProp.memoryClockRate * 1e-3f);
printf("Memory Bus Width: %d-bit
", deviceProp.memoryBusWidth);
}
return 0;
}
실행 결과:본 고 는 주로 참고:1.https://blog.csdn.net/u013165921/article/details/77891913
2. https://www.cnblogs.com/wayne793377164/p/8185404.html
win 10+VS 2017+Cuda 10.0 환경 설정 에 대한 자세 한 설명 은 여기 서 소개 합 니 다.더 많은 win 10+VS 2017+Cuda 10.0 설정 내용 은 이전 글 을 검색 하거나 아래 글 을 계속 찾 아 보 세 요.앞으로 도 많은 응원 부 탁 드 리 겠 습 니 다!
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Visual Studio(VS 2017)설정 C/C++PostgreSQL 9.6.3 개발 환경먼저 위의 사이트 에서 필요 한 버 전의 PostgreSQL 을 다운로드 합 니 다.이 곳 은 32 비트 와 64 비트 를 선택 할 수 있 습 니 다.이 곳 의 자릿수 는 컴퓨터 의 자릿수 가 아 닌 PostgreS...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.