| 683 | } |
| 684 | |
| 685 | bool StreamExecutor::SynchronousMemcpy(DeviceMemoryBase *device_dst, |
| 686 | const void *host_src, uint64 size) { |
| 687 | VLOG(1) << "Called StreamExecutor::SynchronousMemcpy(device_dst=" |
| 688 | << device_dst->opaque() << ", host_src=" << host_src |
| 689 | << ", size=" << size << ") H2D" << StackTraceIfVLOG10(); |
| 690 | |
| 691 | // Tracing overloaded methods is very difficult due to issues with type |
| 692 | // inference on template args. Since use of these overloaded methods is |
| 693 | // discouraged anyway, this isn't a huge deal. |
| 694 | port::Status status = |
| 695 | implementation_->SynchronousMemcpy(device_dst, host_src, size); |
| 696 | if (!status.ok()) { |
| 697 | LOG(ERROR) << "synchronous memcpy: " << status; |
| 698 | } |
| 699 | return status.ok(); |
| 700 | } |
| 701 | |
| 702 | bool StreamExecutor::SynchronousMemcpy(void *host_dst, |
| 703 | const DeviceMemoryBase &device_src, |
no test coverage detected