示例#1
0
文件: main.cpp 项目: ltowarek/Mila
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;
}
示例#2
0
文件: main.cpp 项目: ltowarek/Mila
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;
}
示例#3
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};
}