Merge branch 'privatestaging' of https://github.com/AMDComputeLibraries/HIP-privatestaging into privatestaging
This commit is contained in:
+19
-5
@@ -1842,10 +1842,10 @@ hipError_t hipPointerGetAttributes(hipPointerAttribute_t *attributes, void* ptr)
|
||||
attributes->isManaged = 0;
|
||||
attributes->allocationFlags = 0;
|
||||
|
||||
e = hipErrorInvalidValue;
|
||||
e = hipErrorUnknown;
|
||||
}
|
||||
#else
|
||||
e = hipErrorInvalidValue;
|
||||
e = hipErrorInvalidDevice;
|
||||
#endif
|
||||
|
||||
return ihipLogStatus(e);
|
||||
@@ -2416,9 +2416,6 @@ hipError_t hipMemcpyAsync(void* dst, const void* src, size_t sizeBytes, hipMemcp
|
||||
if (device == NULL) {
|
||||
e = hipErrorInvalidDevice;
|
||||
|
||||
} else if (kind == hipMemcpyDefault) {
|
||||
e = hipErrorInvalidMemcpyDirection;
|
||||
|
||||
} else if (kind == hipMemcpyHostToHost) {
|
||||
tprintf (TRACE_COPY2, "H2H copy with memcpy");
|
||||
|
||||
@@ -2430,6 +2427,23 @@ hipError_t hipMemcpyAsync(void* dst, const void* src, size_t sizeBytes, hipMemcp
|
||||
memcpy(dst, src, sizeBytes);
|
||||
|
||||
} else {
|
||||
if (kind == hipMemcpyDefault) {
|
||||
std::cout<<"hipMemcpyDefault"<<std::endl;
|
||||
hipPointerAttribute_t att;
|
||||
hipError_t hipSt = hipPointerGetAttributes(&att, dst);
|
||||
if(hipSt == hipSuccess){
|
||||
if(att.devicePointer != NULL && att.hostPointer != NULL){
|
||||
return hipSuccess;
|
||||
}
|
||||
}
|
||||
hipSt = hipPointerGetAttributes(&att, (void*)src);
|
||||
if(hipSt == hipSuccess){
|
||||
if(att.devicePointer != NULL && att.hostPointer != NULL){
|
||||
return hipSuccess;
|
||||
}
|
||||
}
|
||||
else{return hipErrorInvalidMemcpyDirection;}
|
||||
}
|
||||
ihipSignal_t *ihip_signal = stream->getSignal();
|
||||
hsa_signal_store_relaxed(ihip_signal->_hsa_signal, 1);
|
||||
|
||||
|
||||
@@ -44,7 +44,7 @@ int main(int argc, char **argv)
|
||||
//std::cout << "The current env HIP_VISIBLE_DEVICES is"<<str << std::endl;
|
||||
extern char *optarg;
|
||||
extern int optind;
|
||||
int c, err = 0;
|
||||
int c = 0;
|
||||
int retDevCnt=0, retDevInfo=0, setEnvVar=0;
|
||||
int device=0;
|
||||
string env;
|
||||
@@ -64,20 +64,16 @@ int main(int argc, char **argv)
|
||||
case 'h':
|
||||
usage();
|
||||
return 0;
|
||||
break;
|
||||
default :
|
||||
//usage();
|
||||
return -1;
|
||||
break;
|
||||
case '?':
|
||||
err = 1;
|
||||
break;
|
||||
}
|
||||
|
||||
if (setEnvVar ) {
|
||||
//env = "export HIP_VISIBLE_DEVICES=" + env;
|
||||
//cout<<"The received env var is: "<<env<<endl;
|
||||
setenv("HIP_VISIBLE_DEVICES",env.c_str(),1);
|
||||
setenv("CUDA_VISIBLE_DEVICES",env.c_str(),1);
|
||||
cout<<"set env HIP_VISIBLE_DEVICES = "<< env.c_str()<<endl;
|
||||
//verify if the environment variable is set
|
||||
char* pPath;
|
||||
|
||||
@@ -53,6 +53,7 @@ int getDevicePCIBusNum(int deviceID){
|
||||
|
||||
int main() {
|
||||
unsetenv("HIP_VISIBLE_DEVICES");
|
||||
unsetenv("CUDA_VISIBLE_DEVICES");
|
||||
//collect the device pci bus ID for all devices
|
||||
int totalDeviceNum = getDeviceNumber();
|
||||
std::cout << "The total number of available devices is " << totalDeviceNum<< std::endl
|
||||
@@ -68,6 +69,7 @@ int main() {
|
||||
//query the returned device pci bus number, check if match the database
|
||||
for (int i = 0; i < totalDeviceNum ; i++) {
|
||||
setenv("HIP_VISIBLE_DEVICES",(char*)std::to_string(i).c_str(),1);
|
||||
setenv("CUDA_VISIBLE_DEVICES",(char*)std::to_string(i).c_str(),1);
|
||||
//cout<<"HIP_VISIBLE_DEVICES is "<<i<<" data in vector is "<<devPCINum[i]<<endl;
|
||||
//std::cout <<"Returned pci number is"<< getDevicePCIBusNum(0) << std::endl;
|
||||
if (devPCINum[i] != getDevicePCIBusNum(0)) {
|
||||
@@ -81,21 +83,26 @@ int main() {
|
||||
|
||||
//check when set an invalid device number
|
||||
setenv("HIP_VISIBLE_DEVICES","1000,0,1",1);
|
||||
setenv("CUDA_VISIBLE_DEVICES","1000,0,1",1);
|
||||
assert(getDeviceNumber() == 0);
|
||||
|
||||
if(totalDeviceNum > 2){
|
||||
setenv("HIP_VISIBLE_DEVICES","0,1,1000,2",1);
|
||||
setenv("CUDA_VISIBLE_DEVICES","0,1,1000,2",1);
|
||||
assert(getDeviceNumber() == 2);
|
||||
|
||||
setenv("HIP_VISIBLE_DEVICES","0,1,2",1);
|
||||
setenv("CUDA_VISIBLE_DEVICES","0,1,2",1);
|
||||
assert(getDeviceNumber() == 3);
|
||||
// test if CUDA_VISIBLE_DEVICES will be accepted by the runtime
|
||||
unsetenv("HIP_VISIBLE_DEVICES");
|
||||
unsetenv("CUDA_VISIBLE_DEVICES");
|
||||
setenv("CUDA_VISIBLE_DEVICES","0,1,2",1);
|
||||
assert(getDeviceNumber() == 3);
|
||||
}
|
||||
|
||||
setenv("HIP_VISIBLE_DEVICES","-100,0,1",1);
|
||||
setenv("CUDA_VISIBLE_DEVICES","-100,0,1",1);
|
||||
assert(getDeviceNumber() == 0);
|
||||
|
||||
std::cout << "PASSED" << std::endl;
|
||||
|
||||
@@ -20,8 +20,7 @@ void simpleNegTest()
|
||||
|
||||
// Can't use default with async copy
|
||||
e = hipMemcpyAsync(A_pinned, A_d, Nbytes, hipMemcpyDefault, NULL);
|
||||
HIPASSERT (e==hipErrorInvalidMemcpyDirection); // TODO
|
||||
HIPASSERT (e!= hipSuccess);
|
||||
HIPASSERT (e == hipSuccess);
|
||||
|
||||
|
||||
// Not sure what happens here, the memory must be pinned.
|
||||
@@ -337,8 +336,8 @@ int main(int argc, char *argv[])
|
||||
hipStream_t stream;
|
||||
HIPCHECK (hipStreamCreate(&stream));
|
||||
|
||||
test_pingpong<int, Pinned>(stream, 1024*1024*32, 1, 1, false);
|
||||
test_pingpong<int, Pinned>(stream, 1024*1024*32, 1, 10, false);
|
||||
// test_pingpong<int, Pinned>(stream, 1024*1024*32, 1, 1, false);
|
||||
// test_pingpong<int, Pinned>(stream, 1024*1024*32, 1, 10, false);
|
||||
|
||||
HIPCHECK(hipStreamDestroy(stream));
|
||||
}
|
||||
|
||||
@@ -164,7 +164,7 @@ void testSimple()
|
||||
|
||||
hipFree(A_d);
|
||||
e = hipPointerGetAttributes(&attribs, A_d);
|
||||
HIPASSERT(e == hipErrorInvalidValue); // Just freed the pointer, this should return an error.
|
||||
HIPASSERT(e == hipErrorUnknown); // Just freed the pointer, this should return an error.
|
||||
|
||||
|
||||
// Device-visible host memory
|
||||
@@ -180,7 +180,7 @@ void testSimple()
|
||||
|
||||
hipFreeHost(A_Pinned_h);
|
||||
e = hipPointerGetAttributes(&attribs, A_Pinned_h);
|
||||
HIPASSERT(e == hipErrorInvalidValue); // Just freed the pointer, this should return an error.
|
||||
HIPASSERT(e == hipErrorUnknown); // Just freed the pointer, this should return an error.
|
||||
printf("getAttr:%-20s err=%d (%s), neg-test expected\n", "A_d+NBytes", e, hipGetErrorString(e));
|
||||
|
||||
|
||||
@@ -188,7 +188,7 @@ void testSimple()
|
||||
printf ("\nOS-allocated memory (malloc)\n");
|
||||
e = hipPointerGetAttributes(&attribs, A_OSAlloc_h);
|
||||
printf("getAttr:%-20s err=%d (%s), neg-test expected\n", "A_OSAlloc_h", e, hipGetErrorString(e));
|
||||
HIPASSERT(e == hipErrorInvalidValue); // OS-allocated pointers should return hipErrorInvalidValue.
|
||||
HIPASSERT(e == hipErrorUnknown); // OS-allocated pointers should return hipErrorUnknown.
|
||||
}
|
||||
|
||||
//---
|
||||
|
||||
Fai riferimento in un nuovo problema
Block a user