Files
paddlepaddle--paddle/paddle/phi/core/os_info.h
T
2026-07-13 12:40:42 +08:00

76 lines
2.4 KiB
C++

/* Copyright (c) 2023 PaddlePaddle Authors. All Rights Reserved.
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License. */
#pragma once
#include <cstdint>
#include <string>
#include <unordered_map>
#ifdef _POSIX_C_SOURCE
#include <time.h>
#endif
#include "paddle/phi/common/port.h"
namespace phi {
// Get system-wide realtime clock in nanoseconds
inline uint64_t PosixInNsec() {
#ifdef _POSIX_C_SOURCE
struct timespec tp;
clock_gettime(CLOCK_REALTIME, &tp);
return tp.tv_sec * 1000 * 1000 * 1000 + tp.tv_nsec;
#else
struct timeval tv;
gettimeofday(&tv, nullptr);
return 1000 * (static_cast<uint64_t>(tv.tv_sec) * 1000000 + tv.tv_usec);
#endif
}
// All kinds of Ids for OS thread
struct ThreadId {
uint64_t std_tid = 0; // std::hash<std::thread::id>
uint64_t sys_tid = 0; // OS-specific, Linux: gettid
uint32_t cupti_tid = 0; // thread_id used by Nvidia CUPTI
};
// Better performance than GetCurrentThreadId
PADDLE_API uint64_t GetCurrentThreadStdId();
// Better performance than GetCurrentThreadId
PADDLE_API uint64_t GetCurrentThreadSysId();
PADDLE_API ThreadId GetCurrentThreadId();
// Return the map from StdTid to ThreadId
// Returns current snapshot of all threads. Make sure there is no thread
// create/destroy when using it.
PADDLE_API std::unordered_map<uint64_t, ThreadId> GetAllThreadIds();
static constexpr const char* kDefaultThreadName = "unnamed";
// Returns kDefaultThreadName if SetCurrentThreadName is never called.
PADDLE_API std::string GetCurrentThreadName();
// Return the map from StdTid to ThreadName
// Returns current snapshot of all threads. Make sure there is no thread
// create/destroy when using it.
PADDLE_API std::unordered_map<uint64_t, std::string> GetAllThreadNames();
// Thread name is immutable, only the first call will succeed.
// Returns false on failure.
PADDLE_API bool SetCurrentThreadName(const std::string& name);
PADDLE_API uint32_t GetProcessId();
} // namespace phi