首页 文章

在cplex中实际消耗的时间

提问于
浏览
0

我有一个cplex C代码,我试图找到真正的经过时间 . 我使用cplex.getTime()但它返回CPU时间(我在UNIX系统上运行它) . 我的第一个问题:CPU时间是否以秒为单位返回?也就是说,它说1500.这意味着1500秒?第二个问题:有没有办法用c获得cplex中的实际经过时间?

2 回答

  • 0

    cplex.getTime()应以秒为单位返回“已用时间”,但通常需要使用“挂钟时间”设置 . 较新的手册没有明显区别,但较旧的手册在这方面更好 . 例如 . CPLEX 10手册说:

    clock-type参数确定ILOG CPLEX如何测量计算时间 . 当只使用一个处理器时,CPU时间(默认值)最合适 . 它报告CPU代表您的应用程序执行计算所花费的时间 . 对于并行执行,CPU时间取决于系统,通常不会反映所需的度量标准 . 在某些并行系统上,它可以测量聚合CPU时间,即所有处理器使用的时间总和 . 在其他情况下,它可能只报告一个进程的CPU时间 . 简而言之,它可能会给你一个误导性的并行速度指示 . 替代类型(挂钟时间)通常更适合并行计算,因为它测量操作开始后经过的总物理时间 . 当多个进程处于活动状态时,并且并行优化器处于活动状态时,挂钟时间可能与CPU时间有很大不同 . 您可以在:Interactive Optimizer中使用命令set clocktype i选择时钟设置的类型 . Concert Technology,使用IloCplex方法setParam(ClockType,i) . 可调用库,具有例程CPXsetintparam(env,CPX_PARAM_CLOCKTYPE,i) . 将i替换为值1指定CPU时间或2指定挂钟时间 .

    或者,只需使用标准系统库调用来获取开始和结束时间并自行进行减法 . 我做了很多 .

  • 0

    在C中,使用以下代码:

    IloNum start;
    start=cplex.getTime();
    cplex.solve();
    cplex.out() << "solution time=" << cplex.getTime()-start << endl;
    

相关问题