saudet commented on issue #17783:
URL: 
https://github.com/apache/incubator-mxnet/issues/17783#issuecomment-740453066


   I don't really want to deal with CI, especially Jenkins, it's a major time 
sink and completely unnecessary with services like GitHub Actions these days, 
but let's see if I can figure out what needs to be done. If I take the 
Jenkinsfile_centos_cpu script for Python, it ends up calling functions from 
here, which basically install environments, runs builds, and executes stuff for 
Python:
   
https://github.com/apache/incubator-mxnet/blob/master/ci/docker/runtime_functions.sh
   Is my understanding correct that these scripts are going to need some 
refactoring to be able to reuse some of that for Java?
   
   If I follow my instincts, I think it's probably going to be easier to look 
at what's been done for the other minor bindings, such as Julia, but I'm not 
seeing anything in the Jenkins files for that one:
   https://github.com/apache/incubator-mxnet/search?q=julia
   How does that one work?
   
   BTW, there's one thing we've neglected to cover. I was under the impression 
that MXNet was using Cython to access the C API for its Python binding, but it 
looks like it's using ctypes. TensorFlow started with SWIG, and now uses 
pybind11, and the closest Java equivalent for those is JavaCPP, that is they 
support C++ by generating additional code for bindings at build time, so it 
makes sense to use JavaCPP in the case of TensorFlow to be able to follow what 
the core developers are doing for Python.
   
   On the other hand, if MXNet uses ctypes for Python, and has no intention of 
changing, the closest equivalent in Java land would be JNA. They are both 
"slow" (partly because of libffi) and support only C APIs, but they can 
dynamically link at runtime without having to build anything, and I'm assuming 
that's why there is no CI for Julia, for example. So, is the plan for Python to 
stick with ctypes? Browsing through 
https://github.com/apache/incubator-mxnet/issues/17097 I guess that's still not 
settled? In my opinion, it would make sense to harmonize the strategy of the 
binding for Java with the one for Python.


----------------------------------------------------------------
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

For queries about this service, please contact Infrastructure at:
[email protected]



---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to