Building OpenCL applications with NDK? What phones can support it? - Android Software/Hacking General [Developers Only]

Does anyone know what phones support OpenCL so that I could build OpenCL applications with NDK for android?
In particular I am interested in speeding up SQLite with something that was done in this blog:
https://fullshovel.wordpress.com/2014/03/19/opencl-accelerated-sqlite-on-arm/
At the moment I have rooted OnePlus One and old Nexus 4.

As far as I know, you might be able to use the Nexus 4 as long as you properly install the OpenCL driver.
Source:
http://forum.xda-developers.com/goo...u-drivers-nexus-5-compatible-android-t2629123
As for developing the application, I'm not sure yet. My guess is that you'd be left to cross-compile then link the .so file, or whatever way that root programs are compiled as command line executables.

Related

[Q] Running a C++ binary

So this is probably a silly question.
I have this rather complicated app that would be a heck of a lot of work to convert to Java.
It runs in the command line and works fine in Linux.
Trying to run it fails, but x86 bytecode probably isn't very ARM friendly.
Is there a specific way I need to compile the application?
Is it even possible to run it from a console emulator?
Thanks.
Try Android NDK
I am also new to Android Dev ( 15+ years Linux, 10+ years Java, etc.)
I am not an expert but for your purposes you need the "Android NDK" in addition to the "Android SDK" that most developers utilize.
"The Android NDK is a toolset that lets you embed components that make use of native code in your Android applications.
Android applications run in the Dalvik virtual machine. The NDK allows you to implement parts of your applications using native-code languages such as C and C++. "
Basically the tools are needed to cross compile C++ source code for the target ARM environment.
I am prevented from posting the download URL for some bizarre reason, but it is listed under "Native Development Tools" on the left side of the web page for the standard "Android SDK" download.
Yeah that's because you are new. It's a system to prevent spammers from posting URLs.
When you have a couple of posts the restriction will disappear
Anyway; found it, seems to be what I'm looking for.
I'll check it out in the morning.
Big thanks
Dmitry Moskalchukhas written a patch for the ndk to better support c++ see crytax dot net there are posts on google groups android-ndk talking about it
Thxs for the info. I was aware that the NDK did not include all of the libs that desktop Linux/UNIX developers expect. The suggested patched version adds the STL libs back in.
Sent from my PC36100 using XDA App
There are A LOT of libraries missing
I guess I'll just keep it a hosted app.
Thanks for all the input

Why so few Android apps compiled for MIPS?

This is something that is driving me crazy, shouldt be MIPS Android SDK and NDK be compatible with any source maded for the ARM version?
First thing i noticed with this Ainol Novo 7 Basic was that, the small amount of compatible apps, none of the better apps are compatible.
No: Netflix, Skype, Android Terminal Emulator, MX video Player, Chainfire3D, any mame32/nes emu, a working barcode reader, connectbot, adosbox/qemu, opera or any other browser. and the list goes on.
I wonder why, i trought devs will want the larger amount of users as posible.
For the record, i just got Android Terminal Emulator working in my Novo 7 Basic, i had to:
1) Download Term source code
2) Download MIPS Android SDK, NDK, Apache ANT, Eclipse with ADL, cgywin (to compile NDK libs)
3) Import Term project to eclipse
4) change the target build to android-12
5) change Aplication.mk to "APP_ABI := mips mips-r2"
6) build ndk-libs for the app
7) build the project with eclipse
And i know nothing about programing for android, just c/c++
Best guess that anyone will probably give you is that the majority of devices out there running Android are ARM based, but as that changes, the number and quality of available apps should improve.
There is a HUGE obstacle to overcome however. Not many people are going to buy a device today based on what might run on it months from now, especially when there are devices out there that will run it now, and many of those that do purchase a MIPS based device consider it a mistake and end up returning it.
It is not possible to offer two different version on the market and i don't think it is possible to restrict the apps to a specific architecture.
Are the number of MIPS devices really rising? The android market doesn't really seem to be ready for that. It would mean even more app versions devs would have to consider.
Which apps work and which don't?
Maybe those using native code, compiled with NDK don't work, as those routines are compiled specificly for ARM.
Don't take my word for it though, just some thoughts.
its not possible to get 2 different versions on the market.
Rumor has it that the problem is frequently a development oversight and that it's related to omitting some important MIPS related files from the package build.
I imagine that it can also be related to poor programming practices and also programming for optimized code.
~~ Sent from my Velocity Micro Cruz PT701/T105 via Tapatalk ~~
As far as I know, Market supports device specific apk's nowadays, which would make it possible to have an mips apk...
http://developer.android.com/guide/market/publishing/multiple-apks.html
Altough the proccess is not trivial, it is not that difficult either, just minor changes to the manifest and filter the apk for Native Platform...
Also, it would be possible to compile it for all devices that the current NDK supports, by using the latest revision of NDK (as of November 2011):
http://developer.android.com/sdk/ndk/index.html#overview
You just need to add:
APP_ABI := all
Click to expand...
Click to collapse
to the makefile and it should now be compatible with all processor architectures that NDK supports....
So, now there are means to easily support different processor architectures, but, don't expect quick adoption of it, as, unfortunately, this depends entirely upon developer will to change some of its project settings and/or publishing way (it is entirely possible, now, to have a single apk for all platforms)...
Unfortunately, right now, and I would dare to say, in the next 6 - 8 Months, I would not expect this to change much... Altough the official NDK has support for multiple devices, it still doesn't incorporate the MIPS abi, which is not official, and thus, it is not possible to declare that an APK for a native MIPS device as well...
Hopefully MIPS devices will grab a nice piece of the Android devices and then "force" Google to officially support those devices. I believe that it is possible to grab the latest unoficial NDK and use it with APP_ABI all and publish it to the Market, but, as of today, is mostly something recent and that few (if any) developers support (remember, this possibility came with November's NDK, I'm not even sure if MIPs NDK is already up to date with Google's November NDK), so, I would dare to say, MIPS devices are not in a good position right now (even x86 devices, which have official support, are not...).
I have a MIPS based tablet named "MIDI Japan MD-785IP" that is quite nice but is making me sad with the lack of some softwares and in special, lack of ROMs to it. Apparently I am the only person in the internet that have one
shivansps said:
This is something that is driving me crazy, shouldt be MIPS Android SDK and NDK be compatible with any source maded for the ARM version?
...
For the record, i just got Android Terminal Emulator working in my Novo 7 Basic, i had to:
...
Click to expand...
Click to collapse
Hello,
Have you shared that MIPS compatible Android Terminal Emulator?
Thank you
Sure... and here is connectbot too.
Ive attemped to recompile adosbox too but the source code and makefiles are just a big mess and no documentation provided.
And that is another problem, poor documentation in open source projects.
BTW, Market has to have some way to know if a app is for arm or mips, since market on basic only shows up compatible apps.
Also, its no enoght to just incluide the "mips" folder along with "armabi" with all mips compiled .so files inside the libs folder? because is that all what it takes, unless the app is using binaries.
And im agree that google has most of the fault for not incluiding mips supprt in his NDK, the mips one can compile for both.
I wonder what will happen when intel medfield will came out...
I am in an even worse position - I bought 2 NOVO7Paladins - one for the g/f. I had to get one for myself, because I know I will be 1st line support
So, I have a MIPS cpu (with reduced software availability) and also ICS which further reduces app compatibility.
Apps which I consider essential (Samba server, VNC Server, Angry Birds Seasons....) are not available, so l'm currently installing eclipse, JDK, SDK, NDK on a linux box to try to rebuild stuff - it has been many years since I last had to get my hands dirty with code.
I know I have a steep learning curve ahead, but I'm sure it will be many months before there is a significant increase in app availability. I understand though, that if developers have written native code for ARM, they won't be in a hurry to port that to a minority cpu. It is way easier for new apps to be built with different architectures in mind.
Thanks Shivansps, I had been looking for a terminal - I had given up and was trying to get telnet working - a last restort. It was either that or carry a laptop around with me to use ADB
Now, all I need is to get the MIPS ABI to appear in Eclipse AVD setup... (oh, and learn how to code for android )
i dont use Eclipse or SDK myselft any longer, what i do is just recompile shared libs with mips NDK and include the new "mips" folder intro the libs folder of the original .apk file, then re-sign the apk with one click signer.
MapsWithMe for MIPS and x86
maersi said:
I am in an even worse position - I bought 2 NOVO7Paladins - one for the g/f. I had to get one for myself, because I know I will be 1st line support
Click to expand...
Click to collapse
Hi! Do you still have MIPS android device?
Would you please test MapsWithMe on it? It's offline world maps based on OpenStreetMap.
We've built apk for mips and x86 architectures but doesn't have any devices to check if it works.
Apk is available here: dl.dropbox.com/u/24013616/MapsWithMe-203-mips-x86-120502.apk
Cheers,
Alex Zolotarev
MapsWithMe Team
AlexanderZolotarev said:
Hi! Do you still have MIPS android device?
Would you please test MapsWithMe on it? It's offline world maps based on OpenStreetMap.
We've built apk for mips and x86 architectures but doesn't have any devices to check if it works.
Apk is available here: dl.dropbox.com/u/24013616/MapsWithMe-203-mips-x86-120502.apk
Cheers,
Alex Zolotarev
MapsWithMe Team
Click to expand...
Click to collapse
Yes, I still have a mips tablet, but it hasn't gps. Do you want me to check it?
Enviado desde mi ThL W8 usando Tapatalk 2

[Q] how to recompile the ARM portion for x86

Hi Guys,
i have seen the solution in http://http://forum.xda-developers.com/showthread.php?t=1299134&highlight=developer+guide,but now i want to deploy it on my emulator.so i need to compiler the dll for x86.can i do this ? and now,i wont use some illegal API.so is this easy?
thank you!
There's no interop-unlock or full-unlock for the emulator, so your app will have extremely limited permissions. If that's acceptable, then yeah, you could try using the compiler that comes with the CE6 or CE7 Platform Builder downloads from Microsoft. I believe that will allow you to target x86. The actual platform builder is intended to build the entire OS, including the kernel and such, but it's quite capabile of compiling user-space DLLs too.
did anyone ever achieve such pleasure?
GoodDayToDie said:
There's no interop-unlock or full-unlock for the emulator, so your app will have extremely limited permissions. If that's acceptable, then yeah, you could try using the compiler that comes with the CE6 or CE7 Platform Builder downloads from Microsoft. I believe that will allow you to target x86. The actual platform builder is intended to build the entire OS, including the kernel and such, but it's quite capabile of compiling user-space DLLs too.
Click to expand...
Click to collapse
thank you! but did you ever test it?or can you give me some more detailed suggest?
I haven't personally tried (why test on the very limited emulator? I have a phone...) but other people have said it works using the cc.exe (C compiler) from the platform builder.

GCC make for Android?

Hello everyone. I'm looking for a way to use gcc make natively on Android. I know would supposedly be slow and heat up my cpu, but I don't get enough time on my computer to develop via a cross compiler.
Something like this would be ideal:
http://forum.xda-developers.com/showthread.php?t=1645182
I'd post there asking about a download link but the forums won't let me until I've made ten posts.
If anyone has any ideas how to get this working I'd love to hear them!
I found a gcc binary here:
rwiki.sciviews.org/doku.php?id=getting-started:installation:android
I don't know what version it us but it seems to run. I think I will try compiling gcc from scratch.
Can bionic libc be replaced with the full version of libc? Or would that break things?
Next up I think I'll try to get bash on this phone.
I'll post an update when I have gcc fully working.
I've found an app that does most of what I needed, called Terminal IDE on the play store. I now have a mostly functional development environment on my phone.
Next up, some of the open source software I want to port uses autoreconf, which is part of automake. Unfortunately, automake needs access to /tmp/ during configure, which doesn't exist. I guess I'll just have to edit the configure file on my PC and point it to a path that's accessible.
Does anyone know of an automake binary for Android?

[C++] Compiling OpenCL application to native ARM ELF using Debian

Hello,
I am posting to begin a thread regarding the native compilation and execution of OpenCL code on an ARM Android device, namely the HTC One M8.
I have used the app Linux Deploy to install a Debian desktop environment alongside Android, sharing the same Linux kernel but supplying different runtime libraries. Additionally, I have installed gcc/g++, Code::Blocks, and the OpenCL ICD and header files necessary to compile a native binary.
My intent is to continue developing a graphics render algorithm, but if I can get a working Android binary from g++ on a GNU toolchain, I would be happy to share generalized source code so that others can do the same with some simplicity.
Currently, I have success compiling a binary with shared libraries for GNU/Linux, but it does not detect the OpenCL devices on my system. I tried statically linking my application, but it refuses to link OpenCL statically.
The way I see it, there are two ways to solve my problem:
1) I assume Debian cannot see devices due to a driver issue, but I could be wrong, and I don't believe appropriate GNU drivers exist at this time. (Please correct me in a response if you know this to be false.) I have talked briefly with some of the folks from the Freedreno project, and it seems the OpenCL compiler is the biggest missing piece between the driver and the hardware. Unfortunately, I do not know if a working driver would even solve the issue in my case.
2) Compile binary with Android shared libraries. This may be most easily done with Eclipse, but I prefer Code::Blocks, so if the libraries could be linked in, then it may be trivial to change IDEs. I suppose it depends entirely on how the NDK handles compilation.
Option 2 is most likely the best course of action. I intend to publish my progress in milestones. Discuss.
XDA:DevDB Information
PLoW, Device Specific App for the Verizon HTC One (M8)
Contributors
Agenthex, agenthex
Version Information
Status: Testing
Created 2015-01-03
Last Updated 2015-01-03
Answer to your question = Mint 17.1 Works for me and this should be in general as this has nothing that you created.

Categories

Resources