Check the preview of 2nd version of this platform being developed by the open MLCommons taskforce on automation and reproducibility as a free, open-source and technology-agnostic on-prem platform.
program:mobilenets-armcl-opencl (v1.0.0)
Creation date: 2018-02-12
Source: GitHub
cID: b0ac08fe1d3c2615:5a9a6915b20ea1bf

Don't hesitate to get in touch if you encounter any issues or would like to discuss this community project!
Please report if this CK component works: 1  or fails: 0 
Sign up to be notified when artifacts are shared or updated!


This portable workflow is our attempt to provide a common CLI with Python JSON API and a JSON meta description to automatically detect or install required components (models, data sets, libraries, frameworks, tools), and then build, run, validate, benchmark and auto-tune the associated method (program) across diverse models, datasets, compilers, platforms and environments. Our on-going project is to make the onboarding process as simple as possible via this platform. Please check this CK white paper and don't hesitate to contact us if you have suggestions or feedback!
  • Automation framework: CK
  • Development repository: ck-request-asplos18-mobilenets-armcl-opencl
  • Source: GitHub
  • Available command lines:
    • ck run program:mobilenets-armcl-opencl --cmd_key=default (META)
  • Support for host OS: any
  • Support for target OS: android, linux
  • Tags: armcl,benchmark,mobilenet,mobilenets,float,f32,vopencl
  • Template: image classification via ArmCL
  • How to get the stable version via the client:
    pip install cbench
    cb download program:mobilenets-armcl-opencl --version=1.0.0 --all
    ck run program:mobilenets-armcl-opencl
  • How to get the development version:
    pip install ck
    ck pull repo --url=
    ck run program:mobilenets-armcl-opencl

  • CLI and Python API: module:program
  • Dependencies    


    MobileNets-v1 program using Arm Compute Library

    ImageNet classification and benchmarking using ArmCL and MobileNets-v1.


    ArmCL library

    To build this program, you need ArmCL compiled with Graph API:

    $ ck install package:lib-armcl-opencl-18.08 --env.USE_GRAPH=ON --env.USE_NEON=ON --extra_version=-graph

    To build this program for Android you need to embed OpenCL kernels and select the target API as follows:

    $ ck install package:lib-armcl-opencl-18.08 --env.USE_GRAPH=ON --env.USE_NEON=ON --extra_version=-graph \
    --env.USE_EMBEDDED_KERNELS=ON --target_os=android23-arm64 [--env.DEBUG=ON]

    NB: We have to embed kernels when building for Android as OpenCL kernel files are not copied to a remote device.

    NB: Use --target_os=android23-arm64 to build for Android API 23 (v6.0 "Marshmallow") or similar.

    TODO: For some reason only a debug build of the library can be used with this program on some Android devices. (When a release version is used, the program appears to get stuck at the graph preparation stage.)

    Install pretrained and converted weights

    Install one or more of the compatible MobileNet weights packages:

    $ ck install package --tags=mobilenet,weights,npy

    Install ImageNet validation dataset (50,000 images)

    $ ck install package:imagenet-2012-aux
    $ ck install package:imagenet-2012-val


    $ ck compile program:mobilenet-armcl-opencl [--target_os=android23-arm64] 


    $ ck run program:mobilenet-armcl-opencl [--target_os=android23-arm64] 


    $ ck benchmark program:mobilenet-armcl-opencl [--target_os=android23-arm64] [--repetitions=10] [--dvdt_prof]

    Program parameters

    ArmCL parameters

    Define a parameter by passing --env.<NAME>=<VALUE> to ck run program:mobilenets-armcl-opencl. See a common header for more details.


    • DEFAULT: use library defaults (possibly a mix of methods).
    • GEMM: use GEMM-based convolutions.
    • DIRECT: use direct convolutions.
    • WINOGRAD: use Winograd convolutions (supported from v18.08; not applicable to MobileNets).


    • NONE: do not use any tuner (default).
    • DEFAULT: use the default CLTuner (preferred).
    • BIFROST: use the static BifrostTuner (may be deprecated).


    • NCHW (default).
    • NHWC (supported from v18.08).




    Please log in to add your comments!
    If you notice any inapropriate content that should not be here, please report us as soon as possible and we will try to remove it within 48 hours!