는 I이 보이는 CPU 측의 데이터 소스를 말한다 들쭉날쭉 한).행함으로써 2D AMP 어레이 행을 채우기
배열 내에서 GPU 메모리의 단일 블록으로 복사하고 싶습니다. 행별로이 행을 수행하는 방법이 있습니까? 다음과 같은 것 :
array<int, 2> gpuArray(cpuBlobOData.size(), numColumns);
for(size_t i=0; i<cpuBlobOData.size(); ++i)
{
auto cpuRow = cpuBlobOData[i];
concurrency::copy(cpuRow.begin(), cpuRow.end(), &gpuArray[i]);
}
나는 이것이 컴파일되지 않는다는 것을 알기 때문에 내가하려고하는 것을 보여줍니다. 이 일을 성취 할 수있는 것이 있습니까? 내가 찾을 수있는 유일한 해결책은 1D 벡터에 cpu 벡터를 복사하고이를 array_view에 매핑하거나 배열에 복사하는 것이 었습니다.
효과가 있지만 낭비적이고 일부 알고리즘의 경우 연속 1D 벡터가 나머지 메모리 공간에 맞지 않을 수 있습니다.
내가 AMP를 알아 내려고 애쓰는 가운데 어떤 조언도 환영합니다.
감사합니다. 성능이 떨어지는 것을 제외하고는 효과가 있었기 때문에 큰 중간 메모리 블록을 고수했습니다. –