2014-07-19 2 views
-3

Visual Studio 2010에서 CUDA6.0을 구성하려고합니다. CUDA 6.0 런타임을 사용하여 프로젝트를 만들었습니다. 컴파일 할 때 옵션을 변경/추가해야합니까? 내 CUDA 코드가 시리즈 버전보다 느리게 실행되기 때문에 다른 가능성에 관계없이 코드가 병렬로 실행되지 않을 수 있습니다 (예 : GPU가 느린 CPU가됩니다 ...). 이중 정밀도, 간접비 등?VS2010의 CUDA 컴파일 옵션

많은 감사, XF 당신은 그냥 시리얼 코드를 가져다가 작동 할 생각을 컴파일한다는 것입니다 것처럼 들리는에서

+1

병렬 코드의 속도 (특히 순차 버전과 비교하여 속도가 더 빠름)는 프로그래밍 기술과 알고리즘의 병렬 처리 가능성을 결합한 것입니다. 따라서 병렬 코드가 순차 코드보다 느리게 실행될 수 있습니다. 아마도 CUDA 6.0을 컴파일러 옵션과 관련하여 사용하는 데는 아무런 문제가 없습니다. 마지막으로, GPU가 느린 CPU가 될 가능성은 없습니다. – JackOLantern

답변

2

.

그러나 당신은 실제로 당신이

  1. 이 카드가 가지고있는 아키텍처를 사용하여 확인 할 수 있습니다 병렬 코드를 가지고있는 가정에

    . 속성 -> CUDA C/C++ -> 장치 -> 코드 생성에서 올바른 값을 가지고 있는지 확인하십시오. 내 카드에는 compute_35, sm_35가 있습니다. 카드가 Maxwell을 지원하면 compute_50, sm_50을 할 수 있습니다.
  2. ** -> CUDA C/C++ -> 최적화 **에서 최적화를 변경할 수 있습니다.
  3. 디버그를 사용하여 컴파일하지 않도록하십시오.
  4. 이 모든 것이 실패 할 경우 응용 프로그램에서 NSIGHT Analysis Tool (또는 시각적 프로파일 러)을 사용하여 문제가있는 부분을 확인해야합니다. 공유 메모리를 사용하고 분기를 줄이면 은행 갈등이 발생하지 않는지 확인하십시오. 시각적 프로파일 러는 잘못된 것을 알려주는 데 아주 좋습니다.

또한 최적화에 대한 GTC 협상 [link to pdf] (내 옛 교수)을 확인해야합니다. 코드 실행 속도를 높이기 위해 수행 할 수있는 몇 가지 기본 최적화에 대해 설명합니다.

GTC의 지난 몇 년간의 대화는 [link]에서 확인할 수 있습니다. 그들은 최적화에 대한 여러 업데이 트를 가지고, 다른 도구에 대해 이야기하고 있습니다.

+1

참고로, OP는 [cusp] (https://github.com/cusplibrary/cusplibrary)를 사용하고 있습니다. 여기에서 설명하지 않으려 고합니다. [here] (https://devtalk.nvidia.com/default/topic/762460/cuda-setup-and-installation/compiling-options-for-vs2010/) 및 [here] (https : //devtalk.nvidia)를 참조하십시오. .com/default/topic/762462/cuda-programming-and-performance/bad-performance-using-cusp-conjugate-gradient- /). –

+0

나는 그 태그를 보았다. 그러나 나는 그가 나에게 주었던 그런 작은 정보로 할 수있는 어떤 정보도 주려고했다. 어쩌면 그는 약간의 피드백을 줄 것인가? (불안한). – deathly809

+0

그것은 좋은 대답, 나는 upvoted. 배경 정보 만 알려주고 싶었어. 정보의 또 다른 유용한 정보는 OP가 cc3.0 (GK104 기반) 인 GTX760을 사용하므로 특히 높은 배정도 처리량을위한 최상의 옵션이 아닙니다. 그러나 스파 스 행렬 활동은 종종 계산 된 바운드보다 대역폭이 더 많이 필요하므로 DP 대 SP는별로 중요하지 않습니다. –