2017-12-30 7 views
2

더 구체적으로 말하자면 실제로 CPU 대신 내 컴퓨터의 GPU에서 실행되는 Android 에뮬레이터에서 OpenCL/Renderscript 코드를 실행하고 싶습니다. 불행히도 저는 AMD CPU와 GPU를 사용하고 있습니다.GPGPU 안드로이드 에뮬레이터 (Renderscript/OpenCL)

나는 AMD가 OpenGL ES를 지원한다는 것을 알고 있으며 (모든 것이 OpenCL을 꽤 많이 지원한다) SDK를 통해 알았지 만, 그 점에 관해서는 - 에뮬레이터에 관해서 찾은 유일한 OpenCL/Renderscript 정보는 어느 쪽도 전혀 작동하지 않거나 Intel CPU를 가지고 있다면 에뮬레이터에 OpenCL을 설치할 수 있지만 CPU 만 사용하게됩니다. 솔직하게 말해서 에뮬레이터가 작동하지 않으면 놀라지 않을 것입니다. 이미이 일을하고 있습니다 - OpenCV는 문제없이 실행되지만 OpenCL-Z는 OpenCL 지원이 없다고 말합니다.)

에뮬레이터에서 내 OS로 명령을 보내고 자동으로 실행하는 방법이 있습니까? 내가 에뮬레이터 인스턴스 2 개를 실행 중일 때 주어진 텍스트 파일을 저장하고 로딩하는 것이 유일한 방법이다.

공식 에뮬레이터에서 지원되는 RenderScript에 대한 언급이 있지만 에뮬레이터는 내 사용 사례가 아니며 내 GPU를 사용하게 될지는 크게 의심됩니다.

Bluestacks 3이 2 개의 인스턴스를 실행할 때 더 많은 리소스를 사용하고 2 번째 인스턴스가 어떤 이유에서든지 adb 명령/root와 잘 작동하지 않기 때문에 지금은 Memu를 사용하고 있습니다. 작동하지만 작동하지 않는다고 생각합니다. 뭐든지해라. 더 빠른 에뮬레이터를 사용하면 2 개의 인스턴스를 실행할 때 도움이 될 것이라고 확신하지만 이상하게도 그들을 비교하는 것은 어렵고 시간이 오래 걸립니다 (특히 각자가 "아니오, 나는 가장 빠릅니다. 막대 그래프! ") 그리고 궁극적으로 내 문제는 OpenCV가 GPU 가속을 얻지 못하는 것 (내 전화에서 훨씬 빨리 실행되기 때문에)과 에뮬레이터의 기본 속도가 아니라고 생각합니다.

AMD의 가상화 기능이 활성화되어 있습니다 (Leomoon 또는 w/e로 확인 됨). Memu의 관리자에서 활성화되어 있습니다. 아마 이것은 이미 장면의 뒤에서 일하고 있습니까? 어느 쪽이든, OpenCV가 사용되면 인스턴스 당 에뮬레이션 비용은 10 % 증가합니다 (60에서 80 % +로 변경).

답변

0

언어 (예 : Python)를 사용하고 ADB를 통해 명령을 보냅니다. 파이썬은 OpenCL과 OpenCV에 연결할 수 있습니다. ADB를 사용하여 스크린 샷을위한 프레임 버퍼를 얻거나 파이썬이 에뮬레이터의 윈도우 렌더링을 캡처 할 수 있습니다.

또는 SocketIO (내 경우 플라스크 소켓 IO 및 Javascript 클라이언트 소켓 IO)를 사용하여 연결할 수 있으며 이러한 방식으로 통신 할 수 있습니다. 에뮬레이터와 실제 장치에서 브라우저를 통해 확인되었습니다. 모든 에뮬레이터에는 네이티브 OS와 통신 할 수있는 포트가 있습니다. 나는 궁극적으로 약간의 복잡한 (2 개의 서버, 다른 언어, LAN상의 ADB보다 낫지는 않지만)이 경로를 선택하지 않았지만 선택 사항입니다. Java (iirc)는 SocketIO도 잘 실행하며, 언어에 익숙하고 Android 기기에서 기본적으로 실행하려는 많은 개발자에게는 괜찮은 옵션 일 수 있습니다.

실상 아픈 느낌이 들며 전화로 타이핑을하면 현재 예와 도움이 부족하다는 사과를드립니다. 다행스럽게도이 문제를 해결할 수있는 시간을 잡을 수는 있지만 솔직히 말해서 현재 내가 목표로 삼고있는 바깥의 사례는 거의 없으며 처음부터 틈새 시장이라고 할 수 있습니다.

관련 문제