Application::Application(int features) : rtcore("start_threads=1,set_affinity=1") { registerOption("help", [this] (Ref<ParseStream> cin, const FileName& path) { printCommandLineHelp(); exit(1); }, "--help: prints help for all supported command line options"); if (features & FEATURE_RTCORE) { registerOption("rtcore", [this] (Ref<ParseStream> cin, const FileName& path) { rtcore += "," + cin->getString(); }, "--rtcore <string>: uses <string> to configure Embree device"); registerOption("threads", [this] (Ref<ParseStream> cin, const FileName& path) { rtcore += ",threads=" + toString(cin->getInt()); }, "--threads <int>: number of threads to use"); registerOption("affinity", [this] (Ref<ParseStream> cin, const FileName& path) { rtcore += ",set_affinity=1"; }, "--affinity: affinitize threads"); registerOption("set_affinity", [this] (Ref<ParseStream> cin, const FileName& path) { rtcore += ",set_affinity=" + cin->getString(); }, "--set_affinity <0/1>: enables or disables affinitizing of threads"); registerOptionAlias("set_affinity","set-affinity"); registerOption("start_threads", [this] (Ref<ParseStream> cin, const FileName& path) { rtcore += ",start_threads=" + cin->getString(); }, "--start_threads <0/1>: starts threads at device creation time if set to 1"); registerOptionAlias("start_threads","start-threads"); registerOption("verbose", [this] (Ref<ParseStream> cin, const FileName& path) { rtcore += ",verbose=" + toString(cin->getInt()); }, "--verbose <int>: sets verbosity level"); registerOption("isa", [this] (Ref<ParseStream> cin, const FileName& path) { rtcore += ",isa=" + cin->getString(); }, "--isa <string>: selects instruction set to use:\n" " sse: select SSE codepath\n" " sse2: select SSE2 codepath\n" " sse3: select SSE3 codepath\n" " ssse3: select SSSE3 codepath\n" " sse4.1: select SSE4.1 codepath\n" " sse4.2: select SSE4.2 codepath\n" " avx: select AVX codepath\n" " avxi: select AVXI codepath\n" " avx2: select AVX2 codepath\n" " avx512knl: select AVX512 codepath for KNL\n" " avx512skx: select AVX512 codepath for SKX\n"); } }
Application::Application(int features) : rtcore("start_threads=1,set_affinity=1"), verbosity(0), log_delta(false), start_time(getSeconds()), last_time(start_time), last_virtual_memory(0), last_resident_memory(0) { if (instance) throw std::runtime_error("internal error: applicaton already created"); instance = this; registerOption("help", [this] (Ref<ParseStream> cin, const FileName& path) { printCommandLineHelp(); exit(1); }, "--help: prints help for all supported command line options"); if (features & FEATURE_RTCORE) { registerOption("rtcore", [this] (Ref<ParseStream> cin, const FileName& path) { rtcore += "," + cin->getString(); }, "--rtcore <string>: uses <string> to configure Embree device"); registerOption("threads", [this] (Ref<ParseStream> cin, const FileName& path) { rtcore += ",threads=" + toString(cin->getInt()); }, "--threads <int>: number of threads to use"); registerOption("affinity", [this] (Ref<ParseStream> cin, const FileName& path) { rtcore += ",set_affinity=1"; }, "--affinity: affinitize threads"); registerOption("set_affinity", [this] (Ref<ParseStream> cin, const FileName& path) { rtcore += ",set_affinity=" + cin->getString(); }, "--set_affinity <0/1>: enables or disables affinitizing of threads"); registerOptionAlias("set_affinity","set-affinity"); registerOption("start_threads", [this] (Ref<ParseStream> cin, const FileName& path) { rtcore += ",start_threads=" + cin->getString(); }, "--start_threads <0/1>: starts threads at device creation time if set to 1"); registerOptionAlias("start_threads","start-threads"); registerOption("verbose", [this] (Ref<ParseStream> cin, const FileName& path) { verbosity = cin->getInt(); rtcore += ",verbose=" + toString(verbosity); }, "--verbose <int>: sets verbosity level"); registerOption("delta", [this] (Ref<ParseStream> cin, const FileName& path) { log_delta = true; }, "--delta: print delta numbers in log"); registerOption("isa", [this] (Ref<ParseStream> cin, const FileName& path) { rtcore += ",isa=" + cin->getString(); }, "--isa <string>: selects instruction set to use:\n" " sse: select SSE codepath\n" " sse2: select SSE2 codepath\n" " sse3: select SSE3 codepath\n" " ssse3: select SSSE3 codepath\n" " sse4.1: select SSE4.1 codepath\n" " sse4.2: select SSE4.2 codepath\n" " avx: select AVX codepath\n" " avxi: select AVXI codepath\n" " avx2: select AVX2 codepath\n" " avx512knl: select AVX512 codepath for KNL\n" " avx512skx: select AVX512 codepath for SKX\n"); } }