Code Monkey home page Code Monkey logo

cnn-on-flash's People

Contributors

gh-jo avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

cnn-on-flash's Issues

Expand the coverage of the memory budget

Now the memory budget only includes submatrices allocated on memory.
For more general usage, it is necessary to include total memory usage of the process that executes gemm in the memory budget.

Add ARM GPU support

Currently, on-flash gemm only support ARM CPU.

GPU support is needed for usage in various environments and performance comparison between processors.

Introducing CNN-on-flash to ArmCL's layers

CNN-on-flash seems to support only GEMM operators.

However, real machine learning apps usually use layer-wise operators; such as convolution layer, fully-connected layer.

If you want to apply it to convolution layer, supporting for im2col is imperative.

Need partial im2col operation

We need to add partial im2col operation.

It is necessary to operate im2col on input tensor for convolution using gemm.
im2col should be done while a partial matrix is in memory and the other parts are in storage.

Unused-variable warnings ignore GLOG

While building this project, warnings like following example occur many times.

/home/odroid/Desktop/test-cof/include/pointers/allocator.h: In instantiation of ‘void flash::unmap_file(flash::flash_ptr<X>) [with T = float]’:
/home/odroid/Desktop/test-cof/drivers/gemm.cpp:72:26:   required from here
/home/odroid/Desktop/test-cof/include/pointers/allocator.h:49:9: warning: unused variable ‘ret’ [-Wunused-variable]
     int ret = munmap(

When I look into the files that make warnings, 'unused variables' are actually used in GLOG sentences but not counted as used.
This bothers us when we modify and debug the codes. It should be solved.

Infinite loop when budget is short

When I set PROGRAM_BUDGET less than the size of three submatrices, it never ends but continues the loop.

This is not proper behavior because failed execution should be informed explicitly and terminated.

So it is necessary to add the functionality to judge if the budget is not enough and if termination is needed.

Partial reshape operation

Convolution implementation using gemm needs weight filters of a convolutional layer to be reshaped.
To reduce the maximum memory usage, reshape procedure should progress while partial matrices are loaded from storage and reshaped sequentially, not the whole matrix loaded at the same time.

So I propose to make partial reshape operation.

Detailed documentation

Readme is simply telling how to build and how to execute GEMM.

It would be good to add an explanation about methodology and example case evaluation results.

Peak memory usage

Hi,
I want to see memory usage when performing GEMM operation using CNN-on-flash.

How can I print out this?

Performance comparison to in-memory gemm

I've checked your response to the last issue about evaluation.

You plotted memory usages and inference times of only on-flash GEMM, but not in-memory GEMM.

It will be meaningful to compare the execution time between in-memory and on-flash GEMM.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.