2018-03-12 11:29:03 +05:30
|
|
|
#include <iostream>
|
2016-10-04 22:20:50 +05:30
|
|
|
#include "hip/hip_runtime.h"
|
|
|
|
|
#include "hip/hip_runtime_api.h"
|
2016-08-26 13:11:01 -05:00
|
|
|
|
|
|
|
|
#define LEN 1024
|
2018-03-12 11:29:03 +05:30
|
|
|
#define SIZE LEN << 2
|
|
|
|
|
|
|
|
|
|
int main() {
|
|
|
|
|
int *A, *B;
|
|
|
|
|
hipDeviceptr_t Ad, Bd;
|
|
|
|
|
A = new int[LEN];
|
|
|
|
|
B = new int[LEN];
|
|
|
|
|
|
|
|
|
|
for (int i = 0; i < LEN; i++) {
|
|
|
|
|
A[i] = i;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
hipMalloc((void**)&Ad, SIZE);
|
|
|
|
|
hipMalloc((void**)&Bd, SIZE);
|
|
|
|
|
|
|
|
|
|
hipMemcpyHtoD(Ad, A, SIZE);
|
|
|
|
|
hipMemcpyDtoD(Bd, Ad, SIZE);
|
|
|
|
|
hipMemcpyDtoH(B, Bd, SIZE);
|
|
|
|
|
|
|
|
|
|
for (int i = 0; i < 16; i++) {
|
|
|
|
|
std::cout << A[i] << " " << B[i] << std::endl;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
int *Ah, *Bh;
|
|
|
|
|
hipHostMalloc(&Ah, SIZE, 0);
|
|
|
|
|
hipHostMalloc(&Bh, SIZE, 0);
|
|
|
|
|
memcpy(Ah, A, SIZE);
|
|
|
|
|
hipStream_t stream;
|
|
|
|
|
hipStreamCreate(&stream);
|
|
|
|
|
|
|
|
|
|
hipMemcpyHtoDAsync(Ad, Ah, SIZE, stream);
|
|
|
|
|
hipStreamSynchronize(stream);
|
|
|
|
|
hipMemcpyDtoDAsync(Bd, Ad, SIZE, stream);
|
|
|
|
|
hipStreamSynchronize(stream);
|
|
|
|
|
hipMemcpyDtoHAsync(Bh, Bd, SIZE, stream);
|
|
|
|
|
hipStreamSynchronize(stream);
|
|
|
|
|
|
|
|
|
|
std::cout << Ah[10] << " " << Bh[10] << std::endl;
|
2016-08-26 13:11:01 -05:00
|
|
|
}
|