diff --git a/src/CUDAStream.cu b/src/CUDAStream.cu new file mode 100644 index 0000000..d95f9a1 --- /dev/null +++ b/src/CUDAStream.cu @@ -0,0 +1,29 @@ + +#include "CUDAStream.h" + +template +void CUDAStream::copy() +{ + return; +} + +template +void CUDAStream::mul() +{ + return; +} + +template +void CUDAStream::add() +{ + return; +} + +template +void CUDAStream::triad() +{ + return; +} + +template class CUDAStream; +template class CUDAStream; diff --git a/src/CUDAStream.h b/src/CUDAStream.h new file mode 100644 index 0000000..bfea7ed --- /dev/null +++ b/src/CUDAStream.h @@ -0,0 +1,13 @@ + + +#include "Stream.h" + +template +class CUDAStream : public Stream +{ + public: + void copy(); + void add(); + void mul(); + void triad(); +}; diff --git a/src/Stream.h b/src/Stream.h new file mode 100644 index 0000000..e283437 --- /dev/null +++ b/src/Stream.h @@ -0,0 +1,23 @@ + +#pragma once + +#include + +template +class Stream +{ + public: + // Kernels + // These must be blocking calls + virtual void copy() = 0; + virtual void mul() = 0; + virtual void add() = 0; + virtual void triad() = 0; + + + // Implementation specific device functions + static std::vector getDeviceList(); + static std::vector getDeviceName(); + static std::vector getDeviceDriver(); + +}; diff --git a/src/common.h b/src/common.h new file mode 100644 index 0000000..02d43a2 --- /dev/null +++ b/src/common.h @@ -0,0 +1,2 @@ + +#define VERSION_STRING "2.0" diff --git a/src/main.cpp b/src/main.cpp new file mode 100644 index 0000000..9e22b89 --- /dev/null +++ b/src/main.cpp @@ -0,0 +1,22 @@ + +#include + +#include "common.h" +#include "Stream.h" +#include "CUDAStream.h" + + + +int main(int argc, char *argv[]) +{ + std::cout + << "GPU-STREAM" << std::endl + << "Version:" << VERSION_STRING << std::endl + << "Implementation: " << std::endl; + + Stream *stream; + stream = new CUDAStream(); + + delete[] stream; + +}