는 최근 연산 쉐이더와 함께 놀았 던 나는 내 [numthreads (X, Y, Z)] 파견 통화 설정에 가장 최적의 방법을 결정하기 위해 노력하고있어. 내 데모 창은 800x600이고 픽셀 당 1 개의 스레드를 시작합니다. 2D 텍스처 수정을 수행 중입니다. 너무 무거워서는 안됩니다.다이렉트 최적의 numthreads 설치
Dispatch(ceil(screenWidth/numThreads.x),ceil(screenHeight/numThreads.y),1)
그래서 첫 번째 인스턴스에 대한 그
Dispatch(25,19,1)
이 25에서 실행 될
내 첫 번째 시도는
[numthreads(32,32,1)]
내 파견()를 호출 항상 지정하는 것이 었습니다 -26 fps. 그런 다음 16fps로 실행되는 [numthreads (4,4,1)]로 축소되었습니다. [numthreads (16,16,1)]로 증가 시키면 약 30fps의 좋은 결과가 나타납니다. Y 스레드 그룹 번호 [numthreads (16,8,1)]로 돌리면 32fps로 푸시됩니다.
내 질문은 그래서 가장 효율적으로 GPU를 활용할 수있는 스레드 수를 결정하는 최적의 방법이 없거나 단지 좋은 똑똑한 '시행 착오인가?
FXC 어셈블리 출력을 얻으려면 어떤 컴파일 옵션을 설정해야합니까? 나는/Fc를 시도했지만, 출력 된 파일에는 아무것도 나와있는 정보가 없습니다. 참조 용으로 http://msdn.microsoft.com/en-us/library/windows/desktop/bb509709(v=vs.85).aspx를 사용하고 있습니다. – Valentin
그냥 프로필 (/ T)로 컴파일하면 어셈블리 코드를 볼 수 있습니다. dcl_temps는 레지스터 수를 알려주고 dcl_tgsm_ * 문은 공유 메모리 크기를 알려줍니다. – Lucas