| 187 | } |
| 188 | |
| 189 | void Device::print() |
| 190 | { |
| 191 | const int cpu_features = getCPUFeatures(); |
| 192 | std::cout << std::endl; |
| 193 | std::cout << "Embree Ray Tracing Kernels " << RTC_VERSION_STRING << " (" << RTC_HASH << ")" << std::endl; |
| 194 | std::cout << " Compiler : " << getCompilerName() << std::endl; |
| 195 | std::cout << " Build : "; |
| 196 | #if defined(DEBUG) |
| 197 | std::cout << "Debug " << std::endl; |
| 198 | #else |
| 199 | std::cout << "Release " << std::endl; |
| 200 | #endif |
| 201 | std::cout << " Platform : " << getPlatformName() << std::endl; |
| 202 | std::cout << " CPU : " << stringOfCPUModel(getCPUModel()) << " (" << getCPUVendor() << ")" << std::endl; |
| 203 | std::cout << " Threads : " << getNumberOfLogicalThreads() << std::endl; |
| 204 | std::cout << " ISA : " << stringOfCPUFeatures(cpu_features) << std::endl; |
| 205 | std::cout << " Targets : " << supportedTargetList(cpu_features) << std::endl; |
| 206 | const bool hasFTZ = _mm_getcsr() & _MM_FLUSH_ZERO_ON; |
| 207 | const bool hasDAZ = _mm_getcsr() & _MM_DENORMALS_ZERO_ON; |
| 208 | std::cout << " MXCSR : " << "FTZ=" << hasFTZ << ", DAZ=" << hasDAZ << std::endl; |
| 209 | std::cout << " Config" << std::endl; |
| 210 | std::cout << " Threads : " << (numThreads ? toString(numThreads) : std::string("default")) << std::endl; |
| 211 | std::cout << " ISA : " << stringOfCPUFeatures(enabled_cpu_features) << std::endl; |
| 212 | std::cout << " Targets : " << supportedTargetList(enabled_cpu_features) << " (supported)" << std::endl; |
| 213 | std::cout << " " << getEnabledTargets() << " (compile time enabled)" << std::endl; |
| 214 | std::cout << " Features: " << getEmbreeFeatures() << std::endl; |
| 215 | std::cout << " Tasking : "; |
| 216 | #if defined(TASKING_TBB) |
| 217 | std::cout << "TBB" << TBB_VERSION_MAJOR << "." << TBB_VERSION_MINOR << " "; |
| 218 | #if TBB_INTERFACE_VERSION >= 12002 |
| 219 | std::cout << "TBB_header_interface_" << TBB_INTERFACE_VERSION << " TBB_lib_interface_" << TBB_runtime_interface_version() << " "; |
| 220 | #else |
| 221 | std::cout << "TBB_header_interface_" << TBB_INTERFACE_VERSION << " TBB_lib_interface_" << tbb::TBB_runtime_interface_version() << " "; |
| 222 | #endif |
| 223 | #endif |
| 224 | #if defined(TASKING_INTERNAL) |
| 225 | std::cout << "internal_tasking_system "; |
| 226 | #endif |
| 227 | #if defined(TASKING_PPL) |
| 228 | std::cout << "PPL "; |
| 229 | #endif |
| 230 | std::cout << std::endl; |
| 231 | |
| 232 | #if defined(__X86_64__) |
| 233 | /* check of FTZ and DAZ flags are set in CSR */ |
| 234 | if (!hasFTZ || !hasDAZ) |
| 235 | { |
| 236 | #if !defined(_DEBUG) |
| 237 | if (State::verbosity(1)) |
| 238 | #endif |
| 239 | { |
| 240 | std::cout << std::endl; |
| 241 | std::cout << "================================================================================" << std::endl; |
| 242 | std::cout << " WARNING: \"Flush to Zero\" or \"Denormals are Zero\" mode not enabled " << std::endl |
| 243 | << " in the MXCSR control and status register. This can have a severe " << std::endl |
| 244 | << " performance impact. Please enable these modes for each application " << std::endl |
| 245 | << " thread the following way:" << std::endl |
| 246 | << std::endl |
nothing calls this directly
no test coverage detected