Std :: комплекс в ядрах cudaC++

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

Сообщение Anonymous »

CUDA позволяет запускать функции члена ContexPR при компиляции с помощью-expt-relaxed-constexpr . Это позволяет использовать STD :: Complex в ядрах CUDA. Однако, делая это, я получаю неправильные результаты, хотя все правильно компилируется. При использовании STD :: Complex результат неверен (в данном случае он просто копирует значения, не удваивая его). Однако при переходе на cuda :: std :: complex результат верен.

Код: Выделить всё

#include 
#include 
#include 
#include 

//using C = cuda::std::complex;
using C = std::complex;

__global__ void kernel(const C* in, C* out) {
const auto idx = blockIdx.x * blockDim.x + threadIdx.x;
out[idx] = 2.0 * in[idx];
}

int main() {
int num_values = 3;

std::vector in_host(num_values);
std::vector out_host(num_values);

C *in_device;
C *out_device;

cudaMalloc(&in_device, sizeof(C)* num_values);
cudaMalloc(&out_device, sizeof(C) * num_values);

for (int i = 0; i < num_values; ++i)
in_host[i] = C(i, -i);

cudaMemcpy(in_device, in_host.data(), sizeof(C) * num_values, cudaMemcpyHostToDevice);

kernel(in_device, out_device);

cudaMemcpy(out_host.data(), out_device, sizeof(C) * num_values, cudaMemcpyDeviceToHost);

for (int i = 0; i < num_values; ++i) {
std::cout 

Подробнее здесь: [url]https://stackoverflow.com/questions/79748136/stdcomplex-in-cuda-kernels[/url]
Ответить

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

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

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

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

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