Skip to content

Commit f20de69

Browse files
authored
Merge pull request #5 from ae2f/Rel-v3.1.0-devel
Rel v3.1.0 devel
2 parents b30350c + d94b648 commit f20de69

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

48 files changed

+1518
-1040
lines changed

CMakeLists.txt

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,14 +19,17 @@ if(NOT TARGET ${PROJECT_NAME})
1919
"include/ae2f/Ann/Sp.h.c/clean.script.h"
2020
"include/ae2f/Ann/Sp.h.c/cleandef.h"
2121
"include/ae2f/Ann/Sp.h.cxx/Sp.hh"
22+
"include/ae2f/Ann/Sp.h.cxx/mSp.hh"
2223
"include/ae2f/Ann/Sp.h.cxx/imp.hh"
2324

2425
"include/ae2f/Ann/Slp.h"
2526
"include/ae2f/Ann/Slp.h.cxx/Slp.hh"
27+
"include/ae2f/Ann/Slp.h.cxx/mSlp.hh"
2628
"include/ae2f/Ann/Slp.h.cxx/imp.hh"
2729

2830
"include/ae2f/Ann/Mlp.h"
2931
"include/ae2f/Ann/Mlp.h.cxx/Mlp.hh"
32+
"include/ae2f/Ann/Mlp.h.cxx/mMlp.hh"
3033
"include/ae2f/Ann/Mlp.h.cxx/imp.hh"
3134
)
3235
target_link_libraries(Ann-H INTERFACE Core)
@@ -77,9 +80,16 @@ if(ae2fCL_needed)
7780
include ae2fCL
7881
${PROJECT_SOURCE_DIR}/Config/CL-Ann-H.cmake.in
7982
"include/ae2fCL/Ann.h"
83+
8084
"include/ae2fCL/Ann/Sp.h.cxx/Sp.hh"
85+
"include/ae2fCL/Ann/Sp.h.cxx/mSp.hh"
8186
"include/ae2fCL/Ann/Sp.h.cxx/imp.hh"
8287
"include/ae2fCL/Ann/Sp.h"
88+
89+
"include/ae2fCL/Ann/Slp.h.cxx/Slp.hh"
90+
"include/ae2fCL/Ann/Slp.h.cxx/mSlp.hh"
91+
"include/ae2fCL/Ann/Slp.h.cxx/imp.hh"
92+
"include/ae2fCL/Ann/Slp.h"
8393
)
8494

8595
ae2f_RulerMeasure(

README.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
# Ann
2-
> Rel-v0.0.0
2+
> Rel-v1.0.0
33
44
ANN interfaces with basic implementation for example.
55

@@ -14,7 +14,7 @@ ANN interfaces with basic implementation for example.
1414
- cmake
1515

1616
# CL-Ann
17-
> Rel-v2.1.0
17+
> Rel-v3.1.0
1818
1919
A simple ann project with opencl written in C.
2020

include/ae2f/Ann/Mlp.h

Lines changed: 48 additions & 65 deletions
Original file line numberDiff line numberDiff line change
@@ -16,101 +16,80 @@
1616
#include <ae2f/Pack/Beg.h>
1717

1818
/// @brief
19-
/// Element of @ref ae2f_AnnMlp
20-
typedef ae2f_AnnSlp ae2f_AnnMlpEl;
19+
/// Element of @ref ae2f_mAnnMlp
20+
typedef ae2f_mAnnSlp ae2f_mAnnMlpEl;
2121

2222
#if ae2f_WhenCXX(!) 0
2323

24-
struct ae2f_AnnMlp : ae2f_AnnSlp {
25-
#include "Mlp.h.cxx/Mlp.hh"
24+
struct ae2f_mAnnMlp {
25+
#include "Mlp.h.cxx/mMlp.hh"
2626
};
2727

2828
#else
2929

30-
/// @class ae2f_AnnMlp
31-
/// @extends ae2f_AnnSlp
30+
/// @class ae2f_mAnnMlp
31+
/// @extends ae2f_mAnnSlp
3232
/// @brief
3333
/// # Multi Layered Perceptron
3434
///
3535
///
36-
typedef ae2f_AnnSlp ae2f_AnnMlp;
36+
typedef ae2f_mAnnSlp ae2f_mAnnMlp;
3737

3838
#endif
39-
/// @memberof ae2f_AnnMlp
40-
/// @details ae2f_AnnSlpPerVPad
41-
#define ae2f_AnnMlpLayerVPad ae2f_AnnSlpPerVPad
4239

43-
/// @memberof ae2f_AnnMlp
44-
#define ae2f_AnnMlpLayerV(mlp, i, ...) \
45-
ae2f_reinterpret_cast(__VA_ARGS__ ae2f_AnnMlpEl*, ae2f_AnnMlpLayerVPad(mlp, __VA_ARGS__)[i] + 1)
40+
typedef union ae2f_AnnMlp {
41+
ae2f_mAnnSlp Slp;
42+
ae2f_mAnnMlp Mlp;
4643

47-
/// @memberof ae2f_AnnMlp
48-
#define ae2f_AnnMlpInitSz(layerc, add) \
49-
(sizeof(ae2f_AnnMlp) + (sizeof(void*) * ((layerc))) + (sizeof(size_t) * 1) + (add))
44+
#if ae2f_WhenCXX(!)0
45+
#include "Mlp.h.cxx/Mlp.hh"
46+
#endif
47+
} ae2f_AnnMlp;
48+
49+
/// @memberof ae2f_mAnnMlp
50+
/// @details ae2f_mAnnSlpPerVPad
51+
#define ae2f_mAnnMlpLayerVPad ae2f_mAnnSlpPerVPad
52+
53+
/// @memberof ae2f_mAnnMlp
54+
#define ae2f_mAnnMlpLayerV(mlp, i, ...) \
55+
ae2f_reinterpret_cast(__VA_ARGS__ ae2f_mAnnMlpEl*, ae2f_mAnnMlpLayerVPad(mlp, __VA_ARGS__)[i] + 1)
56+
57+
/// @memberof ae2f_mAnnMlp
58+
#define ae2f_mAnnMlpInitSz(layerc, add) \
59+
(sizeof(ae2f_mAnnMlp) + (sizeof(void*) * ((layerc))) + (sizeof(size_t) * 1) + (add))
5060

5161
/// @brief
5262
/// Predict function api. \n
53-
/// For details see @ref ae2f_AnnMlpPredict_t.
54-
typedef ae2f_AnnSlpPredict_t ae2f_AnnMlpPredict_t;
63+
/// For details see @ref ae2f_mAnnMlpPredict_t.
64+
typedef ae2f_mAnnSlpPredict_t ae2f_mAnnMlpPredict_t;
5565

5666
/// @brief
5767
/// Training function api. \n
58-
/// For details see @ref ae2f_AnnMlpTrain_t
59-
typedef ae2f_AnnSlpTrain_t ae2f_AnnMlpTrain_t;
68+
/// For details see @ref ae2f_mAnnMlpTrain_t
69+
typedef ae2f_mAnnSlpTrain_t ae2f_mAnnMlpTrain_t;
6070

6171
/// @brief
6272
/// Cleaning function api.
63-
typedef ae2f_AnnSlpClean_t ae2f_AnnMlpClean_t;
73+
typedef ae2f_mAnnSlpClean_t ae2f_mAnnMlpClean_t;
6474

65-
/// @memberof ae2f_AnnMlp
75+
/// @memberof ae2f_mAnnMlp
6676
/// @brief
6777
/// The predicted max buffer count among all perceptron's possible length of I/O.
68-
#define ae2f_AnnMlpLayerBuffCount(mlp, ...) \
69-
ae2f_AnnSlpX(mlp, __VA_ARGS__ size_t*, __VA_ARGS__)
70-
71-
/// @memberof ae2f_AnnMlp
72-
/// @brief
73-
/// Its length is @ref (*ae2f_AnnMlpLayerBuffCount(mlp) * mlp->layerc, 3 * sizeof(ae2f_float_t)).
74-
#define ae2f_AnnMlpCache(mlp, ...) \
75-
ae2f_reinterpret_cast(__VA_ARGS__ ae2f_float_t**, ae2f_AnnMlpLayerBuffCount(mlp, __VA_ARGS__) + 1)
76-
77-
/// @memberof ae2f_AnnMlp
78-
/// @brief
79-
#define ae2f_AnnMlpX(mlp,type,...) \
80-
ae2f_reinterpret_cast(__VA_ARGS__ type, ae2f_AnnMlpCache(mlp, __VA_ARGS__) + 1)
78+
#define ae2f_mAnnMlpLayerBuffCount(mlp, ...) \
79+
ae2f_mAnnSlpX(mlp, __VA_ARGS__ size_t*, __VA_ARGS__)
8180

82-
/// @memberof ae2f_AnnMlp
81+
/// @memberof ae2f_mAnnMlp
8382
/// @brief
84-
/// Predict function call. \n
85-
/// See @ref ae2f_AnnSlpPredict
86-
#define ae2f_AnnMlpPredict ae2f_AnnSlpPredict
83+
/// Its length is @ref (*ae2f_mAnnMlpLayerBuffCount(mlp) * mlp->layerc, 3 * sizeof(ae2f_float_t)).
84+
#define ae2f_mAnnMlpCache(mlp, ...) \
85+
ae2f_reinterpret_cast(__VA_ARGS__ ae2f_float_t**, ae2f_mAnnMlpLayerBuffCount(mlp, __VA_ARGS__) + 1)
8786

88-
/// @memberof ae2f_AnnMlp
87+
/// @memberof ae2f_mAnnMlp
8988
/// @brief
90-
/// Training function call. \n
91-
/// See @ref ae2f_AnnSlpTrain
92-
#define ae2f_AnnMlpTrain ae2f_AnnSlpTrain
89+
#define ae2f_mAnnMlpX(mlp,type,...) \
90+
ae2f_reinterpret_cast(__VA_ARGS__ type, ae2f_mAnnMlpCache(mlp, __VA_ARGS__) + 1)
9391

94-
/// @memberof ae2f_AnnMlp
95-
/// @brief
96-
/// See @ref ae2f_AnnSlpTrainA
97-
#define ae2f_AnnMlpTrainA ae2f_AnnSlpTrainA
98-
99-
/// @memberof ae2f_AnnMlp
100-
/// @brief
101-
/// See @ref ae2f_AnnSlpTrainB
102-
#define ae2f_AnnMlpTrainB ae2f_AnnSlpTrainB
103-
104-
/// @memberof ae2f_AnnMlp
105-
/// @brief
106-
/// Deleting function. \n
107-
/// We are reusing the previous definition since the process is literally saem.
108-
///
109-
/// See @ref ae2f_AnnSlpDel
110-
#define ae2f_AnnMlpDel ae2f_AnnSlpDel
111-
#define ae2f_AnnMlpClean ae2f_AnnSlpClean
112-
113-
/// @memberof ae2f_AnnMlp
92+
/// @memberof ae2f_mAnnMlp
11493
/// @brief
11594
/// d
11695
/// @param _this
@@ -125,8 +104,8 @@ ae2f_reinterpret_cast(__VA_ARGS__ type, ae2f_AnnMlpCache(mlp, __VA_ARGS__) + 1)
125104
/// @param errret_opt
126105
/// @return
127106
ae2f_extern ae2f_SHAREDCALL
128-
size_t ae2f_AnnMlpInit(
129-
ae2f_AnnMlp* _this,
107+
size_t ae2f_mAnnMlpInit(
108+
ae2f_mAnnMlp* _this,
130109
size_t layerc,
131110
size_t add_opt,
132111
const size_t* layerlenv,
@@ -151,6 +130,10 @@ ae2f_AnnMlp* ae2f_AnnMlpMk(
151130
ae2f_err_t* errret_opt
152131
) noexcept;
153132

133+
134+
#define ae2f_AnnMlpClean ae2f_AnnSlpClean
135+
#define ae2f_AnnMlpDel ae2f_AnnSlpDel
136+
154137
#if ae2f_WhenCXX(!) 0
155138
#include "Mlp.h.cxx/imp.hh"
156139
#endif

include/ae2f/Ann/Mlp.h.cxx/Mlp.hh

Lines changed: 6 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -1,19 +1,9 @@
1-
/**
2-
* @file Mlp.hh
3-
* @author ae2f
4-
* @brief
5-
* @version 0.1
6-
* @date 2025-02-19
7-
*
8-
* @copyright Copyright (c) 2025
9-
*
10-
* Additional definition for @ref ae2f_AnnMlp, @ref ae2f_AnnMlpEl
11-
*
12-
*/
13-
141
#include "../Mlp.h"
152

163
#define ae2f_TMP
17-
constexprfun ae2f_AnnMlpEl* ae2f_TMP Perc(size_t a);
18-
constexprfun const ae2f_AnnMlpEl* ae2f_TMP Perc(size_t a) const;
19-
#undef ae2f_TMP
4+
inline ae2f_TMP ~ae2f_AnnMlp();
5+
#undef ae2f_TMP
6+
7+
private:
8+
uint8_t szero;
9+
constexpr ae2f_AnnMlp() : szero(0) {}

include/ae2f/Ann/Mlp.h.cxx/imp.hh

Lines changed: 19 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -11,13 +11,27 @@
1111
*
1212
*/
1313

14-
#define ae2f_TMP ae2f_AnnMlp::
14+
#define ae2f_TMP ae2f_mAnnMlp::
15+
16+
constexprfun ae2f_mAnnMlpEl* ae2f_TMP Perc(size_t a) {
17+
return ae2f_mAnnMlpLayerV(this->_this, a);
18+
}
19+
constexprfun const ae2f_mAnnMlpEl* ae2f_TMP Perc(size_t a) const {
20+
return ae2f_mAnnMlpLayerV(this->_this, a, const);
21+
}
1522

16-
constexprfun ae2f_AnnMlpEl* ae2f_TMP Perc(size_t a) {
17-
return ae2f_AnnMlpLayerV(this, a);
23+
constexprfun size_t* ae2f_TMP PercPad(size_t a) {
24+
return ae2f_mAnnMlpLayerVPad(this->_this)[a];
1825
}
19-
constexprfun const ae2f_AnnMlpEl* ae2f_TMP Perc(size_t a) const {
20-
return ae2f_AnnMlpLayerV(this, a, const);
26+
constexprfun const size_t* ae2f_TMP PercPad(size_t a) const {
27+
return ae2f_mAnnMlpLayerVPad(this->_this, const)[a];
2128
}
2229

30+
#undef ae2f_TMP
31+
32+
33+
#define ae2f_TMP ae2f_AnnMlp::
34+
inline ae2f_TMP ~ae2f_AnnMlp() {
35+
ae2f_AnnMlpClean(this);
36+
}
2337
#undef ae2f_TMP

include/ae2f/Ann/Mlp.h.cxx/mMlp.hh

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
/**
2+
* @file Mlp.hh
3+
* @author ae2f
4+
* @brief
5+
* @version 0.1
6+
* @date 2025-02-19
7+
*
8+
* @copyright Copyright (c) 2025
9+
*
10+
* Additional definition for @ref ae2f_mAnnMlp, @ref ae2f_mAnnMlpEl
11+
*
12+
*/
13+
14+
#include "../Mlp.h"
15+
16+
#define ae2f_TMP
17+
constexprfun ae2f_mAnnMlpEl* ae2f_TMP Perc(size_t a);
18+
constexprfun const ae2f_mAnnMlpEl* ae2f_TMP Perc(size_t a) const;
19+
20+
constexprfun size_t* ae2f_TMP PercPad(size_t);
21+
constexprfun const size_t* ae2f_TMP PercPad(size_t) const;
22+
#undef ae2f_TMP
23+
24+
private:
25+
ae2f_mAnnSlp _this[1];

0 commit comments

Comments
 (0)