diff options
| author | Ahmed ElTantawy <[email protected]> | 2016-05-13 09:38:58 -0700 |
|---|---|---|
| committer | Ahmed ElTantawy <[email protected]> | 2016-05-13 09:38:58 -0700 |
| commit | 7ac360c0a2defc5612fec6a106c703145e642aaa (patch) | |
| tree | 302c57473dfc6a3ecf0cee9f7aaf292307fc39bc /libcuda | |
| parent | 0b95282e887e6cc6eb48d93d5aa51252588c3260 (diff) | |
detailed error message when minimum found ptx capability is still larger than the maximum forced capability
Diffstat (limited to 'libcuda')
| -rw-r--r-- | libcuda/cuda_runtime_api.cc | 22 | ||||
| -rw-r--r-- | libcuda/cuobjdump.y | 6 |
2 files changed, 16 insertions, 12 deletions
diff --git a/libcuda/cuda_runtime_api.cc b/libcuda/cuda_runtime_api.cc index 7495767..f2e3359 100644 --- a/libcuda/cuda_runtime_api.cc +++ b/libcuda/cuda_runtime_api.cc @@ -1457,18 +1457,22 @@ std::list<cuobjdumpSection*> pruneSectionList(std::list<cuobjdumpSection*> cuobj std::list<cuobjdumpSection*> prunedList; - //Find the highest capability (that is lower than the forces maximum) for each cubin file + //Find the highest capability (that is lower than the forced maximum) for each cubin file //and set it in cuobjdumpSectionMap. Do this only for ptx sections std::map<std::string, unsigned> cuobjdumpSectionMap; + int min_ptx_capability_found=0; for ( std::list<cuobjdumpSection*>::iterator iter = cuobjdumpSectionList.begin(); iter != cuobjdumpSectionList.end(); iter++){ unsigned capability = (*iter)->getArch(); - if(dynamic_cast<cuobjdumpPTXSection*>(*iter) != NULL && - (capability <= forced_max_capability || - forced_max_capability==0)) { - if(cuobjdumpSectionMap[(*iter)->getIdentifier()] < capability) - cuobjdumpSectionMap[(*iter)->getIdentifier()] = capability; + if(dynamic_cast<cuobjdumpPTXSection*>(*iter) != NULL){ + if(capability<min_ptx_capability_found || min_ptx_capability_found==0) + min_ptx_capability_found=capability; + if (capability <= forced_max_capability || forced_max_capability==0) { + if((cuobjdumpSectionMap[(*iter)->getIdentifier()] < capability) || + (cuobjdumpSectionMap.find((*iter)->getIdentifier())==cuobjdumpSectionMap.end())) + cuobjdumpSectionMap[(*iter)->getIdentifier()] = capability; + } } } @@ -1484,8 +1488,10 @@ std::list<cuobjdumpSection*> pruneSectionList(std::list<cuobjdumpSection*> cuobj delete *iter; } } - - assert(!prunedList.empty() && "WARNING: Change -gpgpu_ptx_force_max_capability in gpgpusim.config to match the largest Gencode argument in the Makefile"); + if(prunedList.empty()){ + printf("Error: No PTX sections found with sm capability that is lower than current forced maximum capability \n minimum ptx capability found = %u, maximum forced ptx capability = %u \n User might want to change either the forced maximum capability from gpgpusim configuration or update the compilation to generate the required PTX version",min_ptx_capability_found,forced_max_capability); + abort(); + } return prunedList; } diff --git a/libcuda/cuobjdump.y b/libcuda/cuobjdump.y index 29509e8..dce7e3d 100644 --- a/libcuda/cuobjdump.y +++ b/libcuda/cuobjdump.y @@ -39,7 +39,6 @@ void setCuobjdumpelffilename(const char* filename); void setCuobjdumpsassfilename(const char* filename); int elfserial = 1; int ptxserial = 1; -int yydebug = 1; FILE *ptxfile; FILE *elffile; FILE *sassfile; @@ -84,7 +83,6 @@ section : PTXHEADER { elffile = fopen(filename, "w"); setCuobjdumpelffilename(filename); } headerinfo identifier{ - printf("\nHeader Info and Identifier Parsed\n"); } elfcode { fclose(elffile); snprintf(filename, 1024, "_cuobjdump_%d.sass", elfserial++); @@ -107,8 +105,8 @@ headerinfo : H_SEPARATOR NEWLINE H_HOST IDENTIFIER NEWLINE H_COMPILESIZE IDENTIFIER {setCuobjdumparch($4);}; -identifier : H_IDENTIFIER FILENAME emptylines {setCuobjdumpidentifier($2);}; - | ; +identifier : H_IDENTIFIER FILENAME emptylines {setCuobjdumpidentifier($2);} + | {setCuobjdumpidentifier("default");}; compressedkeyword : H_COMPRESSED emptylines | ; |
