mirror of
https://github.com/HChaZZY/Stockfish.git
synced 2025-12-23 18:46:59 +08:00
Fix MSVC NUMA compile issues
closes https://github.com/official-stockfish/Stockfish/pull/5298 No functional change
This commit is contained in:
@@ -77,6 +77,8 @@ using AlignedPtr = std::unique_ptr<T, AlignedDeleter<T>>;
|
|||||||
template<typename T>
|
template<typename T>
|
||||||
using LargePagePtr = std::unique_ptr<T, LargePageDeleter<T>>;
|
using LargePagePtr = std::unique_ptr<T, LargePageDeleter<T>>;
|
||||||
|
|
||||||
|
#if defined(__linux__)
|
||||||
|
|
||||||
struct PipeDeleter {
|
struct PipeDeleter {
|
||||||
void operator()(FILE* file) const {
|
void operator()(FILE* file) const {
|
||||||
if (file != nullptr)
|
if (file != nullptr)
|
||||||
@@ -86,8 +88,6 @@ struct PipeDeleter {
|
|||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
#if defined(__linux__)
|
|
||||||
|
|
||||||
inline std::optional<std::string> get_system_command_output(const std::string& command) {
|
inline std::optional<std::string> get_system_command_output(const std::string& command) {
|
||||||
std::unique_ptr<FILE, PipeDeleter> pipe(popen(command.c_str(), "r"));
|
std::unique_ptr<FILE, PipeDeleter> pipe(popen(command.c_str(), "r"));
|
||||||
if (!pipe)
|
if (!pipe)
|
||||||
|
|||||||
@@ -51,6 +51,9 @@ static constexpr size_t WIN_PROCESSOR_GROUP_SIZE = 64;
|
|||||||
#define NOMINMAX
|
#define NOMINMAX
|
||||||
#endif
|
#endif
|
||||||
#include <windows.h>
|
#include <windows.h>
|
||||||
|
#if defined small
|
||||||
|
#undef small
|
||||||
|
#endif
|
||||||
|
|
||||||
// https://learn.microsoft.com/en-us/windows/win32/api/processthreadsapi/nf-processthreadsapi-setthreadselectedcpusetmasks
|
// https://learn.microsoft.com/en-us/windows/win32/api/processthreadsapi/nf-processthreadsapi-setthreadselectedcpusetmasks
|
||||||
using SetThreadSelectedCpuSetMasks_t = BOOL (*)(HANDLE, PGROUP_AFFINITY, USHORT);
|
using SetThreadSelectedCpuSetMasks_t = BOOL (*)(HANDLE, PGROUP_AFFINITY, USHORT);
|
||||||
@@ -561,8 +564,8 @@ class NumaConfig {
|
|||||||
if (SetThreadSelectedCpuSetMasks_f != nullptr)
|
if (SetThreadSelectedCpuSetMasks_f != nullptr)
|
||||||
{
|
{
|
||||||
// Only available on Windows 11 and Windows Server 2022 onwards.
|
// Only available on Windows 11 and Windows Server 2022 onwards.
|
||||||
const USHORT numProcGroups =
|
const USHORT numProcGroups = USHORT(
|
||||||
((highestCpuIndex + 1) + WIN_PROCESSOR_GROUP_SIZE - 1) / WIN_PROCESSOR_GROUP_SIZE;
|
((highestCpuIndex + 1) + WIN_PROCESSOR_GROUP_SIZE - 1) / WIN_PROCESSOR_GROUP_SIZE);
|
||||||
auto groupAffinities = std::make_unique<GROUP_AFFINITY[]>(numProcGroups);
|
auto groupAffinities = std::make_unique<GROUP_AFFINITY[]>(numProcGroups);
|
||||||
std::memset(groupAffinities.get(), 0, sizeof(GROUP_AFFINITY) * numProcGroups);
|
std::memset(groupAffinities.get(), 0, sizeof(GROUP_AFFINITY) * numProcGroups);
|
||||||
for (WORD i = 0; i < numProcGroups; ++i)
|
for (WORD i = 0; i < numProcGroups; ++i)
|
||||||
|
|||||||
Reference in New Issue
Block a user