2013-05-01 3 views
3

AMD HD 7970 (사파이어 GHz 버전)에서 일부 OpenCL 이미지 처리를 테스트하고 있습니다. 이 카드는 6GB의 RAM을 탑재하고 있지만 다음 호출에서는AMD 7970이 올바르지 않은 것으로보고 함 DEVICE_GLOBAL_MEM_SIZE

clGetDeviceInfo(device, CL_DEVICE_GLOBAL_MEM_SIZE, sizeof(buf_ulong), &buf_ulong, NULL); 

의 값은 2,147,483,648을 반환합니다.

카드의 실제 메모리 크기를 반환하는이 OpenCL 호출에 문제가 있습니까? 이 카드에 사용할 수있는 OpenCL 메모리의 양을 제한하는 설정이 있습니까?

어떤 통찰력이 도움이 될 것입니다!

+2

이것은 실제 결과의 하위 32 비트와 유사합니다. 당신은 그 값을 32 비트 변수의 어딘가에 두는 것을 배제 했습니까? 그럴 경우 내 돈이 드라이버에서 32 비트 변수로 어딘가에서 실수로 woking하는 것입니다. – Grizzly

+0

변수가 uint64_t에 저장됩니다. –

+0

그래서 uint64를 사용할 때 다른 번호를보고합니까? 가치는 무엇입니까? – mfa

답변

1

My HD7970 (3GB 버전, Sapphire GHz 버전)은 2GB의 사용 가능한 메모리도보고합니다. 총 용량 (OS 및 드라이버가 일부 메모리를 예약해야 함)보다 메모리를 적게보고하는 것은 당연한 일이지만 6GB 버전에서는 귀하의 가치가 너무 낮습니다.

이전 AMD 드라이버는 몇 가지 env를 통해 OpenCL에 예약 된 메모리 양을 설정할 수있었습니다. 변수. 그러나 공식적으로 지원되지 않은 기능이며 최신 드라이버에서는 더 이상 사용할 수 없습니다.

+1

환경 변수가 답이되었습니다. "GPU_MAX_ALLOC_PERCENT = 100"으로 설정하면 카드에서 사용할 수있는 6GB의 전체 할당이 허용됩니다. –