mirror of
https://github.com/lordmathis/CUDANet.git
synced 2025-11-06 01:34:22 +00:00
Implement vector mean calculation
This commit is contained in:
@@ -36,6 +36,32 @@ __global__ void Kernels::vec_vec_add(
|
||||
d_output[tid] = d_vector1[tid] + d_vector2[tid];
|
||||
}
|
||||
|
||||
__global__ void Kernels::vec_vec_sub(
|
||||
const float* __restrict__ d_vector1,
|
||||
const float* __restrict__ d_vector2,
|
||||
float* __restrict__ d_output,
|
||||
const unsigned int w
|
||||
) {
|
||||
int tid = blockDim.x * blockIdx.x + threadIdx.x;
|
||||
if (tid >= w) {
|
||||
return;
|
||||
}
|
||||
d_output[tid] = d_vector1[tid] - d_vector2[tid];
|
||||
}
|
||||
|
||||
__global__ void Kernels::vec_vec_mul(
|
||||
const float* __restrict__ d_vector1,
|
||||
const float* __restrict__ d_vector2,
|
||||
float* __restrict__ d_output,
|
||||
const unsigned int w
|
||||
) {
|
||||
int tid = blockDim.x * blockIdx.x + threadIdx.x;
|
||||
if (tid >= w) {
|
||||
return;
|
||||
}
|
||||
d_output[tid] = d_vector1[tid] * d_vector2[tid];
|
||||
}
|
||||
|
||||
__global__ void Kernels::vec_scalar_sub(
|
||||
const float* __restrict__ d_src,
|
||||
float* __restrict__ d_out,
|
||||
|
||||
@@ -59,4 +59,16 @@ void Utils::sum(float* d_vec, float* d_sum, const unsigned int length) {
|
||||
|
||||
remaining = blocks_needed;
|
||||
}
|
||||
}
|
||||
|
||||
void Utils::mean(float* d_vec, float* d_mean, const unsigned int length) {
|
||||
float sum;
|
||||
Utils::sum(d_vec, &sum, length);
|
||||
*d_mean = sum / length;
|
||||
}
|
||||
|
||||
void Utils::var(float* d_vec, float* d_mean, float* d_var, const unsigned int length) {
|
||||
|
||||
// TODO:
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user