2009-10-12 7 views
1

CPU 최적화 BLAS 라이브러리가있는 매트릭스 계산 기능이있는 기존 MFC 응용 프로그램이 있습니다. 내 프로젝트에 CuBLAS 계산 기능을 추가하는 데 관심이 있습니다. 그러나 다음과 같은 두 가지 질문이 있습니다.기존 MFC 프로젝트에서 CUDA 사용

1) 내 자신의 CUDA 커널, 스레드 및 블록을 지정하는 데 필요한 작업이 필요한지 잘 모르겠습니다. 이 시점에서 구성. 그렇다면 알고리즘을 수정할 때 아키텍처의 어느 섹션에 가장주의를 기울일 것을 권장합니까?

2) 저는 (a) 프로그램에서 CuBLAS 기능을 사용하여 Visual Studio에서 새 프로젝트를 만들거나 (b) 기존 MFC 프로젝트에서 CuBLAS 기능을 통합하는 데 관심이 있습니다. 그러나 Visual Studio 프로젝트를 this과 같은 가이드 이외의 다른 CUDA SDK와 제대로 작동하도록 구성하는 데 문제가 있습니다. 기존 프로젝트와 통합하려는 경우 작동하지 않을 수 있습니다. 이것에 대한 귀하의 권고는 무엇입니까?

의견에 미리 감사드립니다.

답변

2

1) CUBLAS를 사용한다면 커널을 직접 작성할 필요가 없습니다. CUBLAS는 라이브러리에 패키지 된 커널 및 C 래퍼 모음이며 다른 프로그램에서 쉽게 호출 할 수 있도록 설계되었습니다. CUBAS를 사용하기 위해서는 CUDA 스레드, 블록 등의 세부 사항을 이해할 필요가 없습니다.

2) 자체 커널을 작성할 필요가 없으므로 별도의 Visual Studio 프로젝트를 CUDA SDK로 빌드 할 필요가 없습니다. 기존 프로젝트의 함수 호출을 cublas.dll (또는 정적 링크의 경우 cublas.lib)로 만들면됩니다. CUDA Toolkit에있는 CUBLAS_Library_2.3.pdf의 1 장에는 C에서 CUBLAS를 호출하는 방법을 보여주는 예제 프로그램이 포함되어 있습니다.

+0

CUDA 스레드, 블록 등의 세부 사항을 이해하는 것이 CUBLAS를 사용하는 데 반드시 필요한 것은 아니지만 최적화에 도움이 될 것입니다. 목적? – stanigator

+1

스레드, 블록, 그리드, 워프 및 공유 메모리는 커널 내부에 있으므로 자신 만의 커널을 만들거나 기존 소스의 소스를 편집하지 않는 한 그 세부 수준은 아마도 당신과 관련이 없습니다. 귀하의 다른 질문에 대한 답변에서 언급했듯이 가장 큰 병목은 주 메모리에서 PCIe 버스를 통해 비디오 메모리로 데이터를 전송하는 것입니다. 그러나 CUDA 프로그래밍 가이드는이 모든 것을 아주 잘 설명합니다. 아마도 CUDA 아키텍처에 대해 더 깊이 이해하고 싶다면이 내용을 읽어야합니다. – Gabriel

+0

당신의 깊이있는 설명에 감사드립니다. – stanigator

관련 문제