counting_iterator
CUDAの推力ライブラリがわかりません。その目的は何ですか、どのように使用されますか? C++ などの他のプログラミング言語でも利用できますか?
質問する
2714 次
2 に答える
2
@talonmiesの回答をわずかに変更したさらなる例として、linspace
次のコードでMatlabのコマンドをエミュレートできます
#include <thrust/device_vector.h>
#include <thrust/transform.h>
#include <thrust/functional.h>
#include <thrust/iterator/counting_iterator.h>
#include <thrust/iterator/constant_iterator.h>
#include <cstdio>
void main()
{
const int N = 20;
float a = 3.87f;
float b = 7.11f;
float Dx = (b-a)/(float)(N-1);
thrust::device_vector<float> myvector(N);
thrust::transform(thrust::make_counting_iterator(a/Dx),
thrust::make_counting_iterator((b+1.f)/Dx),
thrust::make_constant_iterator(Dx),
myvector.begin(),
thrust::multiplies<float>());
for(int i=0; i<N; i++) {
float val = myvector[i];
printf("%d %f\n", i, val);
}
getchar();
}
上記のコードは戻ります
0 3.870000
1 4.040526
2 4.211052
3 4.381579
4 4.552105
5 4.722631
6 4.893158
7 5.063684
8 5.234210
9 5.404737
10 5.575263
11 5.745790
12 5.916316
13 6.086842
14 6.257369
15 6.427895
16 6.598421
17 6.768948
18 6.939474
19 7.110000
正確にlinspace(3.87,7.11,20)
。
于 2014-04-17T21:52:17.880 に答える