MCPcopy Create free account
hub / github.com/boostorg/compute / main

Function main

perf/perf_random_number_engine.cpp:53–101  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

51}
52
53int main(int argc, char *argv[])
54{
55 // setup and parse command line options
56 po::options_description options("options");
57 options.add_options()
58 ("help", "show usage instructions")
59 ("size", po::value<size_t>()->default_value(8192), "number of values")
60 ("trials", po::value<size_t>()->default_value(3), "number of trials")
61 ("engine", po::value<std::string>()->default_value("default_random_engine"), "random number engine")
62 ;
63 po::variables_map vm;
64 po::store(po::parse_command_line(argc, argv, options), vm);
65 po::notify(vm);
66
67 if(vm.count("help")) {
68 std::cout << options << std::endl;
69 return 0;
70 }
71
72 // setup context and queue for the default device
73 compute::device device = compute::system::default_device();
74 compute::context context(device);
75 compute::command_queue queue(context, device);
76
77 // get command line options
78 const size_t size = vm["size"].as<size_t>();
79 const size_t trials = vm["trials"].as<size_t>();
80 const std::string& engine = vm["engine"].as<std::string>();
81
82 // run benchmark
83 if(engine == "default_random_engine"){
84 perf_random_number_engine<compute::default_random_engine>(size, trials, queue);
85 }
86 else if(engine == "mersenne_twister_engine"){
87 perf_random_number_engine<compute::mt19937>(size, trials, queue);
88 }
89 else if(engine == "linear_congruential_engine"){
90 perf_random_number_engine<compute::linear_congruential_engine<> >(size, trials, queue);
91 }
92 else if(engine == "threefry_engine"){
93 perf_random_number_engine<compute::threefry_engine<> >(size, trials, queue);
94 }
95 else {
96 std::cerr << "error: unknown random number engine '" << engine << "'" << std::endl;
97 return -1;
98 }
99
100 return 0;
101}

Callers

nothing calls this directly

Calls 1

countMethod · 0.45

Tested by

no test coverage detected