Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
taosdata
TDengine
提交
611ab8b3
T
TDengine
项目概览
taosdata
/
TDengine
1 年多 前同步成功
通知
1185
Star
22017
Fork
4786
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
1
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
T
TDengine
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
1
Issue
1
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
提交
611ab8b3
编写于
11月 23, 2022
作者:
H
Haojun Liao
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
refactor: make sure the memory is aligned to 32 bytes.
上级
b70a616a
变更
4
隐藏空白更改
内联
并排
Showing
4 changed file
with
21 addition
and
62 deletion
+21
-62
include/os/osMemory.h
include/os/osMemory.h
+1
-0
source/common/src/tdatablock.c
source/common/src/tdatablock.c
+12
-1
source/libs/function/src/detail/tminmax.c
source/libs/function/src/detail/tminmax.c
+0
-61
source/os/src/osMemory.c
source/os/src/osMemory.c
+8
-0
未找到文件。
include/os/osMemory.h
浏览文件 @
611ab8b3
...
...
@@ -37,6 +37,7 @@ void taosMemoryFree(void *ptr);
int64_t
taosMemorySize
(
void
*
ptr
);
void
taosPrintBackTrace
();
void
taosMemoryTrim
(
int32_t
size
);
void
*
taosMemoryMallocAlign
(
uint32_t
alignment
,
int64_t
size
);
#define taosMemoryFreeClear(ptr) \
do { \
...
...
source/common/src/tdatablock.c
浏览文件 @
611ab8b3
...
...
@@ -19,6 +19,8 @@
#include "tlog.h"
#include "tname.h"
#define MALLOC_ALIGN_BYTES 32
int32_t
colDataGetLength
(
const
SColumnInfoData
*
pColumnInfoData
,
int32_t
numOfRows
)
{
ASSERT
(
pColumnInfoData
!=
NULL
);
if
(
IS_VAR_DATA_TYPE
(
pColumnInfoData
->
info
.
type
))
{
...
...
@@ -1163,6 +1165,7 @@ static int32_t doEnsureCapacity(SColumnInfoData* pColumn, const SDataBlockInfo*
pColumn
->
varmeta
.
offset
=
(
int32_t
*
)
tmp
;
memset
(
&
pColumn
->
varmeta
.
offset
[
existedRows
],
0
,
sizeof
(
int32_t
)
*
(
numOfRows
-
existedRows
));
}
else
{
// prepare for the null bitmap
char
*
tmp
=
taosMemoryRealloc
(
pColumn
->
nullbitmap
,
BitmapLen
(
numOfRows
));
if
(
tmp
==
NULL
)
{
return
TSDB_CODE_OUT_OF_MEMORY
;
...
...
@@ -1173,11 +1176,19 @@ static int32_t doEnsureCapacity(SColumnInfoData* pColumn, const SDataBlockInfo*
memset
(
&
pColumn
->
nullbitmap
[
oldLen
],
0
,
BitmapLen
(
numOfRows
)
-
oldLen
);
ASSERT
(
pColumn
->
info
.
bytes
);
tmp
=
taosMemoryRealloc
(
pColumn
->
pData
,
numOfRows
*
pColumn
->
info
.
bytes
);
// make sure the allocated memory is MALLOC_ALIGN_BYTES aligned
tmp
=
taosMemoryMallocAlign
(
MALLOC_ALIGN_BYTES
,
numOfRows
*
pColumn
->
info
.
bytes
);
if
(
tmp
==
NULL
)
{
return
TSDB_CODE_OUT_OF_MEMORY
;
}
// copy back the existed data
if
(
pColumn
->
pData
!=
NULL
)
{
memcpy
(
tmp
,
pColumn
->
pData
,
existedRows
*
pColumn
->
info
.
bytes
);
taosMemoryFreeClear
(
pColumn
->
pData
);
}
pColumn
->
pData
=
tmp
;
if
(
clearPayload
)
{
memset
(
tmp
+
pColumn
->
info
.
bytes
*
existedRows
,
0
,
pColumn
->
info
.
bytes
*
(
numOfRows
-
existedRows
));
...
...
source/libs/function/src/detail/tminmax.c
浏览文件 @
611ab8b3
...
...
@@ -271,67 +271,6 @@ static int16_t i16VectorCmpAVX2(const int16_t* pData, int32_t numOfRows, bool is
return
v
;
}
//static int64_t i64VectorCmpAVX2(const int64_t* pData, int32_t numOfRows, bool isMinFunc) {
// int64_t v = 0;
// const int32_t bitWidth = 256;
// const int64_t* p = pData;
//
// int32_t width = (bitWidth>>3u) / sizeof(int64_t);
// int32_t remain = numOfRows % width;
// int32_t rounds = numOfRows / width;
//
//#if __AVX2__
// __m256i next;
// __m256i initialVal = _mm256_loadu_si256((__m256i*)p);
// p += width;
//
// if (!isMinFunc) { // max function
// for (int32_t i = 0; i < rounds; ++i) {
// next = _mm256_lddqu_si256((__m256i*)p);
// initialVal = _mm256_max_epi64(initialVal, next);
// p += width;
// }
//
// // let sum up the final results
// const int64_t* q = (const int64_t*)&initialVal;
// v = TMAX(q[0], q[1]);
// for(int32_t k = 1; k < width; ++k) {
// v = TMAX(v, q[k]);
// }
//
// // calculate the front and the reminder items in array list
// int32_t start = rounds * width;
// for (int32_t j = 0; j < remain; ++j) {
// if (v < p[j + start]) {
// v = p[j + start];
// }
// }
// } else { // min function
// for (int32_t i = 0; i < rounds; ++i) {
// next = _mm256_lddqu_si256((__m256i*)p);
// initialVal = _mm256_min_epi64(initialVal, next);
// p += width;
// }
//
// // let sum up the final results
// const int64_t* q = (const int64_t*)&initialVal;
// v = TMIN(q[0], q[1]);
// for(int32_t k = 1; k < width; ++k) {
// v = TMIN(v, q[k]);
// }
//
// // calculate the front and the remainder items in array list
// int32_t start = rounds * width;
// for (int32_t j = 0; j < remain; ++j) {
// if (v > p[j + start]) {
// v = p[j + start];
// }
// }
// }
//#endif
//
// return v;
//}
static
int32_t
handleInt32Col
(
SColumnInfoData
*
pCol
,
int32_t
start
,
int32_t
numOfRows
,
SqlFunctionCtx
*
pCtx
,
SMinmaxResInfo
*
pBuf
,
bool
isMinFunc
)
{
...
...
source/os/src/osMemory.c
浏览文件 @
611ab8b3
...
...
@@ -345,3 +345,11 @@ void taosMemoryTrim(int32_t size) {
malloc_trim
(
size
);
#endif
}
void
*
taosMemoryMallocAlign
(
uint32_t
alignment
,
int64_t
size
)
{
#ifdef USE_TD_MEMORY
ASSERT
(
0
);
#else
return
memalign
(
alignment
,
size
);
#endif
}
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录