-
Notifications
You must be signed in to change notification settings - Fork 16
Planned Features for v0.0.1
0.0.1
will be the first release of adaboost
.
Following goals should be accomplished before we go for our first release,
- Improving the Directory Structure - Currently, the directory structure of the project is a bit unmanageable and faces the following problems and some solutions for the same are proposed,
-
The files
instantiated_templates_*.hpp
are scattered across all the modules. This pollutes the modules with a lot of unreadable code which is mostly generated automatically. To solve this, allinstantiated_templates_*.hpp
should be collected and placed under a single module,templates
. -
The
cuda
module should replicate the structure of the project for CPU code i.e., modules like,core
,utils
,operations
, should be placed undercuda
as well with their CUDA implementation.
-
Refactoring Code Base - The details are given in https://github.com/codezonediitj/adaboost/issues/10
-
Operations - The following operations should be added.
-
Sum
- For summation of elements of aVector
-
Argmax
- Finding the input for which a given function maximizes its value. -
I
- Returns a boolean if the given condition is true.
Some API suggestions,
Sum(function_pointer address, Vector, start, end)
Argmax(function_pointer, Vector)
I(function_pointer)
The above APIs should be implemented for both CPU and CUDA devices [2].
-
Implementing the Two Class AdaBoost Algorithm - See [1].
-
Implementing Multi-Class AdaBoost Algorithm - See [1].
-
Writing Python bindings for C++ code using either of pybind11 or Boost.Python
-
Writing Memory and Thread Manager - This goal is optional but if possible should be accomplished. This will require modifying the constructors and destructors of C++ classes and creating separate singleton classes for each kind of manager that will manage the references to these objects/threads. They should be capable of tasks like killing threads in case of exceptions, releasing memory if sufficient space isn't available for creating new object. This will also require the code to use only heap memory.
References