99 lines
2.8 KiB
99 lines
2.8 KiB
#pragma once
|
|
#include "Tests.h"
|
|
|
|
|
|
class LCG : public TestCase {
|
|
private:
|
|
size_t randomNumbers;
|
|
size_t threadCount;
|
|
std::vector<float> randomBuffer;
|
|
std::vector<float> seedBuffer;
|
|
std::string kernel_name;
|
|
cl::Buffer clHistoBuffer;
|
|
std::vector<int> histoBuffer;
|
|
size_t bucketNum;
|
|
public:
|
|
LCG(size_t _randomNumbers, size_t _threadCount, size_t _bucketNum);
|
|
void collect_results(cl::CommandQueue* queue);
|
|
void gpu_compute(cl::Context* context, cl::CommandQueue* queue, cl::Program* program, cl::Event* Event);
|
|
void cpu_compute();
|
|
bool validate_results();
|
|
std::string description();
|
|
};
|
|
|
|
class LFG : public TestCase {
|
|
private:
|
|
size_t randomNumbers;
|
|
size_t threadCount;
|
|
std::vector<float> randomBuffer;
|
|
std::vector<float> seedBuffer;
|
|
std::string kernel_name;
|
|
size_t randomStateSize;
|
|
cl::Buffer clHistoBuffer;
|
|
size_t bucketNum;
|
|
std::vector<int> histoBuffer;
|
|
public:
|
|
LFG(size_t _randomNumbers, size_t _threadCount, size_t _randomStateSize, size_t _bucketNum);
|
|
void collect_results(cl::CommandQueue* queue);
|
|
void gpu_compute(cl::Context* context, cl::CommandQueue* queue, cl::Program* program, cl::Event* Event);
|
|
void cpu_compute();
|
|
bool validate_results();
|
|
std::string description();
|
|
};
|
|
|
|
class CTG : public TestCase {
|
|
private:
|
|
size_t randomNumbers;
|
|
size_t threadCount;
|
|
std::vector<float> randomBuffer;
|
|
std::vector<float> seedBuffer;
|
|
std::string kernel_name;
|
|
cl::Buffer clHistoBuffer;
|
|
size_t bucketNum;
|
|
std::vector<int> histoBuffer;
|
|
public:
|
|
CTG(size_t _randomNumbers, size_t _threadCount, size_t _bucketNum);
|
|
void collect_results(cl::CommandQueue* queue);
|
|
void gpu_compute(cl::Context* context, cl::CommandQueue* queue, cl::Program* program, cl::Event* Event);
|
|
void cpu_compute();
|
|
bool validate_results();
|
|
std::string description();
|
|
};
|
|
|
|
class Hybrid : public TestCase {
|
|
private:
|
|
size_t randomNumbers;
|
|
size_t threadCount;
|
|
std::vector<float> randomBuffer;
|
|
std::vector<float> seedBuffer;
|
|
std::string kernel_name;
|
|
cl::Buffer clHistoBuffer;
|
|
size_t bucketNum;
|
|
std::vector<int> histoBuffer;
|
|
public:
|
|
Hybrid(size_t _randomNumbers, size_t _threadCount, size_t _bucketNum);
|
|
void collect_results(cl::CommandQueue* queue);
|
|
void gpu_compute(cl::Context* context, cl::CommandQueue* queue, cl::Program* program, cl::Event* Event);
|
|
void cpu_compute();
|
|
bool validate_results();
|
|
std::string description();
|
|
};
|
|
|
|
class Halton : public TestCase {
|
|
private:
|
|
size_t randomNumbers;
|
|
size_t threadCount;
|
|
size_t base;
|
|
std::vector<float> randomBuffer;
|
|
std::string kernel_name;
|
|
cl::Buffer clHistoBuffer;
|
|
size_t bucketNum;
|
|
std::vector<int> histoBuffer;
|
|
public:
|
|
Halton(size_t _randomNumbers, size_t _threadCount, size_t _base, size_t _bucketNum);
|
|
void collect_results(cl::CommandQueue* queue);
|
|
void gpu_compute(cl::Context* context, cl::CommandQueue* queue, cl::Program* program, cl::Event* Event);
|
|
void cpu_compute();
|
|
bool validate_results();
|
|
std::string description();
|
|
};
|