Android memory bandwidth benchmark

codedivine

Regular
My second benchmark for Android is now also live on Google Play here. It is a simple memory bandwidth test based upon the classic STREAM benchmark. I made some modifications, such as using pthreads instead of OpenMP.

For best performance, try using more threads than number of cores.

On a Snapdragon S3 dual-core, I get about 1.5 GB/s of copy bandwidth.

Link to app: https://play.google.com/store/apps/details?id=org.codedivine.rgbenchbw

Please give your feedback. This app is not 100% consistent in different runs, but it is still good for getting a good ballpark estimate :smile:
 
Last edited by a moderator:
AT&T One X

4 threads:
Copy 2274 MB/s
Scale 2375 MB/s
Add 2440 MB/s
Triad 2476 MB/s

Less than 4 threads gives very inconsistent results between runs, usually lower than the above, and for 8 threads the result is about the same as 4 threads.
 
AT&T One X

4 threads:
Copy 2274 MB/s
Scale 2375 MB/s
Add 2440 MB/s
Triad 2476 MB/s

Less than 4 threads gives very inconsistent results between runs, usually lower than the above, and for 8 threads the result is about the same as 4 threads.

Thanks! I guess that's the Snapdragon S4?
Oh btw I have just pushed a v1.1 of the benchmark to the market. It is the same benchmark code, but just adds an "Auto mode" to the UI that automatically tests all thread configs and just displays results for the one with best copy bandwidth :smile:
 
Pushing an update to the market that does slight changes to the kernel, which I *think* should reduce variability a little bit. The update should show up as v1.2 in an hour or so.

Also, for reference purposes, I took my C code, added a bit of code to convert it into a Linux command line app and measured performance. On my Phenom II X4 desktop, which has 17GB/s of bandwidth theoretically, I got 9 GB/s of copy bandwidth peak using my benchmark.

This was almost the same as that reported by the standard STREAM benchmark using default values so I suppose my benchmark does do its job.
 
Are you planning to add more bandwidth tests to try and probe what's capable under a number of different memory access scenarios? STREAM is fairly narrow in its assessment.
 
Are you planning to add more bandwidth tests to try and probe what's capable under a number of different memory access scenarios? STREAM is fairly narrow in its assessment.

Not sure Rys. What would you recommend? People also like using LMBench for testing latency, but that seems like a lot of work to port :p

How does this factor in cache sizes ?... STREAM allows you to configure array sizes.

Good question. Current version is set to use 8MB arrays (3 of them, so total 24MB usage). I think I can provide that as a user-configurable setting in the application.
 
Some short results collected from the webs, take with grain of salt:

1. Nexus 7: About 1.3 GB/s of peak copy bandwidth reported. Much lower than what I was expecting.

2. Atrix (Tegra 2): About 900-1GB/s of peak copy bandwidth.

3. Totally unconfirmed: Exynos 4 Quad about 2.3 GB/s of peak copy bandwidth.
 
Posted major update. Now I have added a simple "memcpy" benchmark in addition to STREAM based ones. The app by default now runs memcpy and you should just "Misc" if you want to test STREAM.

On my phone, on memcpy I am getting about 1.8GB/s on memcpy compared to the lower 1.5GB/s I was getting on the STREAM based benches.

If you have 10-15 seconds, please do try it out and post your results. Thanks :)
 
Last edited by a moderator:
A user with Snapdragon S4 reported almost 5GB/s on the memcpy benchmark ("simple" under the new app). :oops:

Can anyone with a S4 confirm the result?
 
Nook Color running Cyanogenmod 7.2
1100 MHz conservative gov

719MB/s simple

Misc
498.9MB/s copy
511.4MB/s scale
465.3MB/s add
438.8MB/s triad

I did 3 runs of both test modes and results were pretty close each time.
 
Can you provide an APK version? I've got some devices here that I can't sign in to the Play store with....
 
A user with Snapdragon S4 reported almost 5GB/s on the memcpy benchmark ("simple" under the new app). :oops:

Can anyone with a S4 confirm the result?

My result is from a S4. Maybe that was a S4 Pro? Oppo Finder 5, Optimus G and some other top-end smartphones are coming with with the quad-core Krait + Adreno 320, and maybe that chip has bandwidth improvements.
 
Can you provide an APK version? I've got some devices here that I can't sign in to the Play store with....

PMed.

My result is from a S4. Maybe that was a S4 Pro? Oppo Finder 5, Optimus G and some other top-end smartphones are coming with with the quad-core Krait + Adreno 320, and maybe that chip has bandwidth improvements.

No, I had updated the test after you ran them thus the results are different. Essentially, I have added a simple "memcpy" test which simply benches the "memcpy" call in C. The results you had are from my STREAM variant. Apparently there is a big difference on S4, no idea why.
 
Simple 5376.8 (this varies quite a bit, run to run).
Copy 3496.5
Scale 3674.6
Add 4031.2
Triad 4055.5

Qualcomm APQ8064, no power saving.
 
OMAP 4460 (Huawei Ascend P1): Results are not consistent with simple/auto. On average it yields ~1250 MB/s, but on a couple of runs I've seen as high as 1370 MB/s and as low as 1120 MB/s. Power saving on or off (which seems to impact max CPU speed) makes no discernible difference.
 
LG Optimus 2X (Tegra 2):
Simple, auto: 1198.0 MB/s

Misc, auto:
Copy: 945.2 - 1054 MB/s
Scale: 891.5 - 1025 MB/s
Add: 725.3 - 834 MB/s
Triad: 711.1- 828 MB/s


Cheers
 
Last edited by a moderator:
Back
Top