| 412 | } |
| 413 | |
| 414 | static void sampler_ping_pong(float* dit_out_data, float* dit_x_in_data, size_t dit_x_in_sz, float cur_t, float next_t, size_t step_idx, size_t seed) { |
| 415 | |
| 416 | for(size_t i = 0; i < dit_x_in_sz; i++) { |
| 417 | dit_out_data[i] = dit_x_in_data[i] - ( cur_t * dit_out_data[i]); |
| 418 | } |
| 419 | |
| 420 | std::vector<float> rand_tensor(dit_x_in_sz); |
| 421 | fill_random_norm_dist(rand_tensor.data(), dit_x_in_sz, seed); |
| 422 | |
| 423 | // x = (1-t_next) * denoised + t_next * torch.randn_like(x) |
| 424 | for(size_t i = 0; i < dit_x_in_sz; i++) { |
| 425 | dit_x_in_data[i] = ((1.0f - next_t) * dit_out_data[i]) + (next_t * rand_tensor[i]); |
| 426 | } |
| 427 | } |
| 428 | |
| 429 | int main(int32_t argc, char** argv) { |
| 430 |
no test coverage detected