| 131 | } |
| 132 | |
| 133 | cuda_data_void_ptr get ( |
| 134 | size_t size |
| 135 | ) |
| 136 | { |
| 137 | int new_device_id; |
| 138 | CHECK_CUDA(cudaGetDevice(&new_device_id)); |
| 139 | // make room for more devices if needed |
| 140 | if (new_device_id >= (long)buffers.size()) |
| 141 | buffers.resize(new_device_id+16); |
| 142 | |
| 143 | // If we don't have a buffer already for this device then make one, or if it's too |
| 144 | // small, make a bigger one. |
| 145 | cuda_data_void_ptr buff = buffers[new_device_id].lock(); |
| 146 | if (!buff || buff.size() < size) |
| 147 | { |
| 148 | buff = cuda_data_void_ptr(size); |
| 149 | buffers[new_device_id] = buff; |
| 150 | } |
| 151 | |
| 152 | // Finally, return the buffer for the current device |
| 153 | return buff; |
| 154 | } |
| 155 | |
| 156 | private: |
| 157 |
no test coverage detected