Код: Выделить всё
#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]