Skip to content
  • Jonas Hahnfeld's avatar
    [OMPT] Add support for ompt_event_task_dependences and ompt_event_task_dependence_pair · 39b68624
    Jonas Hahnfeld authored
    The attached patch adds support for ompt_event_task_dependences and
    ompt_event_task_dependence_pair events from the OMPT specification [1]. These
    events only apply to OpenMP 4.0 and 4.1 (aka 4.5) because task dependencies
    were introduced in 4.0.
    
    With respect to the changes:
    
    ompt_event_task_dependences
    According to the specification, this event is raised after the task has been
    created, thefore this event needs to be raised after ompt_event_task_begin
    (in __kmp_task_start). However, the dependencies are known at
    __kmpc_omp_task_with_deps which occurs before __kmp_task_start. My modifications
    extend the ompt_task_info_t struct in order to store the dependencies of the
    task when _kmpc_omp_task_with_deps occurs and then they are emitted in
    __kmp_task_start just after raising the ompt_event_task_begin. The deps field
    is allocated and valid until the event is raised and it is freed and set
    to null afterwards.
    
    ompt_event_task_dependence_pair
    The processing of the dependences (i.e. checking whenever a dependence is
    already satisfied) is done within __kmp_process_deps. That function checks
    every dependence and calls the __kmp_track_dependence routine which gives some
    support for graphical output. I used that routine to emit the dependence pair
    but I also needed to know the sink_task. Despite the fact that the code within
    KMP_SUPPORT_GRAPH_OUTPUT refers to task_sink it may be null because
    sink->dn.task (there's a comment regarding this) and in fact it does not point
    to a proper pointer value because the value is set in node->dn.task = task;
    after the __kmp_process_deps calls in __kmp_check_deps. I have extended the
    __kmp_process_deps and __kmp_track_dependence parameter list to receive the
    sink_task.
    
    [1] https://github.com/OpenMPToolsInterface/OMPT-Technical-Report/blob/target/ompt-tr.pdf
    
    Patch by Harald Servat
    Differential Revision: http://reviews.llvm.org/D14746
    
    llvm-svn: 259038
    39b68624
Loading