Thursday, June 24, 2010

Mobile Applications for Apple, Android, Symbian, Windows

The table below is a list of FREE mobile applications for these platforms:
And = Android
App = Apple
Sym = Symbian
Win = Windows

Please let me know if you know of other good free applications.

In the table, the first 4 columns show which platform the application is for. The mobile application names are given and a brief description for the mobile applications is given unless it is a well know application.




And App Sym Win Mobile App


x 0 0 0 3G Watchdog
x 0 0 0 Picsay - picture editor
x 0 0 0 Backgrounds
x 0 0 0 BBC News
x 0 0 0 Twidroid - twitter app
x 0 0 0 Dolphin Browser
x 0 0 0 Jewels  - game
x 0 0 0 Task Manager
x 0 0 0 Sweetdreams - organise email, phone calls, etc
x 0 0 0 Barcode Scanner
x 0 0 0 Quickpedia
x 0 0 0 Uber Keyboard
x 0 0 0 Locale - using GPS
x 0 0 0 Plink Art - camera for paintings
x 0 0 0 Double Twist - Multimedia player for photo, music, video

x x x x Rebtel - international calling
x x x x Trapster - GPS for speed camera

x x x 0 Shazam - identify songs

x x x 0 Facebook
x x x 0 Tunewiki - media app
x x 0 0 ISP Usage

x x 0 0 Google
x x 0 0 Last.FM
x x 0 0 Photoshop.com Mobile
x x 0 0 Bigoven - cooking recipes
x x 0 0 Around Me - GPS to locate ATMs, shops, etc
x x 0 x Evernote - note taking
x x 0 x Aloqa - using GPS
x 0 x x Wavesecure - security for smartphone




0 x 0 0 Echofon for Twitter
0 x 0 0 Mobyko - transfer phone contacts
0 x 0 0 Flickr - for photos
0 x 0 0 Logitech Touch Mouse
0 x 0 0 Audiboo - audio blogging
0 x 0 0 Units - conversion
0 x 0 0 Metro - public transport
0 x 0 0 Blurb - make phone to banner
0 x 0 0 Ski and Snow Report

0 x 0 0 TVGuide
0 x 0 0 ABC - news service
0 x 0 0 My First Words Lite - educational
0 x 0 0 Wordweb
0 x 0 0 Kindle for Iphone
0 x 0 0 Ebay
0 x 0 0 Domain - real estate search

0 x 0 0 Seadragon - artwork
0 x 0 0 Simplify Music 2 - stream music PC-iPhone
0 x 0 0 Ozweather
0 x 0 0 Currency
0 x 0 0 Filmtrailer
0 x 0 0 Time Magazine
0 x 0 0 Tripit - travel itineraries to iPhone
0 x 0 0 Tip and Split - calculates tips at restaurant
0 x 0 0 Lasoo - shopping app
0 x 0 0 Paypal
0 x 0 0 Gorillacam - camear app
0 x 0 0 Epicurious - cooking recipes


0 0 x 0 Ovi Maps 3
0 x x 0 Fring - phone and video calls via wifi

0 0 x x Opera Mobile browser
0 x x x Skype
0 0 0 x Live Mesh - file synchronisation


Android Apps
Dolphin Browser HD
Amazon Kindle
Google Sky Map
Google Maps
Google Translate
YouTube
Instant Heart Rate
One Note - with access to cloud storage via SkyDrive
http://windowsteamblog.com/windows_live/b/windowslive/archive/2012/02/07/connect-your-android-device-to-skydrive-with-onenote-and-other-apps.aspx

Navigation
How to make use of navigation from FREE apps.
GPS - needed to locate where the device is. Do not need WiFi or internet
Maps - Needed to show the map of where you are and where to go. Google Maps have the ability to cache maps and can be useful later when there is no internet connection.
Navigation - this software calculates where you are to where you want to go.

This site explains the requirements for navigation apps in much greater details.
http://productforums.google.com/forum/#!topic/maps/rkSBMoJD14s

Other navigations and map apps are:
Navit
Route 66 Maps and Navigation,
MapsWithMe

Adobe Flash
Apple does not support Adobe flash on its devices.
The latest Android JellyBean is also dropping its support for Flash.
But it may yet be possible to install flash by yourself. This website seems to have a step to step guide on installing flash for Android devices.
http://www.itpro.co.uk/641869/installing-adobe-flash-on-android-jelly-bean-devices



Fortran Debugging, Threading, Optimising articles

This post is a quick summary to some online articles which I find useful. Only the extract are given below. The full articles can be found in their original sources via their URL.


Threading Fortran applications for parallel performance on multi-core systems

Most processors now come with multiple cores, and future increases in performance are expected to come mostly from increases in core count. Performance sensitive applications that neglect the opportunities presented by additional cores will soon be left behind. This article discusses ways for an existing, serial Fortran application to take advantage of these opportunities on a single, shared memory system with multiple cores. Issues addressed include data layout, thread safety, performance and debugging. Intel provides software tools that can help in the development of robust, parallel applications that scale well.

Levels of Parallelism

1 SIMD instructions
2 Instruction level
3 Threading (usually shared memory)
4 Distributed memory clusters
5 “embarassingly parallel” multiprocessing

Ways to Introduce Threading

1 Threaded libraries, e.g. Intel® MKL
2 Auto-parallelization by the compiler
3 Asynchronous I/O (very specialized; see compiler documentation)
4 Native threads
5 OpenMP

Intel® Math Kernel Library
1 Many components of MKL have threaded versions
2 Link threaded or non-threaded interface
3 Set the number of threads

Example: PARDISO (Parallel Direct Sparse Solver)
1 Solver for large, sparse symmetric and antisymmetric systems of linear equations on shared memory systems
2 For algorithms, see http://www.pardiso-project.org

Auto-parallelization

1 The compiler can thread simple loops automatically
2 Based on the same RTL threading calls as OpenMP:

Conditions for Auto-parallelization

1 Loop count known at entry (no DO WHILE)
2 Loop iterations are independent
3 Enough work to amortize parallel overhead
4 Conditions for OpenMP loops are similar
5 Directives may be used to guide the compiler:

Example: matrix multiply


OPENMP - advantages

1 Standardized API based on compiler directives

OpenMP Programming Model

Fork-Join Parallelism:

1 Master thread spawns a team of threads as needed

Note that Intel’s implementation of OpenMP creates a separate monitor thread in addition to any user threads.


OPENMP – where to thread

1 Start by mapping out high level structure
2 Where does your program spend the most time?
3 Prefer data parallelism
4 Favor coarse grain (high level) parallelism

Example: Square_Charge

1 calculates the electrostatic potential at a series of points in a plane
   due to a uniform square distribution of charge


Openmp: How do threads interact?

1 OpenMP is a shared memory model
2 Unintended sharing of data causes race conditions:
3 To control race conditions…
4 Synchronization is expensive so…

OPENMP – data

1 Identify which data are shared between threads, which need a separate copy for each thread

2 It’s helpful (but not required) to make shared data explicitly global in Modules or common blocks,
   thread private data as local and automatic.

3 Dynamic allocation is OK (malloc, ALLOCATE)

4 Each thread gets its own private stack, but the heap is shared by all threads

OPENMP – data scoping

1 Distinguish lexically explicit parallel regions from the “dynamic extent” (Functions or subroutines called from within an explicit parallel region. These might contain no OpenMP directives or only “orphaned” OpenMP directives)

2 Lexically explicit: !$OMP PARALLEL to !$OMP END PARALLEL


Thread Safety

1 A threadsafe function can be called simultaneously from multiple threads, and still give correct results
2 ifort serial defaults:
3 When compiling with –openmp, default changes

Making a function thread safe

1 With the compiler
2 In source code
3 In either case:
4 OpenMP has various synchronization constructs to protect operations that are potentially unsafe

Thread Safe Libraries

1 The Intel® Math Kernel library is threadsafe
2 The Intel Fortran runtime library has two versions

Performance considerations

1 Start with optimized serial code, vectorized inner loops, etc. (-O3 –xsse4.2 –ipo …)
2 Ensure sufficient parallel work
3 Minimize data sharing between threads
4 Avoid false sharing of cache lines
5 Scheduling options

Timers for threaded apps

1 The Fortran standard timer CPU_TIME returns “processor time”
2 The Fortran intrinsic subroutine SYSTEM_CLOCK returns data from the real time clock
3 dclock (Intel-specific function) can also be used

Thread Affinity Interface

1 Allows OpenMP threads to be bound to physical or logical cores

NUMA considerations

1 Want memory allocated “close” to where it will be used
2 Remember to set KMP_AFFINITY


Common problems

1 Insufficient stack size
2 For whole program (shared + local data):
3 For individual thread (thread local data only)

Tips for Debugging OpenMP apps

1 Run with OMP_NUM_THREADS=1
2 Build with -openmp-stubs -auto
3 If works without –auto, implicates changed memory model
4 If debugging with PRINT statements
5 Debug with –O0 –openmp

Floating-Point Reproducibility

1 Runs of the same executable with different numbers of threads may give slightly different answers
2 Floating point reductions are still not strictly reproducible in OpenMP, even for same number of threads

Intel-specific Environment Variables

1 KMP_SETTINGS = 0 | 1
2 KMP_VERSION = off | on
3 KMP_LIBRARY = turnaround | throughput | serial
4 KMP_BLOCKTIME
5 KMP_AFFINITY (See main documentation for full API)
6 KMP_MONITOR_STACKSIZE
7 KMP_CPUINFO_FILE

Tools for Debugging OpenMP apps

1 The compiler source checker (‘parallel lint’)
2 Updated Intel Parallel Debugger, idb (Linux) and Intel Parallel Debugger Extension (on Windows)

Intel® Thread Checker
1 Unified set of tools that pinpoint hard-to-find errors in multi-threaded applications
2 Display data at the Linux command line or via a Windows GUI

Intel® Thread Profiler
1 Features & Benefits

Summary
Intel software tools provide extensive support for threading applications to take advantage of multi-core architectures.
Advice and background information are provided for a variety of issues that may arise when threading a Fortran application.





Tips for Debugging Run-time Failures in Applications Built with the Intel(R) Fortran Compiler

Your app builds successfully, but crashes at runtime. What Next? Try some useful Intel compiler diagnostic options before launching into lengthy debugger sessions.

1) Build with /traceback (Windows*) or –traceback (Linux* or Mac OS* X).

2) Build with /gen-interfaces /warn:interfaces (Windows) or –gen-interfaces –warn interfaces (Linux or Mac OS X).

3) Try building and running with /check (Windows) or –check (Linux and Mac OS X).

4) Build your program, including the main routine, with /fpe:0 (Windows) or –fpe0 (Linux or Mac OS X).

5) If your application fails early on with a segmentation fault, you might be exceeding the default maximum stack size. On Linux or Mac OS X, try setting
ulimit –s unlimited (bash) or limit stacksize unlimited (C shell)

6) Use the compiler provided interfaces. If you call run-time library functions, build with
      USE IFLPORT
If you call OpenMP run-time library functions, compile with
      USE OMP_LIB
If you call functions from MKL or IMSL*, USE the corresponding module(s).

7) Look carefully for any error messages in your output log file.

8) If you are building an application using OpenMP*, check out the advice under “Tips for Debugging OpenMP Apps” at http://software.intel.com/en-us/articles/threading-fortran-applications-for-parallel-performance-on-multi-core-systems/


9) For Windows, see the section Building Applications / Debugging in the main compiler documentation. For Linux or Mac OS X, see the documentation for the Intel(R) Debugger (idb).