Skip to content

Commit 4da2a62

Browse files
authored
Merge pull request #22 from xman/xmanpr
Fix CentOS7 build and hugepages issues
2 parents 675b303 + 7aee1ec commit 4da2a62

File tree

3 files changed

+68
-15
lines changed

3 files changed

+68
-15
lines changed

SLIDE/Layer.h

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -55,7 +55,12 @@ class Layer
5555
void* ptr = mmap(NULL, size,
5656
PROT_READ | PROT_EXEC | PROT_WRITE, MAP_PRIVATE | MAP_ANONYMOUS | MAP_HUGETLB,
5757
-1, 0);
58-
if (ptr == NULL)
58+
if (ptr == MAP_FAILED){
59+
ptr = mmap(NULL, size,
60+
PROT_READ | PROT_EXEC | PROT_WRITE, MAP_PRIVATE | MAP_ANONYMOUS,
61+
-1, 0);
62+
}
63+
if (ptr == MAP_FAILED)
5964
std::cout << "mmap fail! No new layer!" << std::endl;
6065
return ptr;};
6166
void operator delete(void * pointer){munmap(pointer, sizeof(Layer));};

SLIDE/Network.h

Lines changed: 13 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -28,9 +28,19 @@ class Network
2828
~Network();
2929
void * operator new(size_t size){
3030
cout << "new Network" << endl;
31-
return mmap(NULL, size,
32-
PROT_READ | PROT_EXEC | PROT_WRITE, MAP_PRIVATE | MAP_ANONYMOUS | MAP_HUGETLB,
33-
-1, 0);};
31+
void* ptr = mmap(NULL, size,
32+
PROT_READ | PROT_EXEC | PROT_WRITE, MAP_PRIVATE | MAP_ANONYMOUS | MAP_HUGETLB,
33+
-1, 0);
34+
if (ptr == MAP_FAILED){
35+
ptr = mmap(NULL, size,
36+
PROT_READ | PROT_EXEC | PROT_WRITE, MAP_PRIVATE | MAP_ANONYMOUS,
37+
-1, 0);
38+
}
39+
if (ptr == MAP_FAILED){
40+
std::cout << "mmap failed at Network." << std::endl;
41+
}
42+
return ptr;
43+
}
3444
void operator delete(void * pointer){munmap(pointer, sizeof(Network));};
3545
};
3646

SLIDE/Node.h

Lines changed: 49 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
#include <assert.h>
44
#include <iostream>
55
#include <cmath>
6+
#include <linux/mman.h>
67
#include <sys/mman.h>
78
#include <asm-generic/mman-common.h>
89

@@ -19,18 +20,35 @@ struct train {
1920
int _ActiveinputIds;
2021

2122
void * operator new(size_t size){
22-
return mmap(NULL, size,
23+
void* ptr = mmap(NULL, size,
2324
PROT_READ | PROT_EXEC | PROT_WRITE, MAP_PRIVATE | MAP_ANONYMOUS | MAP_HUGETLB,
24-
-1, 0);};
25+
-1, 0);
26+
if (ptr == MAP_FAILED){
27+
ptr = mmap(NULL, size,
28+
PROT_READ | PROT_EXEC | PROT_WRITE, MAP_PRIVATE | MAP_ANONYMOUS,
29+
-1, 0);
30+
}
31+
if (ptr == MAP_FAILED){
32+
std::cout << "mmap failed at train." << std::endl;
33+
}
34+
return ptr;
35+
}
2536
void* operator new (std::size_t size, const std::nothrow_t& nothrow_value){return operator new (size);};
2637
void* operator new (std::size_t size, void* ptr){return operator new (size);};
2738
void* operator new[] (std::size_t size){
2839
void* ptr = mmap(NULL, size,
29-
PROT_READ | PROT_EXEC | PROT_WRITE, MAP_PRIVATE | MAP_ANONYMOUS | MAP_HUGETLB | (30 << MAP_HUGE_SHIFT),
40+
PROT_READ | PROT_EXEC | PROT_WRITE, MAP_PRIVATE | MAP_ANONYMOUS | MAP_HUGETLB | MAP_HUGE_1GB,
3041
-1, 0);
31-
if (ptr == NULL)
42+
if (ptr == MAP_FAILED){
43+
ptr = mmap(NULL, size,
44+
PROT_READ | PROT_EXEC | PROT_WRITE, MAP_PRIVATE | MAP_ANONYMOUS,
45+
-1, 0);
46+
}
47+
if (ptr == MAP_FAILED){
3248
std::cout << "mmap fail! No train array!" << std::endl;
33-
return ptr;};
49+
}
50+
return ptr;
51+
}
3452
void* operator new[] (std::size_t size, const std::nothrow_t& nothrow_value){return operator new (size);};
3553
void* operator new[] (std::size_t size, void* ptr){return operator new (size);};
3654

@@ -86,16 +104,36 @@ class Node
86104

87105
void * operator new(size_t size){
88106
std::cout << "new Node" << std::endl;
89-
return mmap(NULL, size,
90-
PROT_READ | PROT_EXEC | PROT_WRITE, MAP_PRIVATE | MAP_ANONYMOUS | MAP_HUGETLB | (30 << MAP_HUGE_SHIFT),
91-
-1, 0);};
107+
void* ptr = mmap(NULL, size,
108+
PROT_READ | PROT_EXEC | PROT_WRITE, MAP_PRIVATE | MAP_ANONYMOUS | MAP_HUGETLB | MAP_HUGE_1GB,
109+
-1, 0);
110+
if (ptr == MAP_FAILED){
111+
ptr = mmap(NULL, size,
112+
PROT_READ | PROT_EXEC | PROT_WRITE, MAP_PRIVATE | MAP_ANONYMOUS,
113+
-1, 0);
114+
}
115+
if (ptr == MAP_FAILED){
116+
std::cout << "mmap failed at Node." << std::endl;
117+
}
118+
return ptr;
119+
}
92120
void* operator new (std::size_t size, const std::nothrow_t& nothrow_value){return operator new (size);};
93121
void* operator new (std::size_t size, void* ptr){return operator new (size);};
94122
void* operator new[] (std::size_t size){
95123
std::cout << "new Node array" << std::endl;
96-
return mmap(NULL, size,
97-
PROT_READ | PROT_EXEC | PROT_WRITE, MAP_PRIVATE | MAP_ANONYMOUS | MAP_HUGETLB | (30 << MAP_HUGE_SHIFT),
98-
-1, 0);};
124+
void* ptr = mmap(NULL, size,
125+
PROT_READ | PROT_EXEC | PROT_WRITE, MAP_PRIVATE | MAP_ANONYMOUS | MAP_HUGETLB | MAP_HUGE_1GB,
126+
-1, 0);
127+
if (ptr == MAP_FAILED){
128+
ptr = mmap(NULL, size,
129+
PROT_READ | PROT_EXEC | PROT_WRITE, MAP_PRIVATE | MAP_ANONYMOUS,
130+
-1, 0);
131+
}
132+
if (ptr == MAP_FAILED){
133+
std::cout << "mmap failed at Node array." << std::endl;
134+
}
135+
return ptr;
136+
}
99137
void* operator new[] (std::size_t size, const std::nothrow_t& nothrow_value){return operator new (size);};
100138
void* operator new[] (std::size_t size, void* ptr){return operator new (size);};
101139

0 commit comments

Comments
 (0)