Rev 154 | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed
| Rev 154 | Rev 156 | ||
|---|---|---|---|
| Line 30... | Line 30... | ||
| 30 |  ******************************************************************************* | 30 |  ******************************************************************************* | 
| 31 |  */ | 31 |  */ | 
| 32 | void AlignedMalloc(void **pointer, uint64_t alignment, size_t size) { | 32 | void AlignedMalloc(void **pointer, uint64_t alignment, size_t size) { | 
| 33 | uint64_t temp; | 33 | uint64_t temp; | 
| 34 | 34 | ||
| 35 | segments[nsegments][0] = malloc(size + alignment - 1); | 35 | segments[nsegments][0] = malloc((size_t) (size + alignment - 1)); // Pierre-Marie Baty -- added type cast | 
| 36 | segments[nsegments][1] = segments[nsegments][0]; | 36 | segments[nsegments][1] = segments[nsegments][0]; | 
| 37 | temp = (uint64_t) segments[nsegments][0]; | 37 | temp = (uint64_t) segments[nsegments][0]; | 
| 38 | temp = (temp + alignment - 1) & ~(alignment - 1); | 38 | temp = (temp + alignment - 1) & ~(alignment - 1); | 
| 39 | segments[nsegments][1] = (void *) temp; | 39 | segments[nsegments][1] = (void *) temp; | 
| 40 | *pointer = segments[nsegments][1]; | 40 | *pointer = segments[nsegments][1]; | 
| Line 82... | Line 82... | ||
| 82 | if (i == nsegments) { | 82 | if (i == nsegments) { | 
| 83 | Print(4095, "ERROR AlignedRemalloc() given an invalid pointer\n"); | 83 | Print(4095, "ERROR AlignedRemalloc() given an invalid pointer\n"); | 
| 84 | exit(1); | 84 | exit(1); | 
| 85 |   } | 85 |   } | 
| 86 | free(segments[i][0]); | 86 | free(segments[i][0]); | 
| 87 | segments[i][0] = malloc(size + alignment - 1); | 87 | segments[i][0] = malloc((size_t) (size + alignment - 1)); // Pierre-Marie Baty -- added type cast | 
| 88 | temp = (uint64_t) segments[i][0]; | 88 | temp = (uint64_t) segments[i][0]; | 
| 89 | temp = (temp + alignment - 1) & ~(alignment - 1); | 89 | temp = (temp + alignment - 1) & ~(alignment - 1); | 
| 90 | segments[i][1] = (void *) temp; | 90 | segments[i][1] = (void *) temp; | 
| 91 | *pointer = segments[i][1]; | 91 | *pointer = segments[i][1]; | 
| 92 | } | 92 | } | 
| Line 270... | Line 270... | ||
| 270 | int i; | 270 | int i; | 
| 271 | static int init = 0, pipe; | 271 | static int init = 0, pipe; | 
| 272 | static HANDLE inh; | 272 | static HANDLE inh; | 
| 273 |   DWORD dw; | 273 |   DWORD dw; | 
| 274 | 274 | ||
| 275 | if (!xboard && ! | 275 | if (!xboard && !_isatty(_fileno(stdin))) // Pierre-Marie Baty -- ISO C++ name conformance fixes | 
| 276 | return 0; | 276 | return 0; | 
| 277 | if (batch_mode) | 277 | if (batch_mode) | 
| 278 | return 0; | 278 | return 0; | 
| 279 | if (strchr(cmd_buffer, '\n')) | 279 | if (strchr(cmd_buffer, '\n')) | 
| 280 | return 1; | 280 | return 1; | 
| Line 340... | Line 340... | ||
| 340 |  *   search path information in it.                                            * | 340 |  *   search path information in it.                                            * | 
| 341 |  *                                                                             * | 341 |  *                                                                             * | 
| 342 |  ******************************************************************************* | 342 |  ******************************************************************************* | 
| 343 |  */ | 343 |  */ | 
| 344 | void ClearHashTableScores(void) { | 344 | void ClearHashTableScores(void) { | 
| 345 | int i; | 345 | unsigned int i; // Pierre-Marie Baty -- fixed type | 
| 346 | 346 | ||
| 347 | if (hash_table) | 347 | if (hash_table) | 
| 348 | for (i = 0; i < hash_table_size; i++) { | 348 | for (i = 0; i < hash_table_size; i++) { | 
| 349 | (hash_table + i)->word2 ^= (hash_table + i)->word1; | 349 | (hash_table + i)->word2 ^= (hash_table + i)->word1; | 
| 350 | (hash_table + i)->word1 = | 350 | (hash_table + i)->word1 = | 
| Line 848... | Line 848... | ||
| 848 | else if (pv->pathh == 3) | 848 | else if (pv->pathh == 3) | 
| 849 | sprintf(buffer + strlen(buffer), " <50-move>"); | 849 | sprintf(buffer + strlen(buffer), " <50-move>"); | 
| 850 | else if (pv->pathh == 4) | 850 | else if (pv->pathh == 4) | 
| 851 | sprintf(buffer + strlen(buffer), " <EGTB>"); | 851 | sprintf(buffer + strlen(buffer), " <EGTB>"); | 
| 852 | if (strlen(buffer) < 30) | 852 | if (strlen(buffer) < 30) | 
| 853 | for (i = 0; i < 30 - strlen(buffer); i++) | 853 | for (i = 0; i < 30 - (int) strlen(buffer); i++) // Pierre-Marie Baty -- added type cast | 
| 854 | strcat(buffer, " "); | 854 | strcat(buffer, " "); | 
| 855 | strcpy(kibitz_text, buffer); | 855 | strcpy(kibitz_text, buffer); | 
| 856 | for (i = pv->pathl - 1; i > 0; i--) { | 856 | for (i = pv->pathl - 1; i > 0; i--) { | 
| 857 | wtm = Flip(wtm); | 857 | wtm = Flip(wtm); | 
| 858 | UnmakeMove(tree, i, wtm, pv->path[i]); | 858 | UnmakeMove(tree, i, wtm, pv->path[i]); | 
| Line 879... | Line 879... | ||
| 879 |  *  return immediately.  Otherwise we add the fail high/low * | 879 |  *  return immediately.  Otherwise we add the fail high/low * | 
| 880 |  *  indicator (++/--) and then display the times.           * | 880 |  *  indicator (++/--) and then display the times.           * | 
| 881 |  *                                                          * | 881 |  *                                                          * | 
| 882 |  ************************************************************ | 882 |  ************************************************************ | 
| 883 |  */ | 883 |  */ | 
| 884 | if (time < noise_level) | 884 | if (time < (int) noise_level) // Pierre-Marie Baty -- added type cast | 
| 885 | return; | 885 | return; | 
| 886 | if (type == 1) | 886 | if (type == 1) | 
| 887 | fh_indicator = (wtm) ? "++" : "--"; | 887 | fh_indicator = (wtm) ? "++" : "--"; | 
| 888 |   else | 888 |   else | 
| 889 | fh_indicator = (wtm) ? "--" : "++"; | 889 | fh_indicator = (wtm) ? "--" : "++"; | 
| Line 911... | Line 911... | ||
| 911 | sprintf(buffer, "%d. (%s)", move_number, ponder_text); | 911 | sprintf(buffer, "%d. (%s)", move_number, ponder_text); | 
| 912 |   } | 912 |   } | 
| 913 | sprintf(buffer + strlen(buffer), " %s%c", OutputMove(tree, 1, wtm, move), | 913 | sprintf(buffer + strlen(buffer), " %s%c", OutputMove(tree, 1, wtm, move), | 
| 914 | (type == 1) ? '!' : '?'); | 914 | (type == 1) ? '!' : '?'); | 
| 915 | strcpy(kibitz_text, buffer); | 915 | strcpy(kibitz_text, buffer); | 
| 916 | if (time >= noise_level || force) { | 916 | if (time >= (int) noise_level || force) { // Pierre-Marie Baty -- added type cast | 
| 917 | noise_block = 0; | 917 | noise_block = 0; | 
| 918 | Lock(lock_io); | 918 | Lock(lock_io); | 
| 919 | Print(4, "%s", buffer); | 919 | Print(4, "%s", buffer); | 
| 920 | Unlock(lock_io); | 920 | Unlock(lock_io); | 
| 921 | if (type == 1) | 921 | if (type == 1) | 
| Line 989... | Line 989... | ||
| 989 | len = 30 - strlen(buffer); | 989 | len = 30 - strlen(buffer); | 
| 990 | for (i = 0; i < len; i++) | 990 | for (i = 0; i < len; i++) | 
| 991 | strcat(buffer, " "); | 991 | strcat(buffer, " "); | 
| 992 |   } | 992 |   } | 
| 993 | strcpy(kibitz_text, buffer); | 993 | strcpy(kibitz_text, buffer); | 
| 994 | if (time >= noise_level || force) { | 994 | if (time >= (int) noise_level || force) { // Pierre-Marie Baty -- added type cast | 
| 995 | noise_block = 0; | 995 | noise_block = 0; | 
| 996 | Lock(lock_io); | 996 | Lock(lock_io); | 
| 997 | Print(2, " "); | 997 | Print(2, " "); | 
| 998 | if (level == 6) | 998 | if (level == 6) | 
| 999 | Print(2, "%2i %s%s ", pv_depth, Display2Times(time), | 999 | Print(2, "%2i %s%s ", pv_depth, Display2Times(time), | 
| Line 1026... | Line 1026... | ||
| 1026 | idle_time += thread[i].idle; | 1026 | idle_time += thread[i].idle; | 
| 1027 |     busy_percent = | 1027 |     busy_percent = | 
| 1028 | 100 - Min(100, | 1028 | 100 - Min(100, | 
| 1029 | 100 * idle_time / (smp_max_threads * (end_time - start_time) + 1)); | 1029 | 100 * idle_time / (smp_max_threads * (end_time - start_time) + 1)); | 
| 1030 | Kibitz(level, twtm, pv_depth, end_time - start_time, pv->pathv, | 1030 | Kibitz(level, twtm, pv_depth, end_time - start_time, pv->pathv, | 
| 1031 | tree->nodes_searched, busy_percent, tree->egtb_hits, kibitz_text); | 1031 | tree->nodes_searched, busy_percent, (int) tree->egtb_hits, kibitz_text); // Pierre-Marie Baty -- added type cast | 
| 1032 | Unlock(lock_io); | 1032 | Unlock(lock_io); | 
| 1033 |   } | 1033 |   } | 
| 1034 | for (i = pv->pathl - 1; i > 0; i--) { | 1034 | for (i = pv->pathl - 1; i > 0; i--) { | 
| 1035 | wtm = Flip(wtm); | 1035 | wtm = Flip(wtm); | 
| 1036 | UnmakeMove(tree, i, wtm, pv->path[i]); | 1036 | UnmakeMove(tree, i, wtm, pv->path[i]); | 
| Line 1821... | Line 1821... | ||
| 1821 | int ReadInput(void) { | 1821 | int ReadInput(void) { | 
| 1822 | int bytes; | 1822 | int bytes; | 
| 1823 | char buffer[4096], *end; | 1823 | char buffer[4096], *end; | 
| 1824 | 1824 | ||
| 1825 |   do | 1825 |   do | 
| 1826 | bytes = | 1826 | bytes = _read(_fileno(input_stream), buffer, 2048); // Pierre-Marie Baty -- ISO C++ name conformance fixes | 
| 1827 | while (bytes < 0 && errno == EINTR); | 1827 | while (bytes < 0 && errno == EINTR); | 
| 1828 | if (bytes == 0) { | 1828 | if (bytes == 0) { | 
| 1829 | if (input_stream != stdin) | 1829 | if (input_stream != stdin) | 
| 1830 | fclose(input_stream); | 1830 | fclose(input_stream); | 
| 1831 | input_stream = stdin; | 1831 | input_stream = stdin; | 
| Line 2321... | Line 2321... | ||
| 2321 |  *   StrCnt() counts the number of times a character occurs in a string.       * | 2321 |  *   StrCnt() counts the number of times a character occurs in a string.       * | 
| 2322 |  *                                                                             * | 2322 |  *                                                                             * | 
| 2323 |  ******************************************************************************* | 2323 |  ******************************************************************************* | 
| 2324 |  */ | 2324 |  */ | 
| 2325 | int StrCnt(char *string, char testchar) { | 2325 | int StrCnt(char *string, char testchar) { | 
| 2326 | int count = 0 | 2326 | int count = 0; size_t i; // Pierre-Marie Baty -- fixed type | 
| 2327 | 2327 | ||
| 2328 | for (i = 0; i < strlen(string); i++) | 2328 | for (i = 0; i < strlen(string); i++) | 
| 2329 | if (string[i] == testchar) | 2329 | if (string[i] == testchar) | 
| 2330 |       count++; | 2330 |       count++; | 
| 2331 | return count; | 2331 | return count; | 
| Line 2528... | Line 2528... | ||
| 2528 | if (pGetNumaHighestNodeNumber && pGetNumaNodeProcessorMask && | 2528 | if (pGetNumaHighestNodeNumber && pGetNumaNodeProcessorMask && | 
| 2529 | pGetNumaHighestNodeNumber(&ulNumaNodes) && (ulNumaNodes > 0)) { | 2529 | pGetNumaHighestNodeNumber(&ulNumaNodes) && (ulNumaNodes > 0)) { | 
| 2530 | fSystemIsNUMA = TRUE; | 2530 | fSystemIsNUMA = TRUE; | 
| 2531 | if (ulNumaNodes > 255) | 2531 | if (ulNumaNodes > 255) | 
| 2532 | ulNumaNodes = 255; | 2532 | ulNumaNodes = 255; | 
| 2533 | printf("System is NUMA. " PRId64 " nodes reported by Windows\n", | 2533 | printf("System is NUMA. %" PRId64 " nodes reported by Windows\n", // Pierre-Marie Baty -- fixed format string | 
| 2534 | ulNumaNodes + 1); | 2534 | (int64_t) (ulNumaNodes + 1)); // Pierre-Marie Baty -- added type cast | 
| 2535 | for (ulNode = 0; ulNode <= ulNumaNodes; ulNode++) { | 2535 | for (ulNode = 0; ulNode <= ulNumaNodes; ulNode++) { | 
| 2536 | pGetNumaNodeProcessorMask((UCHAR) ulNode, | 2536 | pGetNumaNodeProcessorMask((UCHAR) ulNode, | 
| 2537 | &ullProcessorMask[ulNode]); | 2537 | &ullProcessorMask[ulNode]); | 
| 2538 | printf("Node " PRId64 " CPUs: ", ulNode); | 2538 | printf("Node %" PRId64 " CPUs: ", (int64_t) ulNode); // Pierre-Marie Baty -- fixed format string + added type cast | 
| 2539 | ullMask = ullProcessorMask[ulNode]; | 2539 | ullMask = ullProcessorMask[ulNode]; | 
| 2540 | if (0 == ullMask) | 2540 | if (0 == ullMask) | 
| 2541 | fSystemIsNUMA = FALSE; | 2541 | fSystemIsNUMA = FALSE; | 
| 2542 | else { | 2542 | else { | 
| 2543 | ulCPU = 0; | 2543 | ulCPU = 0; | 
| 2544 | do { | 2544 | do { | 
| 2545 | if (ullMask & 1) | 2545 | if (ullMask & 1) | 
| 2546 | printf("" PRId64 " ", ulCPU); | 2546 | printf("%" PRId64 " ", (int64_t) ulCPU); // Pierre-Marie Baty -- fixed format string + added type cast | 
| 2547 |               ulCPU++; | 2547 |               ulCPU++; | 
| 2548 | ullMask >>= 1; | 2548 | ullMask >>= 1; | 
| 2549 | } while (ullMask); | 2549 | } while (ullMask); | 
| 2550 |           } | 2550 |           } | 
| 2551 | printf("\n"); | 2551 | printf("\n"); | 
| Line 2553... | Line 2553... | ||
| 2553 | // Thread 0 was already started on some CPU. To simplify things further, | 2553 | // Thread 0 was already started on some CPU. To simplify things further, | 
| 2554 | // exchange ProcessorMask[0] and ProcessorMask[node for that CPU], | 2554 | // exchange ProcessorMask[0] and ProcessorMask[node for that CPU], | 
| 2555 | // so ProcessorMask[0] would always be node for thread 0 | 2555 | // so ProcessorMask[0] would always be node for thread 0 | 
| 2556 |         dwCPU = | 2556 |         dwCPU = | 
| 2557 | pSetThreadIdealProcessor(GetCurrentThread(), MAXIMUM_PROCESSORS); | 2557 | pSetThreadIdealProcessor(GetCurrentThread(), MAXIMUM_PROCESSORS); | 
| 2558 | printf("Current ideal CPU is %llu\n", dwCPU); | 2558 | printf("Current ideal CPU is %llu\n", (long long unsigned) dwCPU); // Pierre-Marie Baty -- added type cast | 
| 2559 | pSetThreadIdealProcessor(GetCurrentThread(), dwCPU); | 2559 | pSetThreadIdealProcessor(GetCurrentThread(), dwCPU); | 
| 2560 | if ((((DWORD) - 1) != dwCPU) && (MAXIMUM_PROCESSORS != dwCPU) | 2560 | if ((((DWORD) - 1) != dwCPU) && (MAXIMUM_PROCESSORS != dwCPU) | 
| 2561 | && !(ullProcessorMask[0] & ( | 2561 | && !(ullProcessorMask[0] & (1uLL << dwCPU))) { // Pierre-Marie Baty -- fixed type | 
| 2562 | for (ulNode = 1; ulNode <= ulNumaNodes; ulNode++) { | 2562 | for (ulNode = 1; ulNode <= ulNumaNodes; ulNode++) { | 
| 2563 | if (ullProcessorMask[ulNode] & ( | 2563 | if (ullProcessorMask[ulNode] & (1uLL << dwCPU)) { // Pierre-Marie Baty -- fixed type | 
| 2564 | printf("Exchanging nodes 0 and " PRId64 "\n", ulNode); | 2564 | printf("Exchanging nodes 0 and %" PRId64 "\n", (int64_t) ulNode); // Pierre-Marie Baty -- fixed format string + added type cast | 
| 2565 | ullMask = ullProcessorMask[ulNode]; | 2565 | ullMask = ullProcessorMask[ulNode]; | 
| 2566 | ullProcessorMask[ulNode] = ullProcessorMask[0]; | 2566 | ullProcessorMask[ulNode] = ullProcessorMask[0]; | 
| 2567 | ullProcessorMask[0] = ullMask; | 2567 | ullProcessorMask[0] = ullMask; | 
| 2568 | break; | 2568 | break; | 
| 2569 |             } | 2569 |             } | 
| Line 2586... | Line 2586... | ||
| 2586 | if (fSystemIsNUMA) { | 2586 | if (fSystemIsNUMA) { | 
| 2587 |     ulNumaNode++; | 2587 |     ulNumaNode++; | 
| 2588 | if (ulNumaNode > ulNumaNodes) | 2588 | if (ulNumaNode > ulNumaNodes) | 
| 2589 | ulNumaNode = 0; | 2589 | ulNumaNode = 0; | 
| 2590 | ullMask = ullProcessorMask[ulNumaNode]; | 2590 | ullMask = ullProcessorMask[ulNumaNode]; | 
| 2591 | printf("Starting thread on node " PRId64 " CPU mask %I64d\n", ulNumaNode, | 2591 | printf("Starting thread on node %" PRId64 " CPU mask %I64d\n", (int64_t) ulNumaNode, // Pierre-Marie Baty -- fixed format string + added type cast | 
| 2592 | ullMask); | 2592 | ullMask); | 
| 2593 | SetThreadAffinityMask(GetCurrentThread(), (DWORD_PTR) ullMask); | 2593 | SetThreadAffinityMask(GetCurrentThread(), (DWORD_PTR) ullMask); | 
| 2594 | hThread = (HANDLE) _beginthreadex(0, 0, func, args, CREATE_SUSPENDED, 0); | 2594 | hThread = (HANDLE) _beginthreadex(0, 0, func, args, CREATE_SUSPENDED, 0); | 
| 2595 | SetThreadAffinityMask(hThread, (DWORD_PTR) ullMask); | 2595 | SetThreadAffinityMask(hThread, (DWORD_PTR) ullMask); | 
| 2596 | ResumeThread(hThread); | 2596 | ResumeThread(hThread); | 
| 2597 | SetThreadAffinityMask(GetCurrentThread(), ullProcessorMask[0]); | 2597 | SetThreadAffinityMask(GetCurrentThread(), (DWORD_PTR) ullProcessorMask[0]); // Pierre-Marie Baty -- added type cast | 
| 2598 | } else | 2598 | } else | 
| 2599 | hThread = (HANDLE) _beginthreadex(0, 0, func, args, 0, 0); | 2599 | hThread = (HANDLE) _beginthreadex(0, 0, func, args, 0, 0); | 
| 2600 | return hThread; | 2600 | return hThread; | 
| 2601 | } | 2601 | } | 
| 2602 | #  endif | 2602 | #  endif | 
| Line 2610... | Line 2610... | ||
| 2610 | 2610 | ||
| 2611 | WinNumaInit(); | 2611 | WinNumaInit(); | 
| 2612 | if (fSystemIsNUMA) { | 2612 | if (fSystemIsNUMA) { | 
| 2613 | ulNode = iThread % (ulNumaNodes + 1); | 2613 | ulNode = iThread % (ulNumaNodes + 1); | 
| 2614 | hThread = GetCurrentThread(); | 2614 | hThread = GetCurrentThread(); | 
| 2615 | dwAffinityMask = SetThreadAffinityMask(hThread, ullProcessorMask[ulNode]); | 2615 | dwAffinityMask = SetThreadAffinityMask(hThread, (DWORD_PTR) ullProcessorMask[ulNode]); // Pierre-Marie Baty -- added type cast | 
| 2616 | pBytes = VirtualAlloc(NULL, cbBytes, MEM_COMMIT, PAGE_READWRITE); | 2616 | pBytes = VirtualAlloc(NULL, cbBytes, MEM_COMMIT, PAGE_READWRITE); | 
| 2617 | if (pBytes == NULL) | 2617 | if (pBytes == NULL) | 
| 2618 | ExitProcess(GetLastError()); | 2618 | ExitProcess(GetLastError()); | 
| 2619 | memset(pBytes, 0, cbBytes); | 2619 | memset(pBytes, 0, cbBytes); | 
| 2620 | SetThreadAffinityMask(hThread, dwAffinityMask); | 2620 | SetThreadAffinityMask(hThread, dwAffinityMask); | 
| Line 2656... | Line 2656... | ||
| 2656 | dwStep = dwPageSize * cThreads; | 2656 | dwStep = dwPageSize * cThreads; | 
| 2657 | pEnd = pBase + cbBytes; | 2657 | pEnd = pBase + cbBytes; | 
| 2658 | for (iThread = 0; iThread < cThreads; iThread++) { | 2658 | for (iThread = 0; iThread < cThreads; iThread++) { | 
| 2659 | ulNode = iThread % (ulNumaNodes + 1); | 2659 | ulNode = iThread % (ulNumaNodes + 1); | 
| 2660 |       dwAffinityMask = | 2660 |       dwAffinityMask = | 
| 2661 | SetThreadAffinityMask(hThread, ullProcessorMask[ulNode]); | 2661 | SetThreadAffinityMask(hThread, (DWORD_PTR) ullProcessorMask[ulNode]); // Pierre-Marie Baty -- added type cast | 
| 2662 | for (pch = pBase + iThread * dwPageSize; pch < pEnd; pch += dwStep) { | 2662 | for (pch = pBase + iThread * dwPageSize; pch < pEnd; pch += dwStep) { | 
| 2663 | lpvResult = VirtualAlloc(pch, // next page to commit | 2663 | lpvResult = VirtualAlloc(pch, // next page to commit | 
| 2664 | dwPageSize, // page size, in bytes | 2664 | dwPageSize, // page size, in bytes | 
| 2665 | MEM_COMMIT, // allocate a committed page | 2665 | MEM_COMMIT, // allocate a committed page | 
| 2666 | PAGE_READWRITE); // read/write access | 2666 | PAGE_READWRITE); // read/write access |