Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Dnn ops #734

Draft
wants to merge 20 commits into
base: main
Choose a base branch
from
Draft

Dnn ops #734

wants to merge 20 commits into from

Conversation

corepointer
Copy link
Collaborator

This is a dirty and buggy snapshot of the progress on integrating all the needed ops for DNN.

Also contains fixes for some of the bugs :)

  • CUDA version of DNN ops mostly implemented (some backward passes missing)
  • CUDA convolution keeps crashing :-/
  • Script level alternatives for the operations are there to replace the CUDA ops
  • Pooling script level operation is crashing :-/
  • Contains some implementations for shape/type inference but this is not in a solid state
  • In some locations of the scripts there needed to be a type indicator to make it work. So all these ops rely on atm, which might not be ideal.
  • Contains an example with a LeNet implementation for MNIST character classification (ported from SystemDS)

@corepointer
Copy link
Collaborator Author

This PR is now based on #758

* This commit introduces the meta data object to the CSR data type

* Memory pinning

To prevent excessive allocation ID lookups in the hot path when using --vec, this change "pins" memory by allocation type of previous accesses.
Due to the use of ptr to local var the distributed (GRPC_SYNC) mode crashed in test cases. This patch fixes this by using std::unique_ptr appropriately.
batch_norm2d shape & type inference

affine shape/type inference

softmax namespace, shape & type inference

"fix" shape inference of some dnn ops by returning -1 instead of trying to calculate proper dimensions based on data that is sometimes just not there :-/

* getShape(getInput()) returns dimensions when input comes from readMatrix() but not if it's a rand() ?!
* getInputHeight(), getInputWidth() does not return proper dimensions
This commit adds the necessary code changes to call CUDNN's activation backward function with ReLU activation type. No tests yet.
Contains ports from SystemDS
* script level alternatives for pooling, convolution, etc
* wrapper scripts for DAPHNE builtins (conv2d() -> conv2d.forward(), etc)
* script path in default UserConfig.json
currently supported: relu & conv2d

tests are failing atm
This change makes the DaphneContext object global to avoid creation/desctruction in every UDF. The global context is passed by int64 casted pointer through the UserConfig.
agg all cuda launch config bugfix

fix allagg cuda launch configs (now looping)

aggall log
Added more operators to apply elementwise
The handling of the 1x1 matrix case should not be needed anymore once this is fixed in the compiler to call EwBinaryObjSca
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Accelerators feature missing/requested features
Projects
None yet
Development

Successfully merging this pull request may close these issues.

1 participant