私はこのフォーラムに初めて参加しますが、これらのいくつかが役に立つと思うかもしれません.. Thrust に固執していない場合は、Arrayfireも参照してください。私はごく最近それについて知りましたが、そのような問題に対しては無料です。
たとえば、arrayfire を使用すると、gfor コンストラクトを使用して各間隔の選択基準を並行して評価できます。検討:
// # of intervals n and # of subintervals k
const int n = 10, k = 5;
// this array represets original intervals
array A = seq(n); // A = 0,1,2,...,n-1
// for each interval A[i], subI[i] counts # of subintervals
array subI = zeros(n);
gfor(array i, n) { // in parallel for all intervals
// here evaluate your predicate for interval's subdivision
array pred = A(i)*A(i) + 1234;
subI(i) = pred % (k + 1);
}
//array acc = accum(subI);
int n_total = sum<float>(subI); // compute the total # of intervals
// this array keeps intervals after subdivision
array B = zeros(n_total);
std::cout << "total # of subintervals: " << n_total << "\n";
print(A);
print(subI);
gfor(array i, n_total) {
// populate the array of new intervals
B(i) = ...
}
print(B);
もちろん、それはあなたの間隔がどのように表現されるか、そして細分化にどの基準を使用するかによって異なります..