Gibt es eine effiziente Möglichkeit, eine Teilmenge eines C# -Arrays zu übernehmen und an ein anderes Stück Code zu übergeben (ohne das ursprüngliche Array zu ändern)? Ich benutze CUDA.net mit einer Funktion, die ein Array auf die GPU kopiert. Ich möchte z.B. Übergeben Sie die Funktion ein Zehntel des Arrays und kopieren Sie so jedes 10. des Arrays separat auf die GPU (für Pipelining-Zwecke).Array-Subsets effizient abrufen
Das Kopieren des Arrays auf diese Weise sollte genauso effizient sein wie das Kopieren auf einmal. Es kann mit unsicherem Code gemacht werden und nur auf den richtigen Speicherort verweisen, aber anders als ich bin mir nicht sicher. Die CopyTo-Funktion kopiert das gesamte Array in ein anderes Array, so dass dies nicht sinnvoll erscheint.
gut Das ist für einige Zwecke, aber das ist nicht effizient, ein Array.Copy würde viel schneller sein. –
In welcher Weise ist es nicht effizient? Wenn Sie nur Teile eines Arrays iterieren möchten, ist dies effizienter als das Kopieren eines Arrays. –
Sorry sollte es in der richtigen Weise erklären. Für das Iterieren mag es richtig sein, aber es gibt viele Operationen, die bei der Verwendung von 'yield' auftreten. Der Autor des Fragenautors ist, wie man eine Teilmenge eines Arrays in die GPU kopiert. Wenn man die oben beschriebene Methode benutzt, muss man 'ToArray()' aufrufen, was furchtbar ineffizient wäre. Die Methode ist nicht schlecht, aber nicht gut für diesen Zweck imho. –