Value Clipping
106 字
1 分钟
Value Clipping
问题

答案
#include <cuda_runtime.h>
__global__ void clip_kernel(const float* input, float* output, float lo, float hi, int N) { int idx = blockDim.x * blockIdx.x + threadIdx.x; if (idx >= N) return; if (input[idx] >= lo && input[idx] <= hi) { output[idx] = input[idx]; } else if (input[idx] < lo) { output[idx] = lo; } else { output[idx] = hi; }}
// input, output are device pointersextern "C" void solve(const float* input, float* output, float lo, float hi, int N) { int threadsPerBlock = 256; int blocksPerGrid = (N + threadsPerBlock - 1) / threadsPerBlock;
clip_kernel<<<blocksPerGrid, threadsPerBlock>>>(input, output, lo, hi, N); cudaDeviceSynchronize();}Value Clipping
https://dongyanzhang.com/posts/leetgpu/value-clipping/


