2016-11-22 7 views
0
__global__ void addKernel(int *c, const int *a, const int *b) 
{ 
    int i = threadIdx.x; 
    auto lamb = [](int x) {return x + 1; }; // Works. 
    auto t = std::make_tuple(1, 2, 3); // Does not work. 
    c[i] = a[i] + b[i]; 
} 

NVCCには少なくともlambdaがありますが、std::make_tupleはコンパイルに失敗します。現在のバージョンのCudaではタプルは許可されていませんか?Cuda C++にはデバイスコードにタプルがありませんか?

+1

デバイスコード –

+0

^^のstd :: * anything *のサポートを正式に提供していません^^問題は継続しますが、CUDAはまだstd :: make_tupleまたはstd :: forward_tupleをサポートしていません(ホストコードでさえ) –

答えて

1
#include <thrust/tuple.h> 

__global__ void addKernel(int *c, const int *a, const int *b) 
{ 
    int i = threadIdx.x; 
    auto lamb = [](int x) {return x + 1; }; // Works. 
    auto t = thrust::make_tuple(1, 2, 3); 
    c[i] = a[i] + b[i]; 
} 

推力ライブラリからそれらを取得する必要がありました。上記はコンパイルされます。

関連する問題