How to start development: Shield Tablet K1 for GPGPU and OpenCV?

Hi guys,

I need little help with setting up environment for GPGPU and OpenCV programming for Shield Tablet K1.

At the beginning I want to describe my programming experience. I’m C#.NET, VB.NET, PHP developer. I have a bit of x86/x64 Assembler experience. But in C++, Java and Android I’m newbie. I wrote 2 Android applications in Java (in Android Studio IDE) and somehow I managed to finish one “production” application with OpenCV in VC++.

I want to use Tegra for computer vision (with OpenCV?) and GPGPU computing (neural networks). I’m totally not interested in game development.

I have read some NVidia papers and watched some videos about CUDA, I feel I understand blocks, threads and warps and how parallelism works in NVidia GPUs, but… I have no idea how can I start writing the code and make use of Tegra on Android tablet.

Question 1

For Android programming I’m using Android Studio (based on IntelliJ IDE). I used to it. Everything just works for me in Android Studio. I have tried to use Nvidia addon for Visual Studio, but:

  • I’m too inexperienced Android and C++ programmer: intellisense (in current version?) is not working and I’m too unpatient to learn all classes/libraries or check documentation everytime
  • when I create new project - I can’t even compile it because there is no activity and I don’t know how to create it, because there is no “Activity” item in “Add new…” menu

I hate Eclipse. After few years of using Visual Studio for C#, NetBeans for PHP and little experience with IntelliJ - using Eclipse reminds me Monty Python and “Ministry of Silly Walks” sketch.

Is there any way to use CUDA libraries and OpenCV with Android Studio, where everything works for me? I don’t need profiler and debugger at this moment.

Question 2

Can I make use of OpenCV with Tegra and libraries like cuDNN in Java? I’m afraid that writing whole Android application from nothing in C++ will take a lot of time in my case. I already know how to write typical Android app. I want to use typical Android UI, just add tegra power “under the hood”.

Question 3

If I’m not ready to develop something for Tegra on Android - what should I learn before? Maybe shall I learn Android NDK first?