Commit cb90f909 by xiaotong

test XMem for gpu memory allocation

parent 91fdf94e
......@@ -44,9 +44,6 @@ int main( int argc, const char ** argv )
{
//_CrtSetBreakAlloc(123);
TestXMem();
return 0;
/* a tiny test */
//SmallTest();
......
......@@ -150,6 +150,9 @@ void XMem::Initialize(int myDevID, MEMPOOL_MODE myMode, MTYPE myBlockSize, int m
}
bufSize = myBufSize;
if (myMode == FREE_ON_THE_FLY)
SetIndex(MILLION);
}
/* free memory */
......@@ -718,9 +721,6 @@ void * XMem::AllocStandard(int myDevID, MTYPE mySize, bool myIsRebuiltIndex)
RebuildIndex();
CheckNTErrors(nodeNumUsed < nodeNum, "No enough index nodes for the memory pool!");
}
//if(testxmemid == 106)
// recordp = result;
return result;
}
......
......@@ -328,7 +328,7 @@ public:
/* remove an index node for memory pieces in use */
void RemoveAllocIndexNode(MPieceNode * node, MPieceNode * entry = NULL);
/* add an index node for available memory pieces */
/* add an index node for available memory pieces */
void AddAllocIndexNode(MPieceNode * node, MPieceNode * entry = NULL);
/* release a piece of memory as "free" */
......
......@@ -44,10 +44,11 @@ bool TestXMemCase1()
devNum = 1;
}*/
int * buf = new int[blcokSize * 10];
for (int id = 0; id < devNum; id++) {
int devID = devIDs[id];
for (int i = 0, scalar = 1; i < 3; i++) {
for (int iter = 0, scalar = 1; iter < 3; iter++) {
XMem mem;
mem.Initialize(devID, FREE_ON_THE_FLY, blcokSize * sizeof(int) * scalar * scalar, 1000, 0);
mem.SetIndex(10000, blcokSize * sizeof(int) / 2);
......@@ -64,25 +65,28 @@ bool TestXMemCase1()
for (int i = 0; i < testNum * scalar; i++) {
testxmemid++;
//fprintf(stderr, "%d\n", testxmemid);
//fprintf(stderr, "%d %d\n", testxmemid, ok);
int j = rand() % caseNum;
if (p[j] == NULL) {
p[j] = (int*)mem.AllocStandard(mem.devID, size[j] * sizeof(int));
for (int k = 0; k < size[j]; k++)
p[j][k] = j;
buf[k] = j;
XMemCopy(p[j], devID, buf, -1, sizeof(int) * size[j]);
}
else {
mem.ReleaseStandard(mem.devID, p[j], size[j] * sizeof(int));
for (int k = 0; k < size[j]; k++)
p[j][k] = -1;
buf[k] = -1;
XMemCopy(p[j], devID, buf, -1, sizeof(int) * size[j]);
p[j] = NULL;
}
for (int k = 0; k < caseNum; k++) {
if (p[k] != NULL) {
XMemCopy(buf, -1, p[k], devID, sizeof(int) * size[k]);
for (int o = 0; o < size[k]; o++) {
if (p[k][o] != k) {
if (buf[o] != k) {
ok = false;
}
}
......@@ -151,6 +155,8 @@ bool TestXMemCase1()
}
}
delete[] buf;
return ok;
}
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论