現今世界中,數量極為龐大的Android設備可以說是一項最具影響力的系統。Google最近的Android版本中更是推出了Renderscript架構。 Renderscript為Android目前唯一官方的運算架構,提供了非常良好的效能與可攜性。但是如果要移植現有已經存在的其他運算架構例如OpenCL的程式到Android上,則必須要花費時間手動的改寫成Renderscript才可以享有相同的平行運算效果。 因此,我們提出了O2render系統讓現存的OpenCL程式可以自動的轉成Renderscript程式,藉此運行於Android系統之上。我們分析了OpenCL和Renderscript根本上的差異,並且藉由 low-level virtual machine(LLVM)的前端,Clang,來實作一個OpenCL到Renderscript的轉換器。
400-million Android devices are arguably world`s most impactful real-time multimedia systems. Google introduced Renderscript language and runtime in recent Android releases. Renderscript delivers performance and portability without losing usability. However, it is difficult to reuse software written in existing compute languages such as OpenCL. Thus, we develop the O2render system to enable OpenCL programs on Android devices. We analyze fundamental differences between OpenCL and Renderscript, and present our design of a translator between them using low-level virtual machine (LLVM). We extend LLVM’s frontend, Clang, and show that we achieve about the same performance in Renderscript with minimal translation overhead.