Commit cb90f909 by xiaotong

test XMem for gpu memory allocation

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