| 406 | } |
| 407 | |
| 408 | Result<std::shared_ptr<io::OutputStream>> CudaMemoryManager::GetBufferWriter( |
| 409 | std::shared_ptr<Buffer> buf) { |
| 410 | if (*buf->device() != *device_) { |
| 411 | return Status::Invalid( |
| 412 | "CudaMemoryManager::GetBufferWriter called on foreign buffer " |
| 413 | "for device ", |
| 414 | buf->device()->ToString()); |
| 415 | } |
| 416 | ARROW_ASSIGN_OR_RAISE(auto cuda_buf, CudaBuffer::FromBuffer(buf)); |
| 417 | auto writer = std::make_shared<CudaBufferWriter>(cuda_buf); |
| 418 | // Use 8MB buffering, which yields generally good performance |
| 419 | RETURN_NOT_OK(writer->SetBufferSize(1 << 23)); |
| 420 | return writer; |
| 421 | } |
| 422 | |
| 423 | Result<std::unique_ptr<Buffer>> CudaMemoryManager::AllocateBuffer(int64_t size) { |
| 424 | ARROW_ASSIGN_OR_RAISE(auto context, cuda_device()->GetContext()); |
nothing calls this directly
no test coverage detected