Skip to content

Commit

Permalink
Merge pull request #167 from leondavi/nerlTensor
Browse files Browse the repository at this point in the history
Optimized Tensors
  • Loading branch information
leondavi committed May 9, 2023
2 parents 80871a1 + d5ee723 commit 8546321
Show file tree
Hide file tree
Showing 13 changed files with 804 additions and 271 deletions.
56 changes: 56 additions & 0 deletions NerlnetTest.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,56 @@
#!/bin/bash

function print()
{
echo "[NERLNET-TEST] $1"
}

# Global Vars:
NERLNET_PATH="/usr/local/lib/nerlnet-lib/NErlNet"
NOW=$(date +"%Y-%m-%d_%H_%M_%S")
LOG_FILE="nerlnet_test-$NOW.log"
TEST_LOG_PATH="/usr/local/lib/nerlnet-lib/log"
TEST_LOG_FILE_PATH="$TEST_LOG_PATH/$LOG_FILE"

NERLNET_BUILD_DIR="$NERLNET_PATH/build"
NERLNET_TEST_DIR="$NERLNET_BUILD_DIR/test"

print "Nerlnet testing script initiated"
print "Copy files to $NERLNET_TEST_DIR"

if [ -d "$NERLNET_TEST_DIR" ];
then
print "Removing old test directory"
rm -rf $NERLNET_TEST_DIR
print "Creating test directory"
mkdir -p $NERLNET_TEST_DIR
else
print "Creating test directory"
mkdir -p $NERLNET_TEST_DIR
fi


cp src_erl/erlBridge/nerlTests.erl $NERLNET_TEST_DIR/nerlTests.erl
cp src_erl/erlBridge/nerlNIF.erl $NERLNET_TEST_DIR/nerlNIF.erl
cp src_erl/erlBridge/nerl.erl $NERLNET_TEST_DIR/nerl.erl
cp src_erl/erlBridge/nerlTensor.hrl $NERLNET_TEST_DIR/nerlTensor.hrl

print "Starting compilation: "
cmake -S . -B build/release -DCMAKE_BUILD_TYPE=RELEASE
cd build/release
make .
cd -

print "Change directory to $NERLNET_TEST_DIR:"
cd $NERLNET_TEST_DIR

print "Running nerlTests.erl"
COMPILE_NERLNIF="compile:file(\"nerlNIF.erl\")"
COMPILE_NERLTEST="compile:file(\"nerlTests.erl\")"
COMPILE_NERL="compile:file(\"nerl.erl\")"

COMPILE_FILES="$COMPILE_NERL,$COMPILE_NERLNIF,$COMPILE_NERLTEST"

erl -noshell -eval "$COMPILE_FILES, nerlTests:run_tests()." -s init stop > "$NERLNET_TEST_DIR/$LOG_FILE"
cat "$NERLNET_TEST_DIR/$LOG_FILE"
cd -
2 changes: 1 addition & 1 deletion NerlnetTestopennnNIFPP.sh
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
#!/bin/bash

# Depracated
echo "Current working directory: $PWD"

echo "Compilation of NIF shared library: "
Expand Down
1 change: 1 addition & 0 deletions src_cpp/opennnBridge/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,7 @@ add_subdirectory(${OPENNN_PATH} [binary_dir])

set(SRC_CODE
"nifppEigenExtensions.h"
"nifppNerltensorEigen.h"
"bridgeController.h"
"definitionsNN.h"
"CustumNN.h"
Expand Down
19 changes: 19 additions & 0 deletions src_cpp/opennnBridge/definitionsNN.h
Original file line number Diff line number Diff line change
Expand Up @@ -23,14 +23,33 @@ enum OptimizationMethod {E_OM_GRADIENT_DESCENT = 1, E_OM_CONJUGATE_GRADIENT = 2,

enum LearningRateAlgorithm {E_LRA_GOLDEN_SECTION = 1 /* LRA -Learning Rate Algorithm */,E_LRA_BRENT_METHOD = 2};

//-------------------------------------------------------//
enum NERLTENSOR_TYPE_NUM {ATOM_FLOAT, ATOM_DOUBLE, ATOM_INT32, ATOM_INT16};

//-------------------------------------------------------//


using iTensor1D = Tensor<Eigen::Index,1>;
using iTensor2D = Tensor<Eigen::Index,2>;
using iTensor3D = Tensor<Eigen::Index,3>;

using iTensor1DPtr = std::shared_ptr<iTensor1D>;
using iTensor2DPtr = std::shared_ptr<iTensor2D>;
using iTensor3DPtr = std::shared_ptr<iTensor3D>;

using fTensor1D = Eigen::Tensor<float,1>;
using fTensor2D = Eigen::Tensor<float,2>;
using fTensor3D = Eigen::Tensor<float,3>;

using fTensor1DPtr = std::shared_ptr<fTensor1D>;
using fTensor2DPtr = std::shared_ptr<fTensor2D>;
using fTensor3DPtr = std::shared_ptr<fTensor3D>;

using dTensor1D = Eigen::Tensor<double,1>;
using dTensor2D = Eigen::Tensor<double,2>;
using dTensor3D = Eigen::Tensor<double,3>;

using dTensor1DPtr = std::shared_ptr<dTensor1D>;
using dTensor2DPtr = std::shared_ptr<dTensor2D>;
using dTensor3DPtr = std::shared_ptr<dTensor3D>;

7 changes: 6 additions & 1 deletion src_cpp/opennnBridge/nifppEigenExtensions.h
Original file line number Diff line number Diff line change
Expand Up @@ -16,8 +16,12 @@

#define EXCEPTION_STR_INVALID_ERL_TENSOR "Invalid Erlang Tensor (List)"



namespace nifpp
{
enum {DIMS_X_IDX,DIMS_Y_IDX,DIMS_Z_IDX,DIMS_TOTAL};

// Float number conversions
inline int get(ErlNifEnv *env, ERL_NIF_TERM term, float &var)
{
Expand All @@ -26,6 +30,7 @@ namespace nifpp
var = static_cast<float>(tmpVar);
return res;
}

inline TERM make(ErlNifEnv *env, const float var)
{
return TERM(enif_make_double(env, static_cast<double>(var)));
Expand All @@ -46,7 +51,6 @@ namespace nifpp
template<typename Type>
dims(const std::vector<Type> &dimsVec)
{
enum {DIMS_X_IDX,DIMS_Y_IDX,DIMS_Z_IDX,DIMS_TOTAL};
if(dimsVec.size() == DIMS_TOTAL)
{
x = static_cast<int>(dimsVec[DIMS_X_IDX]);
Expand All @@ -72,6 +76,7 @@ namespace nifpp
template<typename Type> TERM makeTensor(ErlNifEnv *env, const Tensor3D<Type> &tensor);



/**
* @brief
*
Expand Down
Loading

0 comments on commit 8546321

Please sign in to comment.