나는 cuda를 배우고 있지만, 아직 cuda 장치에 액세스하지 못하고 있으며 일부 통합 메모리 동작에 대해 궁금합니다. 내가 아는 한, 통합 메모리 기능은 데이터를 호스트에서 장치로 전송하여 기본을 알아야합니다. 따라서 cpu가 gpu에서 데이터를 100 번 호출하면 첫 번째 시도에서만 데이터를 전송하고 gpu에서 해당 메모리 공간을 지 웁니다. (지금까지 올바른 나의 해석이다?)이 가정cuda 통합 메모리 : 메모리 전송 동작
1, GPU에서 맞게 의미 프로그래밍 구조가 장치 메모리에 비해 너무 큰 경우, 어떤 행동이의 UM은 몇 가지 최근에 액세스 교환합니다 데이터 구조는 계산을 완료하는 데 필요한 다음 공간을 만들거나 여전히 수동으로 수행해야합니까?
또한 메모리 전송 동작과 관련된 다른 것을 명확히 할 수 있다면 감사하게 생각합니다. 실제 데이터에 액세스하면 데이터가 뒤쪽으로 전송되지만 포인터에 액세스하는 것은 무엇입니까? 예를 들어 동일한 UM 포인터 (포인터의 데이터가 현재 GPP에 있고 다음 코드가 CPU에서 실행 됨)의 두 배열이 있고 첫 번째 배열을 슬라이스하여 요소를 삭제 한 경우 반복 새 배열에 배치되는 포인터를 한 단계 넘기면 데이터에 액세스하여 큐다 밈 전송을 수행 할 수 있습니까? 분명히 아니다.
아마도 마지막 질문에 대한 필자의 예가 너무 명확하지 않았기 때문에 포인터의 메모리를 비우는 것이 아닙니다. 즉, 동일한 UM 포인터를 가진 2 개의 배열이 있지만 첫 번째 양식에서 슬라이스를 원하는 모양으로 만듭니다. 실제 데이터는 해제 될 예정이 아니며 일부 포인터 재생이 발생하고 있습니다. 그런 행동에 대해 아는 것이 있습니까? – user2255757
귀하의 의견을 이해할 수 없으며 아무 것도 공개하지 않았습니다. –
죄송합니다. 귀하의 회신에 대한 시각화가 이상했습니다. 나는 당신이 생각했던 것을 확인했다고 생각합니다. 포인터로 재생해도 장치간에 메모리가 전송되지 않습니다. – user2255757