Commit 97b41e35 by xiaotong

xmem bugs

parent 1a687dab
......@@ -44,6 +44,9 @@ int main( int argc, const char ** argv )
{
//_CrtSetBreakAlloc(123);
TestXMem();
return 0;
/* a tiny test */
//SmallTest();
......
......@@ -279,7 +279,6 @@ initialize the index
*/
void XMem::SetIndex(INT_64 indexSize, MTYPE minSizeFirst, int minSizeNum)
{
delete freeMemIndex;
delete minSizeIndex;
......
......@@ -53,22 +53,6 @@ typedef long long INT_64;
#define MIN_BLOCK_SIZE_FOR_MEMPOOL 128 * 1024 * 1024
#define MIN_BLOCK_NUM_FOR_MEMPOOL 1024
/* memory block */
struct XMemBlock
{
/* pointer to where to start */
void * mem;
/* size of the block */
MTYPE size;
/* size of the used memory in this block */
MTYPE used;
/* disired size of the block */
MTYPE sizeDesired;
};
/*
mode of runnig a memory pool
- UNI_FREE: free all memory space when the memory allocation is no use
......@@ -112,6 +96,25 @@ struct MPieceNode
/* pointer to the head of a memory piece */
void * p;
/* header of the memory piece */
MHeader * head;
};
/* memory block */
struct XMemBlock
{
/* pointer to where to start */
void * mem;
/* size of the block */
MTYPE size;
/* size of the used memory in this block */
MTYPE used;
/* desired size of the block */
MTYPE sizeDesired;
};
/*
......
......@@ -33,9 +33,23 @@ bool TestXMemCase1()
int blcokSize = 16;
int testNum = caseNum * 10;
for(int i = 0, scalar = 1; i < 3; i++){
int devIDs[2];
int devNum = 1;
devIDs[0] = -1;
/*if (GDevs.nGPU > 0) {
devIDs[1] = 0;
devNum = 2;
devIDs[0] = 0;
devNum = 1;
}*/
for (int id = 0; id < devNum; id++) {
int devID = devIDs[id];
for (int i = 0, scalar = 1; i < 3; i++) {
XMem mem;
mem.Initialize(-1, FREE_ON_THE_FLY, blcokSize * sizeof(int) * scalar * scalar, 1000, 0);
mem.Initialize(devID, FREE_ON_THE_FLY, blcokSize * sizeof(int) * scalar * scalar, 1000, 0);
mem.SetIndex(10000, blcokSize * sizeof(int) / 2);
srand(907);
......@@ -43,30 +57,30 @@ bool TestXMemCase1()
int ** p = new int*[caseNum];
int * size = new int[caseNum];
for(int i = 0; i < caseNum; i++){
for (int i = 0; i < caseNum; i++) {
p[i] = NULL;
size[i] = rand() % (2*blcokSize);
size[i] = rand() % (2 * blcokSize);
}
for(int i = 0; i < testNum * scalar; i++){
for (int i = 0; i < testNum * scalar; i++) {
int j = rand() % caseNum;
if(p[j] == NULL){
if (p[j] == NULL) {
p[j] = (int*)mem.AllocStandard(mem.devID, size[j] * sizeof(int));
for(int k = 0; k < size[j]; k++)
for (int k = 0; k < size[j]; k++)
p[j][k] = j;
}
else{
else {
mem.ReleaseStandard(mem.devID, p[j]);
for(int k = 0; k < size[j]; k++)
for (int k = 0; k < size[j]; k++)
p[j][k] = -1;
p[j] = NULL;
}
for(int k = 0; k < caseNum; k++){
if(p[k] != NULL){
for(int o = 0; o < size[k]; o++){
if(p[k][o] != k){
for (int k = 0; k < caseNum; k++) {
if (p[k] != NULL) {
for (int o = 0; o < size[k]; o++) {
if (p[k][o] != k) {
ok = false;
}
}
......@@ -78,6 +92,7 @@ bool TestXMemCase1()
delete[] size;
scalar *= 2;
}
}
return ok;
}
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论