From 48cb6fc276143567e13bfec6846721beb4ca2f46 Mon Sep 17 00:00:00 2001 From: Anthony LaTorre Date: Thu, 5 May 2011 13:26:21 -0400 Subject: beginnings of some cuda linear algebra operations and a kernel to test them. --- linalg_test.cu | 99 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 99 insertions(+) create mode 100644 linalg_test.cu (limited to 'linalg_test.cu') diff --git a/linalg_test.cu b/linalg_test.cu new file mode 100644 index 0000000..c4647a7 --- /dev/null +++ b/linalg_test.cu @@ -0,0 +1,99 @@ +//-*-c-*- + +#include "linalg.h" + +extern "C" +{ + +__global__ void add(int n, float3 *a, float3 *b, float3 *out) +{ + int i; + for (i=0; i < n; i++) + out[i] = a[i] + b[i]; +} + +__global__ void addequal(int n, float3 *a, float3 *b) +{ + int i; + for (i=0; i < n; i++) + a[i] += b[i]; +} + +__global__ void sub(int n, float3 *a, float3 *b, float3 *out) +{ + int i; + for (i=0; i < n; i++) + out[i] = a[i] - b[i]; +} + +__global__ void subequal(int n, float3 *a, float3 *b) +{ + int i; + for (i=0; i < n; i++) + a[i] -= b[i]; +} + +__gloabl__ void addfloat(int n, float3 *a, float c, float3 *out) +{ + int i; + for (i=0; i < n; i++) + out[i] = a[i] + c; +} + +__global__ void addfloatequal(int n, float3 *a, float c) +{ + int i; + for (i=0; i < n; i++) + a += c; +} + +__global__ void subfloat(int n, float3 *a, float c, float3 *out) +{ + int i; + for (i=0; i < n; i++) + out[i] = a[i] - c; +} + +__global__ void subfloatequal(int n, float3 *a, float c) +{ + int i; + for (i=0; i < n; i++) + a[i] -= c; +} + +__global__ void mulfloat(int n, float3 *a, float c, float3 *out) +{ + int i; + for (i=0; i < n; i++) + out[i] = a[i]*c; +} + +__global__ void mulfloatequal(int n, float3 *a, float c) +{ + int i; + for (i=0; i < n; i++) + a *= c; +} + +__global__ void divfloat(int n, float3 *a, float c, float3 *out) +{ + int i; + for (i=0; i < n; i++) + out[i] = a[i]/c; +} + +__global__ void divfloatequal(int n, float3 *a, float c) +{ + int i; + for (i=0; i < n; i++) + a /= c; +} + +__global__ void dot(int n, float3 *a, float3 *b, float* out) +{ + int i; + for (i=0; i < n; i++) + out[i] = dot(a,b); +} + +} // extern "c" -- cgit