Add matrix math kernels

This commit is contained in:
2024-03-05 17:38:46 +01:00
parent cfc5c46d5e
commit 98ad84c659
2 changed files with 53 additions and 0 deletions

View File

@@ -0,0 +1,19 @@
#ifndef MATRIX_MATH_H
#define MATRIX_MATH_H
__global__ void mat_vec_mul_kernel(
const float* d_matrix,
const float* d_vector,
float* d_output,
int w,
int h
);
__global__ void vec_vec_add_kernel(
const float* d_vector1,
const float* d_vector2,
float* d_output,
int w
);
#endif // MATRIX_MATH_H

View File

@@ -0,0 +1,34 @@
#include "matrix_math.cuh"
__global__ void mat_vec_mul_kernel(
const float* d_matrix,
const float* d_vector,
float* d_output,
int w,
int h
) {
int tid = blockDim.x * blockIdx.x + threadIdx.x;
if (tid >= w * h) {
return;
}
for (int i = 0; i < w; i++) {
d_output[tid] += d_matrix[tid * w + i] * d_vector[i];
}
}
__global__ void vec_vec_add_kernel(
const float* d_vector1,
const float* d_vector2,
float* d_output,
int w
) {
int tid = blockDim.x * blockIdx.x + threadIdx.x;
if (tid >= w) {
return;
}
d_output[tid] = d_vector1[tid] + d_vector2[tid];
}