Add collective latency profiler (#1785)
* [LatencyProfiler] Initial commit * [LatencyProfiler] Add unit tests * [LatencyProfiler] add more * [LatencyProfiler] Pass unit tests * [LatencyProfiler] Add hooks to integrate with meta internal tools * [LatencyProfiler] Restore install.sh * [LatencyProfiler] Resolved comments 1. add proper license 2. use proper namespace * [LatencyProfiler] Add header
This commit is contained in:
@@ -25,6 +25,7 @@
|
||||
#include <cstring> // std::memcpy
|
||||
#include <cinttypes> // PRIx64
|
||||
#include <cassert>
|
||||
#include "latency_profiler/CollTraceFunc.h"
|
||||
|
||||
using namespace rccl;
|
||||
|
||||
@@ -1656,9 +1657,12 @@ ncclResult_t ncclLaunchKernel(struct ncclComm* comm, struct ncclKernelPlan* plan
|
||||
cudaStream_t launchStream = planner->streams->stream;
|
||||
void* extra[] = {plan->kernelArgs, &plan->kernelArgsSize};
|
||||
|
||||
auto event = latency_profiler::collTraceAquireEventBaseline(plan, launchStream);
|
||||
if (planner->numStreams == 1 && !plan->persistent) {
|
||||
latency_profiler::collTraceRecordStartEvent(comm, launchStream, event.get());
|
||||
comm->lastStream = planner->streams->stream;
|
||||
CUDACHECKGOTO(hipExtLaunchKernel(plan->kernelFn, grid, block, extra, 0, launchStream, NULL, comm->doneEvent, 0), ret, do_return);
|
||||
latency_profiler::collTraceRecordEndEvent(comm, plan, launchStream, std::move(event));
|
||||
return ncclSuccess;
|
||||
}
|
||||
|
||||
@@ -1727,16 +1731,22 @@ ncclResult_t ncclLaunchKernel(struct ncclComm* comm, struct ncclKernelPlan* plan
|
||||
launchConfig.numAttrs = attrs;
|
||||
launchConfig.hStream = launchStream;
|
||||
|
||||
latency_profiler::collTraceRecordStartEvent(comm, launchStream, event.get());
|
||||
CUCHECKGOTO(cuLaunchKernelEx(&launchConfig, fn, nullptr, extra), ret, do_return);
|
||||
latency_profiler::collTraceRecordEndEvent(comm, plan, launchStream, std::move(event));
|
||||
#endif
|
||||
} else {
|
||||
// Standard kernel launch
|
||||
latency_profiler::collTraceRecordStartEvent(comm, launchStream, event.get());
|
||||
CUCHECKGOTO(cuLaunchKernel(fn, grid.x, grid.y, grid.z, block.x, block.y, block.z, smem, launchStream, nullptr, extra), ret, do_return);
|
||||
latency_profiler::collTraceRecordEndEvent(comm, plan, launchStream, std::move(event));
|
||||
}
|
||||
#endif
|
||||
// Standard kernel launch
|
||||
//cuLaunchKernel(sym, grid.x, grid.y, grid.z, block.x, block.y, block.z, smem, launchStream, nullptr, extra);
|
||||
latency_profiler::collTraceRecordStartEvent(comm, launchStream, event.get());
|
||||
CUDACHECKGOTO(cudaLaunchKernel(sym, grid, block, extra, smem, launchStream), ret, do_return);
|
||||
latency_profiler::collTraceRecordEndEvent(comm, plan, launchStream, std::move(event));
|
||||
|
||||
do_return:
|
||||
return ret;
|
||||
|
||||
Reference in New Issue
Block a user