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

RubyGrant 2020 related work #57

Open
wants to merge 4 commits into
base: master
Choose a base branch
from
Open

Conversation

Uditgulati
Copy link
Member

  • Added the nmatrix_buffer struct
  • Used buffer in slicing
  • Used TypedData_*_Struct
  • Fixed some warnings

The way buffer is used in slicing is that when slicing is called, instead of copying the elements into new nmatrix struct, a nmatrix_buffer struct is created and just the elements pointer to used to create the pointer of buffer matrix which removes the copying of elements and hence preventing a copy.

Also, nmatrix_buffer points to the original matrix and uses the original shape to create strides which are used in conjunction with buffer elements starting pointer to correctly access the sliced matrix elements from the original matrix elements array. This makes the sliced matrix as a view to the original matrix and one can change the sliced matrix elements and same change can be seen in the original matrix elements.

One can also create a view by doing a slice on a sliced matrix and internally the nmatrix_buffer would be created from nmatrix_buffer of given sliced matrix and the original matrix struct which is accessed from the given nmatrix_buffer.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

1 participant