MCPcopy Create free account
hub / github.com/apache/arrow / MakeDeviceSyncEvent

Method MakeDeviceSyncEvent

cpp/src/arrow/gpu/cuda_context.cc:366–383  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

364}
365
366Result<std::shared_ptr<Device::SyncEvent>> CudaMemoryManager::MakeDeviceSyncEvent() {
367 ARROW_ASSIGN_OR_RAISE(auto context, cuda_device()->GetContext());
368 ContextSaver set_temporary(reinterpret_cast<CUcontext>(context.get()->handle()));
369
370 // TODO: event creation flags
371 CUevent ev;
372 CU_RETURN_NOT_OK("cuEventCreate", cuEventCreate(&ev, CU_EVENT_DEFAULT));
373
374 return std::shared_ptr<Device::SyncEvent>(
375 new CudaDevice::SyncEvent(context, new CUevent(ev), [](void* ev) {
376 auto typed_event = reinterpret_cast<CUevent*>(ev);
377 // DCHECK_OK still evaluates its argument in release mode
378 // but in debug mode it'll also throw if it fails
379 DCHECK_OK(
380 internal::StatusFromCuda(cuEventDestroy(*typed_event), "cuEventDestroy"));
381 delete typed_event;
382 }));
383}
384
385Result<std::shared_ptr<Device::SyncEvent>> CudaMemoryManager::WrapDeviceSyncEvent(
386 void* sync_event, Device::SyncEvent::release_fn_t release_sync_event) {

Callers

nothing calls this directly

Calls 3

StatusFromCudaFunction · 0.85
handleMethod · 0.45
getMethod · 0.45

Tested by

no test coverage detected