[SYCL 2020] Use smart pointers instead of raw pointers
This commit is contained in:
parent
1517101ceb
commit
1db9a6b648
@ -51,24 +51,20 @@ SYCLStream<T>::SYCLStream(const int ARRAY_SIZE, const int device_index)
|
|||||||
throw std::runtime_error("SYCL errors detected");
|
throw std::runtime_error("SYCL errors detected");
|
||||||
}
|
}
|
||||||
}});
|
}});
|
||||||
|
|
||||||
|
// No longer need list of devices
|
||||||
|
devices.clear();
|
||||||
|
cached = true;
|
||||||
|
|
||||||
// Create buffers
|
// Create buffers
|
||||||
d_a = new sycl::buffer<T>(array_size);
|
// Only in the constructor at runtime do we know the size, so need to use (smart) pointers
|
||||||
d_b = new sycl::buffer<T>(array_size);
|
d_a = std::make_unique<sycl::buffer<T>>(array_size);
|
||||||
d_c = new sycl::buffer<T>(array_size);
|
d_b = std::make_unique<sycl::buffer<T>>(array_size);
|
||||||
d_sum = new sycl::buffer<T>(1);
|
d_c = std::make_unique<sycl::buffer<T>>(array_size);
|
||||||
|
d_sum = std::make_unique<sycl::buffer<T>>(1);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
template <class T>
|
|
||||||
SYCLStream<T>::~SYCLStream()
|
|
||||||
{
|
|
||||||
delete d_a;
|
|
||||||
delete d_b;
|
|
||||||
delete d_c;
|
|
||||||
delete d_sum;
|
|
||||||
delete queue;
|
|
||||||
devices.clear();
|
|
||||||
}
|
|
||||||
|
|
||||||
template <class T>
|
template <class T>
|
||||||
void SYCLStream<T>::copy()
|
void SYCLStream<T>::copy()
|
||||||
|
|||||||
13
SYCLStream.h
13
SYCLStream.h
@ -8,6 +8,7 @@
|
|||||||
#pragma once
|
#pragma once
|
||||||
|
|
||||||
#include <sstream>
|
#include <sstream>
|
||||||
|
#include <memory>
|
||||||
|
|
||||||
#include "Stream.h"
|
#include "Stream.h"
|
||||||
|
|
||||||
@ -23,16 +24,16 @@ class SYCLStream : public Stream<T>
|
|||||||
int array_size;
|
int array_size;
|
||||||
|
|
||||||
// SYCL objects
|
// SYCL objects
|
||||||
sycl::queue *queue;
|
std::unique_ptr<sycl::queue> queue;
|
||||||
sycl::buffer<T> *d_a;
|
std::unique_ptr<sycl::buffer<T>> d_a;
|
||||||
sycl::buffer<T> *d_b;
|
std::unique_ptr<sycl::buffer<T>> d_b;
|
||||||
sycl::buffer<T> *d_c;
|
std::unique_ptr<sycl::buffer<T>> d_c;
|
||||||
sycl::buffer<T> *d_sum;
|
std::unique_ptr<sycl::buffer<T>> d_sum;
|
||||||
|
|
||||||
public:
|
public:
|
||||||
|
|
||||||
SYCLStream(const int, const int);
|
SYCLStream(const int, const int);
|
||||||
~SYCLStream();
|
~SYCLStream() = default;
|
||||||
|
|
||||||
virtual void copy() override;
|
virtual void copy() override;
|
||||||
virtual void add() override;
|
virtual void add() override;
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user