.. _program_listing_file_SeQuant_domain_eval_eval_result.cpp: Program Listing for File eval_result.cpp ======================================== |exhale_lsh| :ref:`Return to documentation for file ` (``SeQuant/domain/eval/eval_result.cpp``) .. |exhale_lsh| unicode:: U+021B0 .. UPWARDS ARROW WITH TIP LEFTWARDS .. code-block:: cpp #include namespace sequant { EvalResult::id_t EvalResult::next_id() noexcept { static std::atomic grand_type_id = 0; return ++grand_type_id; } bool EvalResult::has_value() const noexcept { return value_.has_value(); } void log_ta_tensor_host_memory_use(madness::World& world, std::string_view label) { #if defined(TA_TENSOR_MEM_PROFILE) && defined(SEQUANT_EVAL_TRACE) auto logger = Logger::instance(); if (logger->log_level_eval < 3) return; std::vector hwsize(world.size(), 0); std::vector currsize(world.size(), 0); std::vector actsize(world.size(), 0); hwsize[world.rank()] = TA::hostEnv::instance()->host_allocator_getActualHighWatermark(); currsize[world.rank()] = TA::hostEnv::instance()->host_allocator().getCurrentSize(); actsize[world.rank()] = TA::hostEnv::instance()->host_allocator().getActualSize(); world.gop.sum(hwsize.data(), hwsize.size()); world.gop.sum(currsize.data(), currsize.size()); world.gop.sum(actsize.data(), actsize.size()); std::ostringstream oss; oss << label << ": TA_TENSOR_MEM_PROFILE allocation statistics (MiB):\n"; oss << std::setw(5) << "rank" // << std::setw(12) << "hw" // << std::setw(12) << "cur" // << std::setw(12) << "act" // << '\n'; // oss << "--------------------------------------------\n"; std::uint64_t total = 0; for (auto rank = 0; rank != world.size(); ++rank) { oss << std::setw(5) << rank // << std::setw(12) << hwsize[rank] / (1 << 20) // << std::setw(12) << currsize[rank] / (1 << 20) // << std::setw(12) << actsize[rank] / (1 << 20) // << '\n'; total += currsize[rank] / (1 << 20); } oss << std::setw(5) << "total" // << std::setw(12) << "" // << std::setw(12) << total // << std::setw(12) << "" // << '\n'; oss << "--------------------------------------------" << std::endl; write_log(logger, oss.str()); #endif } } // namespace sequant