int main(int argc, char **argv) { auto config = ParseCommandLine(argc, argv); printf("%s\n", mila::version::PrintVersion().c_str()); auto bbp_initial = mila::bbp::sequential::BBPProfiler(); std::string output = bbp_initial.Run(config.number_of_digits, config.starting_position); auto result = bbp_initial.results().at(bbp_initial.main_result()); auto duration = bbp_initial.results().at(bbp_initial.main_duration()); printf("Initial results\n"); printf("%s: %f\n", bbp_initial.main_result().c_str(), result); printf("Duration [us]: %f\n", duration); printf("Number of Digits: %lu\n", config.number_of_digits); printf("Starting Position: %lu\n", config.starting_position); printf("PI in hex: %s\n", output.c_str()); auto results = std::vector<float>(config.number_of_iterations); printf("Iterations\n"); for (size_t i = 0; i < config.number_of_iterations; ++i) { auto bbp = mila::bbp::sequential::BBPProfiler(); bbp.Run(config.number_of_digits, config.starting_position); result = bbp.results().at(bbp.main_result()); duration = bbp.results().at(bbp.main_duration()); printf("Iteration: %lu, %s: %f, Duration [us]: %f\n", i, bbp.main_result().c_str(), result, duration); results[i] = result; } printf("Statistics\n"); printf("Mean: %f\n", mila::utils::Mean(results)); printf("Median: %f\n", mila::utils::Median(results)); printf("Variance: %f\n", mila::utils::Variance(results)); printf("Standard Deviation: %f\n", mila::utils::StandardDeviation(results)); printf("Coefficient of Variation: %f\n", mila::utils::CoefficientOfVariation(results)); return 0; }
int main(int argc, char **argv) { auto config = ParseCommandLine(argc, argv); printf("%s\n", mila::version::PrintVersion().c_str()); auto mean_shift_initial = mila::meanshift::parallel::MeanShiftImageProcessingProfiler(config.platform_id, config.device_id); mean_shift_initial.Run(config.input_file, config.output_file, config.bandwidth); auto result = mean_shift_initial.results().at(mean_shift_initial.main_result()); auto duration = mean_shift_initial.results().at(mean_shift_initial.main_duration()); printf("Initial results\n"); printf("%s: %f\n", mean_shift_initial.main_result().c_str(), result); printf("Duration [us]: %f\n", duration); printf("Platform: %s\n", mean_shift_initial.platform().getName().c_str()); printf("Device: %s\n", mean_shift_initial.device().getName().c_str()); printf("Input file: %s\n", config.input_file.c_str()); printf("Output file: %s\n", config.output_file.c_str()); printf("Bandwidth: %f\n", config.bandwidth); auto results = std::vector<float>(config.number_of_iterations); printf("Iterations\n"); for (size_t i = 0; i < config.number_of_iterations; ++i) { auto mean_shift = mila::meanshift::parallel::MeanShiftImageProcessingProfiler(config.platform_id, config.device_id); mean_shift.Run(config.input_file, config.output_file, config.bandwidth); result = mean_shift.results().at(mean_shift.main_result()); duration = mean_shift.results().at(mean_shift.main_duration()); printf("Iteration: %lu\n", i); printf("Host statistics:\n"); printf("Duration: %f us, %s: %f, Bandwidth: %f GB/s\n", duration, mean_shift.main_result().c_str(), result, mean_shift.GetBandwidth()); printf("OpenCL statistics:\n"); printf("%s\n", mean_shift.GetOpenCLStatisticsAsString().c_str()); results[i] = duration; } printf("Statistics\n"); printf("Mean: %f\n", mila::utils::Mean(results)); printf("Median: %f\n", mila::utils::Median(results)); printf("Variance: %f\n", mila::utils::Variance(results)); printf("Standard Deviation: %f\n", mila::utils::StandardDeviation(results)); printf("Coefficient of Variation: %f\n", mila::utils::CoefficientOfVariation(results)); return 0; }
RecreateOnPlay::Loop::Component::Component( RecreateOnPlay::ConstraintElement& parentConstraint, ::Loop::ProcessModel& element, const Context& ctx, const Id<iscore::Component>& id, QObject* parent): ProcessComponent{parentConstraint, element, id, "LoopComponent", parent}, m_ctx{ctx} { OSSIA::TimeValue main_duration(iscore::convert::time(element.constraint().duration.defaultDuration())); auto loop = OSSIA::Loop::create(main_duration, [] (const OSSIA::TimeValue& t0, const OSSIA::TimeValue&, std::shared_ptr<OSSIA::StateElement>) { }, [this,&element] (OSSIA::TimeEvent::Status newStatus) { element.startEvent().setStatus(static_cast<Scenario::ExecutionStatus>(newStatus)); switch(newStatus) { case OSSIA::TimeEvent::Status::NONE: break; case OSSIA::TimeEvent::Status::PENDING: break; case OSSIA::TimeEvent::Status::HAPPENED: startConstraintExecution(m_ossia_constraint->iscoreConstraint().id()); break; case OSSIA::TimeEvent::Status::DISPOSED: break; default: ISCORE_TODO; break; } }, [this,&element] (OSSIA::TimeEvent::Status newStatus) { element.endEvent().setStatus(static_cast<Scenario::ExecutionStatus>(newStatus)); switch(newStatus) { case OSSIA::TimeEvent::Status::NONE: break; case OSSIA::TimeEvent::Status::PENDING: break; case OSSIA::TimeEvent::Status::HAPPENED: stopConstraintExecution(m_ossia_constraint->iscoreConstraint().id()); break; case OSSIA::TimeEvent::Status::DISPOSED: break; default: ISCORE_TODO; break; } } ); m_ossia_process = loop; // TODO also states in BasEelement // TODO put graphical settings somewhere. auto startTN = loop->getPatternStartTimeNode(); auto endTN = loop->getPatternEndTimeNode(); auto startEV = *startTN->timeEvents().begin(); auto endEV = *endTN->timeEvents().begin(); auto startST = OSSIA::State::create(); auto endST = OSSIA::State::create(); startEV->addState(startST); endEV->addState(endST); m_ossia_startTimeNode = new TimeNodeElement{startTN, element.startTimeNode(), m_ctx.devices.list(), this}; m_ossia_endTimeNode = new TimeNodeElement{endTN, element.endTimeNode(), m_ctx.devices.list(), this}; m_ossia_startEvent = new EventElement{startEV, element.startEvent(), m_ctx.devices.list(), this}; m_ossia_endEvent = new EventElement{endEV, element.endEvent(), m_ctx.devices.list(), this}; m_ossia_startState = new StateElement{ element.startState(), startST, m_ctx, this}; m_ossia_endState = new StateElement{ element.endState(), endST, m_ctx, this}; m_ossia_constraint = new ConstraintElement{loop->getPatternTimeConstraint(), element.constraint(), m_ctx, this}; }