| 394 | } |
| 395 | |
| 396 | std::shared_ptr<device_queue> cuda_context::create_queue(const device& dev) const { |
| 397 | // ensure context is set for the calling thread |
| 398 | const auto& cuda_dev = (const cuda_device&)dev; |
| 399 | if (cuda_dev.ctx != nullptr) { |
| 400 | if (!cuda_dev.make_context_current()) { |
| 401 | return {}; |
| 402 | } |
| 403 | } |
| 404 | |
| 405 | cu_stream stream; |
| 406 | CU_CALL_RET(cu_stream_create(&stream, CU_STREAM_FLAGS::NON_BLOCKING), |
| 407 | "failed to create CUDA stream", {}) |
| 408 | |
| 409 | auto ret = std::make_shared<cuda_queue>(dev, stream); |
| 410 | queues.push_back(ret); |
| 411 | return ret; |
| 412 | } |
| 413 | |
| 414 | const device_queue* cuda_context::get_device_default_queue(const device& dev) const { |
| 415 | const auto def_queue_iter = default_queues.find(&dev); |
nothing calls this directly
no test coverage detected