* [feature] Add ChunkedArray to SWIG
* Add ChunkedArray
* Add ChunkedArray_API_extensions.i
* Add SWIG class wrappers
* Address some review comments
* Fix linting issues
* Move test to tests/test_ChunkedArray_manually.cpp
* Add test note
* Move ChunkedArray to include/LightGBM/utils/
* Declare more explicit types of ChunkedArray in the SWIG API.
* Port ChunkedArray tests to googletest
* Please C++ linter
* Address StrikerRUS' review comments
* Update SWIG doc & disable ChunkedArray<int64_t>
* Use CHECK_EQ instead of assert
* Change include order (linting)
* Rename ChunkedArray -> chunked_array files
* Change header guards
* Address last comments from StrikerRUS
* [performance] Add Fast methods to C API for SingleRow Predictions
* Add methods to C API to make single-row predictions faster:
- LGBM_BoosterPredictForMatSingleRowFastInit (setup)
- LGBM_BoosterPredictForMatSingleRowFast (predict)
- LGBM_FastConfigFree (cleanup setup outputs)
* Code syle cleanup
* Fix lint errors
* [performance] Revert FastConfig improvement to pass data at init
This reduces optimization by 5% / 30% with this branch but makes it so it can be used for higher level wrappers in MMLSpark.
And outside it as well.
* [performance] Introduce Fast variants for SingleRow predictors.
Although this already provides performance gains by itself for any
callers, two new functions were added to Java's SWIG interfaces to
exploit that AND the GetPrimitiveArrayCritical data fetches.
* [tests/profiling] Profile Fast predict methods
Build with -DBUILD_PROFILING_TESTS=ON and copy the default
model trained on the Higgs dataset from the benchmarks repo
https://github.com/guolinke/boosting_tree_benchmarks.git
to LightGBM repo root and run the lightgbm_profile_* binaries.
The single instance used is the first row from that dataset.
* Update comment on CMakeLists.
* Fix doxygen-introduced issue (#threads)
* Fix conflicts due to new RowFunctionFromCSR signature in master
* Change FastConfig ncol to int32_t.
* Removed profiling folder
* fix doxygen typo include/LightGBM/c_api.h
Co-authored-by: Nikita Titov <nekit94-08@mail.ru>
* fix doxygen typo include/LightGBM/c_api.h
Co-authored-by: Nikita Titov <nekit94-08@mail.ru>
* fix doxygen typo include/LightGBM/c_api.h
Co-authored-by: Nikita Titov <nekit94-08@mail.ru>
* Doxygen: change new docstrings to double back-quote
Co-authored-by: alberto.ferreira <alberto.ferreira@feedzai.com>
Co-authored-by: Nikita Titov <nekit94-08@mail.ru>
* [swig] Fix SWIG methods that return char** with StringArray.
+ [new] Add StringArray class to manage and manipulate arrays of fixed-length strings:
This class is now used to wrap any char** parameters, manage memory and
manipulate the strings.
Such class is defined at swig/StringArray.hpp and wrapped in StringArray.i.
+ [API+fix] Wrap LGBM_BoosterGetFeatureNames it resulted in segfault before:
Added wrapper LGBM_BoosterGetFeatureNamesSWIG(BoosterHandle) that
only receives the booster handle and figures how much memory to allocate
for strings and returns a StringArray which can be easily converted to String[].
+ [API+safety] For consistency, LGBM_BoosterGetEvalNamesSWIG was wrapped as well:
* Refactor to detect any kind of errors and removed all the parameters
besides the BoosterHandle (much simpler API to use in Java).
* No assumptions are made about the required string space necessary (128 before).
* The amount of required string memory is computed internally
+ [safety] No possibility of undefined behaviour
The two methods wrapped above now compute the necessary string storage space
prior to allocation, as the low-level C API calls would crash the process
irreversibly if they write more memory than which is passed to them.
* Changes to C API and wrappers support char**
To support the latest SWIG changes that enable proper char**
return support that is safe, the C API was changed.
The respecive wrappers in R and Python were changed too.
* Cleanup indentation in new lightgbm_R.cpp code
* Adress review code-style comments.
* Update swig/StringArray.hpp
Co-Authored-By: Nikita Titov <nekit94-08@mail.ru>
* Update python-package/lightgbm/basic.py
Co-Authored-By: Nikita Titov <nekit94-08@mail.ru>
* Update src/lightgbm_R.cpp
Co-Authored-By: Nikita Titov <nekit94-08@mail.ru>
Co-authored-by: alberto.ferreira <alberto.ferreira@feedzai.com>
Co-authored-by: Nikita Titov <nekit94-08@mail.ru>
* added API changes required for JNI performance optimizations (e.g. predict is 3-4x faster)
* removed commented variables
* removed commented header
* renamed method to make it obvious it is created for Spark
* fixed comment alignment
* replaced GetPrimitiveArrayCritical with GetIntArrayElements for training. fixed dead-lock on databricks
* Adding Java wrappers to LightGBM by updating CMakeLists and adding SWIG file
* Set SWIG generation to OFF by default
* Added -package option to SWIG_FLAGS
* Fixed jar structure to have class files in proper location
* removed link with OpenMP flags