Почему установка члена класса не работает последовательно внутри ядраC++

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

Сообщение Anonymous »

В Cuda у меня есть простой класс Fpunion5, который имеет два члена: ряды и Cols. Существует конструктор, который принимает два включения и устанавливает строки и Cols к своим ценностям. Затем у меня есть ядро, которое вызывает функцию со значением для рядов и Cols, и которое возвращает переменную FPUnion5. Да, эта функция очень похожа на конструктор, и на самом деле все функция выполняет, вызывает конструктор, а затем возвращает эту переменную. Как ни странно, когда вы просматриваете код в отладчике NSIGH Само ядро, после того, как вызовут функцию и возвращая переменную, ряды и Cols вернулись к 1. Это похоже на непоследовательное поведение. И если у меня есть вторая переменная FPUion5 в этой функции, она правильно устанавливает ряды и Cols. Проблема, по -видимому, возникает только с переменными, которые возвращаются. Это небольшой пример: < /p>
#include "cuda_runtime.h"
#include "device_launch_parameters.h"

#include

#define mydevice __device__

class FP_union5
{
public:
// member variables
int rows;
int cols;

// destructor
mydevice ~FP_union5();

// default constructors

// other constructors

mydevice inline FP_union5(void) : rows(0), cols(0)
{
}

mydevice FP_union5(int r, int c);

mydevice FP_union5(const FP_union5& other); // Copy constructor
mydevice FP_union5& operator=(const FP_union5& other); // Assignment operator

};

mydevice FP_union5::~FP_union5() {}

mydevice FP_union5::FP_union5(int r, int c)
{
rows = r;
cols = c;

if (rows * cols (arraySize);

}


Подробнее здесь: https://stackoverflow.com/questions/794 ... e-a-kernel
Ответить

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

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

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

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

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