summaryrefslogtreecommitdiff
path: root/linalg_test.cu
diff options
context:
space:
mode:
authorAnthony LaTorre <telatorre@gmail.com>2011-05-05 13:26:21 -0400
committerAnthony LaTorre <telatorre@gmail.com>2011-05-05 13:26:21 -0400
commit48cb6fc276143567e13bfec6846721beb4ca2f46 (patch)
treef0b9352b107494bd7c6c4371a3a2d3bd0f4e392a /linalg_test.cu
downloadchroma-48cb6fc276143567e13bfec6846721beb4ca2f46.tar.gz
chroma-48cb6fc276143567e13bfec6846721beb4ca2f46.tar.bz2
chroma-48cb6fc276143567e13bfec6846721beb4ca2f46.zip
beginnings of some cuda linear algebra operations and a kernel to test them.
Diffstat (limited to 'linalg_test.cu')
-rw-r--r--linalg_test.cu99
1 files changed, 99 insertions, 0 deletions
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"