2013-06-11 3 views
5

I Renderscript의 디자인은 내가 실행중인 프로세서에 대한 사실을 모호하게하는 것이지만, GPU 컴퓨팅 가능 장치에서 코드를 작성하는 방법은 없습니다. , Nexus 10), 일까요? 스크립트의 기능이 GPU에서 실행 중임을 알리는 방법이 있습니까?Renderscript와 GPU

www.leapconf.com/downloads/LihuaZhang-MulticoreWare.pdf는 전역을 사용하지 않으면 재귀를 사용하지 않으며 커널의 rsDebug를 호출하지 않는다고 제안합니다. GPU; 그 맞습니까?

사람들이 어떻게 든 확인한 짧은 스크립트가 순수한 계산 기반 작업 (예 : 그래픽 작업 없음)으로 gpu에서 실행되는 것을보고 싶습니다.

+0

이 질문은 실제로 안드로이드가 어두운 곳에서 너무 많은 것들을 남겨두고 있다고 생각하므로 더 많은 upvotes가 필요합니다. – rsp1984

답변

2

일반적으로 Nexus 10의 동작에 관한 주장은 정확합니다. CPU가 함수를 실행하게하는 RS 런타임 함수 중 일부 (예 : rsGetAllocation을 호출하지 않음) 호출에 대한 몇 가지 다른 사항이 있습니다. 그러나 할당 또는 바인딩 된 포인터가 아닌 전역 변수는 4.2에서 괜찮다고 생각합니다.

향후 이러한 제약이 많이 완화 될 것입니다 (글로벌이 큰 것임).

커널이 실행되는 위치를 보면 다음과 같이 4.2로 해결할 수있는 것이 많지 않습니다. 우리는 아직 그렇게 할 강력한 이유를 보지 못했지만 이것이 정말로 중요하다면 systrace와 같은 것을 통해 너무 어려움없이 추가 할 수있는 것입니다. "GPU에서 코드가 더 빨리 실행된다고 생각하는 것"을 넘어서서 당신이 상처를받는 이유를 설명 할 수 있다면 우리에게 불평 해주십시오.

ImageProcessing (fw/base/tests/RenderScriptTests/ImageProcessing /)의 Mandelbrot 구현이 4.2의 GPU에서 실행되는 것을 확신합니다.

+0

Tim, 원래 질문에 대한 Android 4.3의 상태에 대한 업데이트를 제공 할 수 있습니까? – rsp1984

+1

전역 할당에 액세스하고 GetElementAt 및 SetElementAt를 사용해도 Nexus 10에서 4.3을 실행하는 대부분의 상황에서 커널에서 CPU가 실행되지 않습니다. USAGE_SHARED에는 몇 가지 제한 사항이 있지만 CPU로 떨어지는 것보다 더 많은 잠재적 인 복사 오버 헤드가 있습니다. –

+0

요소 (또는 스레드)가 인접 요소 데이터에 액세스하면 어떻게됩니까? 그것은 gpu에서 실행됩니까? –