ruby-numo / numo-narray

Ruby/Numo::NArray - New NArray class library
http://ruby-numo.github.io/narray/
BSD 3-Clause "New" or "Revised" License
413 stars 41 forks source link

Using narray with C extension #202

Open ghost opened 2 years ago

ghost commented 2 years ago

Is it possible to use the custom data structure of numo-narray with my own C extension? Or do I have to re-implement some of the code again?

kojix2 commented 2 years ago

I think this is a very important point.

Documentation on the internal structure of numo-narray is lacking, and I think it would be a hard task to create a C extension. I am not a C professional, so I cannot answer this issue directly. However, I can help a little by writing some helpful information.

Here are three notable people who have created a number of C extensions using numo-narray.I think their code is the best documentation currently available for creating C extensions with numo-narray.

@yoshoku mainly uses numo-narray as a machine learning library, but he has also created a library for reading and exporting images like magro. @ankane has created many famous libraries, and some of his gems use C++ and numo-narray for data processing. @Himeyama has recently uploaded a number of interesting C extension libraries to github that use numo-narray and CUDA.

I think reading their code is a shortcut to building C extensions.

(With the help of DeepL)

kojix2 commented 2 years ago

For a more short answer, it is possible to use the numo-narray data structure in your own C extension. Add the code to look for narray.h in extconf.rb, and then include it in your C source.

#include <numo/narray.h>

There are many ways to write extconf.rb to search narray.h, but ankane's is concise.