gst_inst_128bit 명령을 사용하고 싶습니다. 동일한 프로그램에서 nvvp는 많은 gst_inst_128bit 명령을 실행합니다. nsight의 프로파일 러에서 4 배의 gst_inst_32bit 명령어를 얻습니다. 동일한 프로그램이어야합니다. 어떻게 이런 상황이 발생할 수 있습니까?nvvp와 nsight의 프로파일 러는 다른 결과를 줍니까?
실험 리눅스, CUDA 5.0, GTX 580 프로그램에 시도에만 커널 함수에서 다른 하나 개의 배열에서 데이터를 복사한다 : 를 메인에서 :
cudaMalloc((void**)&dev_a, NUM * sizeof(float));
cudaMalloc((void**)&dev_b, NUM * sizeof(float));
kernel<<<grid,block>>>((uint4 *)dev_a, (uint4 *)dev_b);
커널 :
__global__ void kernel(uint4 *a, uint4 *b){
unsigned int id = blockIdx.x * THREAD_NUM + threadIdx.x;
for(unsigned int i = 0;i < LOOP/4;i++){
b[id + i * GRID_NUM * THREAD_NUM] = a[id + i * GRID_NUM * THREAD_NUM];
}
return;
이 리눅스인가요? nsight는 릴리스 버전 대신 코드의 디버그 버전을 빌드 중일 수 있습니다. nvcc 명령 줄이 nvvp 용 독립 실행 형을 빌드 할 때 수행중인 작업과 일치하는지 확인하기 위해 nsight가 어떻게 구축되고 있는지주의 깊게 확인해야합니다. 코드의 디버그 버전은 대개 -g -G 스위치를 추가하여 후드 아래에서 코드를 크게 변경할 수 있습니다. –
릴리스 버전 코드입니다. 나는 nsight를 사용하여 내 프로그램을 처음으로 프로파일 링 한 다음 nvvp를 프로파일 링합니다. 동일한 실행 파일이어야합니다. – worldterminator
Windows 사용자입니까? – Eugene