Распределитель упорных устройств против стандартного распределителяC++

Программы на C++. Форум разработчиков
Ответить
Anonymous
 Распределитель упорных устройств против стандартного распределителя

Сообщение Anonymous »

У меня есть очень простой класс, использующий распределитель устройств тяги.

У меня также есть класс на стороне хоста, использующий std::allocator. Он работает нормально. Но этот дает ошибку сегментации.

Я не уверен, что здесь не так. Как я могу использовать Thump lib, чтобы иметь простой класс с указателем устройства и конструктором заполнения.
Простой код ниже просто дает мне:

Ошибка сегментации

Ошибка выполнения с ненулевым кодом выхода: 139
#include
#include
#include // Provides thrust::device_allocator
#include
#include

// The default allocator now uses the correct, fully qualified name:
// thrust::device_allocator
template
class flat1d {
public:
using value_type = T;
using size_type = std::size_t;
using allocator_type = Allocator;

// Use std::allocator_traits to get the correct Thrust pointer type
using pointer = typename std::allocator_traits::pointer;

private:
pointer data_ = nullptr;
size_type size_ = 0;
allocator_type alloc_;

public:
// Destructor: Cleans up the device memory using the allocator
~flat1d() {
if (data_ != nullptr) {
alloc_.deallocate(data_, size_);
}
}

flat1d() = default;

// The Fill Constructor
flat1d(size_type count, const value_type& value, const Allocator& alloc = Allocator())
: size_(count), alloc_(alloc)
{
if (count == 0) return;

// 1. Allocate device memory
data_ = alloc_.allocate(count);

// 2. Use Thrust fill algorithm
thrust::fill(data_, data_ + size_, value);
}
};

// --- Example Usage (Main function) ---
int main() {
const std::size_t N = 10;
const float FILL_VALUE = 3.14159f;

std::cout

Подробнее здесь: https://stackoverflow.com/questions/798 ... -allocator
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C++»