@@ -41,7 +41,8 @@ void L0OptionsTy::processEnvironmentVars() {
4141 if (MemoryPoolVar.isPresent ()) {
4242 if (MemoryPoolVar.get () == " 0" ) {
4343 Flags.UseMemoryPool = 0 ;
44- MemPoolInfo.clear ();
44+ std::for_each (MemPoolConfig.begin (), MemPoolConfig.end (),
45+ [](auto &I) { I = {false , 0 , 0 , 0 }; });
4546 } else {
4647 std::istringstream Str (MemoryPoolVar.get ());
4748 int32_t MemType = -1 ;
@@ -50,19 +51,19 @@ void L0OptionsTy::processEnvironmentVars() {
5051 const std::array<int32_t , 3 > DefaultValue{1 , 4 , 256 };
5152 const int32_t AllMemType = INT32_MAX;
5253 std::array<int32_t , 3 > AllInfo{1 , 4 , 256 };
53- std::map< int32_t , std::array<int32_t , 3 >> PoolInfo;
54+ std::array< std::array<int32_t , 3 >, 3 > PoolInfo;
5455 for (std::string Token; std::getline (Str, Token, ' ,' ) && Valid > 0 ;) {
5556 if (Token == " device" ) {
5657 MemType = TARGET_ALLOC_DEVICE;
57- PoolInfo. emplace (MemType, DefaultValue) ;
58+ PoolInfo[TARGET_ALLOC_DEVICE] = DefaultValue;
5859 Offset = 0 ;
5960 } else if (Token == " host" ) {
6061 MemType = TARGET_ALLOC_HOST;
61- PoolInfo. emplace (MemType, DefaultValue) ;
62+ PoolInfo[TARGET_ALLOC_HOST] = DefaultValue;
6263 Offset = 0 ;
6364 } else if (Token == " shared" ) {
6465 MemType = TARGET_ALLOC_SHARED;
65- PoolInfo. emplace (MemType, DefaultValue) ;
66+ PoolInfo[TARGET_ALLOC_SHARED] = DefaultValue;
6667 Offset = 0 ;
6768 } else if (Token == " all" ) {
6869 MemType = AllMemType;
@@ -87,19 +88,24 @@ void L0OptionsTy::processEnvironmentVars() {
8788 if (Valid == 2 ) {
8889 // "all" is specified -- ignore other inputs
8990 if (AllInfo[0 ] > 0 ) {
90- MemPoolInfo[TARGET_ALLOC_DEVICE] = AllInfo;
91- MemPoolInfo[TARGET_ALLOC_HOST] = AllInfo;
92- MemPoolInfo[TARGET_ALLOC_SHARED] = std::move (AllInfo);
91+ MemPoolConfig[TARGET_ALLOC_DEVICE] = {true , AllInfo[0 ], AllInfo[1 ],
92+ AllInfo[2 ]};
93+ MemPoolConfig[TARGET_ALLOC_HOST] = {true , AllInfo[0 ], AllInfo[1 ],
94+ AllInfo[2 ]};
95+ MemPoolConfig[TARGET_ALLOC_SHARED] = {true , AllInfo[0 ], AllInfo[1 ],
96+ AllInfo[2 ]};
9397 } else {
94- MemPoolInfo.clear ();
98+ std::for_each (MemPoolConfig.begin (), MemPoolConfig.end (),
99+ [](auto &I) { I = {false , 0 , 0 , 0 }; });
95100 }
96101 } else {
97- // Use user-specified configuration
98- for (auto &I : PoolInfo) {
99- if (I.second [0 ] > 0 )
100- MemPoolInfo[I.first ] = I.second ;
101- else
102- MemPoolInfo.erase (I.first );
102+ for (size_t Pool = 0 ; Pool < PoolInfo.size (); ++Pool) {
103+ if (PoolInfo[Pool][0 ] == 0 ) {
104+ MemPoolConfig[Pool] = {false , 0 , 0 , 0 };
105+ } else {
106+ MemPoolConfig[Pool] = {true , PoolInfo[Pool][0 ], PoolInfo[Pool][1 ],
107+ PoolInfo[Pool][2 ]};
108+ }
103109 }
104110 }
105111 } else {
0 commit comments