2013-10-16 1 views
0

저는 GPU 프로그래밍을 처음 접했습니다. 나는 기본적인 개념을 설명하는 자료를 읽었다.CUDA/OpenCL을 사용하여 특정 ALU에 명령/알고리즘을 할당합니까?

그러나 특정 ALU에 일련의 명령어 또는 전체 알고리즘/바이너리를 할당 할 수 있는지 알고 싶습니다. 이러한 명령어가이 ALU에서만 실행되었다는 것을 확신 할 수 있습니다 (따라서 바이 패스 병렬 처리를 자동으로 처리하는 시스템)?

나는 그들 사이의 잠재적 인 컴퓨팅 대기 시간과 관련하여 GPU의 개별 ALU를 "벤치마킹"해야합니다. 따라서, (특정) ALU 세트를 여러 개의 특정 ALU에 할당하고이 명령어 세트를 실행하는 데 필요한 시간을 측정하여 차이가있을 경우 결과를 비교하려고합니다.

일반적으로 경쟁 조건의 특정 출처에 대한 GPU를 확인하고 싶습니다. 처음 생각한 것은 다른 ALU의 실행 속도가 아주 작은 차이라고 생각했습니다. 어쩌면 당신은 경쟁 조건의 다른 잠재적 인 출처에 대해 알고있을 것입니다.

그러나 내 목표는 GPU (parllelization, 등)의 일반적인 사용과는 정반대이기 때문에 일반적인 도구로 하위 수준의 ALU에 어떻게 접근 할 수 있는지 알기가 어렵습니다.

안부,

+2

GPU는 본인이 아는 한에서, 사용자가 액세스 할 수없는 개인 워프 스케줄러를 가지고 : NVTX를 사용에 관한

, 여기에 내 질문에 봐. 예를 들어 Fermi 아키텍처의 경우 장치에는 작업을 다른 스트리밍 멀티 프로세서에 전달하는 Giga-Thread Scheduler와 개별 코어에 워프를 전달하는 이중 워프 스케줄러가 있습니다. 그러나 이것은 사용자에게 투명합니다. 개별 지침 또는 일련의 지침을 프로파일 링하기 위해 수행 할 수있는 작업은 NVTX 추적 라이브러리를 사용하는 것입니다.이 라이브러리는 Parallel Nsight 추적에서 프로파일의 일부분을 주석 처리하는 데 도움이됩니다. – JackOLantern

답변

1

GPU는 사용자가 액세스 할 수없는 개별 워프 스케줄러가 있습니다.

페르미 아키텍처의 경우, 예를 들어,이 장치에는 작업을 다른 스트리밍 멀티 프로세서 및 내부의 이중 워프 스케줄러로 보내는 Giga-Thread Scheduler가 있습니다.이 스케줄러는 개별 코어에 워프를 전달합니다. 그러나 이것은 사용자에게 투명합니다.

개별 또는 지침 시퀀스를 프로파일 링하기 위해 수행 할 수있는 작업은 NVTX 추적 라이브러리를 사용하여 Parallel Nsight 추적으로 프로파일의 일부분에 주석을 추가하는 작업을 돕는 것입니다.

당신은

CUDA Pro Tip: Generate Custom Application Profile Timelines with NVTX

Optimizing Application Performance with CUDA Profiling Tools

에서 롭 ​​파버에 의해 도서 "CUDA 응용 프로그램 설계 및 개발"의 제 3 장에 NVTX 라이브러리에 대한 몇 가지 자료를 찾을 수 있습니다.

Use of NVIDIA Tools Extension under Visual Studio 2010

+0

고마워, 나는 괜찮은 대답을주기 위해이 주제를 조금 더 파헤쳐 야한다고 생각한다. 지금 이것은 (그리고 유일한) 최상의 대답 인 것 같습니다. –

+0

동일한 명령어 세트가 다른 ALU에 의해 처리되는지 확인하기위한 하나의 아이디어 : 동일한 지식을 가진 한 동일한 스레드 블록의 모든 스레드는 동일한 스트리밍 멀티 프로세서 (SM)에서 동시에 실행됩니다.따라서 여러 블록에있는 여러 스레드에 일련의 명령을 할당하면 이러한 명령이 다른 SM과 다른 ALU에 의해 계산된다는 보장이 주어지지 않아야합니다. 감사합니다. P –