Was ich im Titel meine, wenn ich einen Vektor erzeugen will, der von zwei verschiedenen Werten in Vektoren abhängt, wie kann ich das im Schub tun?Wie kann ich eine Schub :: Transformation mit unabhängigen Iteratoren verwenden?
Stellen Sie sich diese Funktion:
void foo(int rows, int columns)
{
std::vector<int> blubb;
for (int x = 0; x < rows; x++)
{
for (int y = 0; y < columns; y++)
{
blubb.push_back(x * y);
}
}
}
ich nicht scheinen, um herauszufinden, wie leicht kann dies Schub verwandeln.
Wenn ich Schub verwenden :: Transformation mit Schub :: counting_iterator würden beiden Iteratoren in jedem Schritt erhöht werden, aber ich will eigentlich die Permutationen, die möglich sind:
void fooGPU(int rows, int columns)
{
thrust::device_vector<int> blubb(rows * columns);
thrust::transform(thrust::make_counting_iterator<int>(0),
thrust::make_counting_iterator<int>(rows),
thrust::make_counting_iterator<int>(0),
blubb.begin(),
thrust::multiplies<int>());
}
ich das Gefühl habe, dass es eine sehr einfache Lösung für dieses Problem, aber ich sehe es nicht.
Die Transformation Iteratoren sind ein schöner Ansatz für das Problem. Am Ende habe ich auch einen sehr ähnlichen Ansatz. Trotzdem vielen Dank für die Antwort. – FreddyKay