65 std::string str_stack;
69#if defined(__INTEL_COMPILER) || defined(__INTEL_LLVM_COMPILER)
72 size_t stack_size = kmp_get_stacksize();
73 if (stack_size < 262144000){
74 stack_size = 262144000;
75 kmp_set_stacksize(stack_size);
77 size_t stack_mb = stack_size /1048576;
78 str_stack = std::to_string(stack_mb)+
" MB";
85 const char* env_stack_size = std::getenv(
"OMP_STACKSIZE");
87 if ( env_stack_size == NULL) {
91 char last_char = env_stack_size[strlen(env_stack_size)-1];
93 if (last_char ==
'G' || last_char ==
'g' || last_char ==
'M' || last_char ==
'm' || last_char ==
'K' || last_char ==
'k'){
94 char *stack_size = strdup(env_stack_size);
95 stack_size[strlen(stack_size)-1] =
'\0';
97 int stack_size_int = std::stoi(stack_size);
98 str_stack = std::to_string(stack_size_int)+
" "+last_char+
"B";
105 int stack_size_int = std::stoi(env_stack_size)/1024;
106 str_stack = std::to_string(stack_size_int)+
" MB";
117 str_stack = std::string(
"0");
130 HMODULE Program= GetModuleHandle(NULL);
131 if(Program != NULL) {
132 IMAGE_DOS_HEADER* pDOSHeader = (IMAGE_DOS_HEADER*)Program;
133 IMAGE_NT_HEADERS* pNTHeaders =(IMAGE_NT_HEADERS*)((BYTE*)pDOSHeader + pDOSHeader->e_lfanew);
134 PIMAGE_OPTIONAL_HEADER pOptionalHeader = &pNTHeaders->OptionalHeader;
135 DWORD stack=pOptionalHeader->SizeOfStackReserve /(1024*1024);
136 stsize = std::to_string(stack) +
" MB";
140 strcpy_s(
stacksize, 128, stsize.c_str());
145 int result = getrlimit(RLIMIT_STACK, &rl);
147 if (rl.rlim_cur == -1){
150 long int StMB = rl.rlim_cur / (1024*1024);
153 rl.rlim_cur = rl.rlim_max;
154 setrlimit(RLIMIT_STACK, &rl);