Helper to create a tensor with sequential values
| 67 | |
| 68 | // Helper to create a tensor with sequential values |
| 69 | Tensor create_sequential_tensor(TensorShape shape, Device device = Device::CUDA) { |
| 70 | auto tensor = Tensor::empty(shape, device); |
| 71 | size_t n = tensor.numel(); |
| 72 | |
| 73 | if (device == Device::CUDA) { |
| 74 | std::vector<float> data(n); |
| 75 | for (size_t i = 0; i < n; ++i) { |
| 76 | data[i] = static_cast<float>(i); |
| 77 | } |
| 78 | cudaMemcpy(tensor.ptr<float>(), data.data(), n * sizeof(float), cudaMemcpyHostToDevice); |
| 79 | } else { |
| 80 | float* data = tensor.ptr<float>(); |
| 81 | for (size_t i = 0; i < n; ++i) { |
| 82 | data[i] = static_cast<float>(i); |
| 83 | } |
| 84 | } |
| 85 | |
| 86 | return tensor; |
| 87 | } |
| 88 | |
| 89 | // Helper to create PyTorch sequential tensor |
| 90 | torch::Tensor create_torch_sequential(const std::vector<int64_t>& shape, |