2011-01-26 46 views
0

在C++中,如果我想的複雜陣列我可能會做這樣的事情:的malloc在C複雜<float> ++和CUDA

complex<float> *temp = new complex<float>[size]; 

我能變成一個malloc的聲明呢?

如果我想用cudaMalloc給我一個複雜浮點的GPU上的數組呢?

感謝

回答

3

我能變成一個malloc的聲明呢?

不,您可以使用Placement-New將其更改爲malloc語句。看不出爲什麼你想這樣做。

如果我想使用cudaMalloc給我一個複雜浮點的GPU上的數組呢?

再次,您將不得不使用新的位置。

0

除非complex沒有構造函數,否。在C++中分配數組時應該使用new

+2

不正確。複雜需要是POD類型,不僅沒有用戶定義的構造函數。 – 2011-01-26 23:00:56

+1

來自wiki:C++中的POD類型被定義爲標量類型或POD類。 POD類沒有用戶定義的拷貝賦值操作符,也沒有用戶定義的析構函數,也沒有非自身POD的非靜態數據成員。此外,一個POD類必須是一個聚合,這意味着它沒有用戶聲明的構造函數,沒有私有或非受保護的非靜態數據,沒有基礎和沒有虛函數。 – T33C 2011-01-26 23:06:42

1

對於Cuda來說,複雜的floa值有cuComplex類型,對於雙重複值有cuDoubleComplex類型。 您可以同時使用cudaMalloc或cublasAlloc。