added support for K80/sm_37
This commit is contained in:
@@ -33,7 +33,7 @@
|
||||
all: ptxcc ptxgen
|
||||
|
||||
CXX=clang++
|
||||
CXXFLAGS += -O3 --std=c++11
|
||||
CXXFLAGS += -O3 --std=c++11 -Wno-deprecated-register
|
||||
CXXFLAGS += -I/opt/local/include
|
||||
|
||||
LD=clang++
|
||||
|
||||
@@ -117,11 +117,13 @@ static std::vector<std::string> lSplitString(const std::string &s, char delim)
|
||||
static void lUsage(const int ret)
|
||||
{
|
||||
fprintf(stdout, "\nusage: ptxcc [options] file.ptx \n");
|
||||
fprintf(stdout, " [--help]\t\t\t\t This help\n");
|
||||
fprintf(stdout, " [--verbose]\t\t\t\t Be verbose\n");
|
||||
fprintf(stdout, " [--arch={%s}]\t\t\t GPU target architecture\n", "sm_35");
|
||||
fprintf(stdout, " [-o <name>]\t\t\t\t Output file name\n");
|
||||
fprintf(stdout, " [-Xnvcc=<arguments>]\t\t Arguments to pass through to \"nvcc\"\n");
|
||||
fprintf(stdout, " [--help]\t\t\t This help\n");
|
||||
fprintf(stdout, " [--verbose]\t\t\t Be verbose\n");
|
||||
fprintf(stdout, " [--arch=]\t\t\t GPU target architecture\n");
|
||||
fprintf(stdout, " \t\t\t\t sm_35 - K20, K40, GK110 chip \n");
|
||||
fprintf(stdout, " \t\t\t\t sm_37 - K80, GK210 chip \n");
|
||||
fprintf(stdout, " [-o <name>]\t\t\t Output file name\n");
|
||||
fprintf(stdout, " [-Xnvcc=<arguments>]\t Arguments to pass through to \"nvcc\"\n");
|
||||
fprintf(stdout, " \n");
|
||||
exit(ret);
|
||||
}
|
||||
@@ -195,7 +197,7 @@ int main(int _argc, char * _argv[])
|
||||
for (int i= 0; i < (int)nvccArgumentList.size(); i++)
|
||||
fprintf(stderr, " arg= %d : %s \n", i, nvccArgumentList[i].c_str());
|
||||
#endif
|
||||
assert(arch == std::string("sm_35"));
|
||||
assert(arch == std::string("sm_35") || arch == std::string("sm_37"));
|
||||
if (filePTX.empty())
|
||||
{
|
||||
fprintf(stderr, "ptxcc fatal : No input file specified; use option --help for more information\n");
|
||||
|
||||
@@ -76,7 +76,7 @@ struct NVVMProg
|
||||
nvvmProgram get() const {return prog; }
|
||||
};
|
||||
|
||||
static std::string getLibDeviceName(const int computeArch)
|
||||
static std::string getLibDeviceName(int computeArch)
|
||||
{
|
||||
const char *env = getenv("LIBNVVM_HOME");
|
||||
#ifdef LIBNVVM_HOME
|
||||
@@ -97,6 +97,7 @@ static std::string getLibDeviceName(const int computeArch)
|
||||
|
||||
/* Use libdevice for compute_20, if the target is not compute_20, compute_30,
|
||||
* or compute_35. */
|
||||
if (computeArch == 37) computeArch = 35;
|
||||
const std::string libdevice =
|
||||
std::string("/libdevice/libdevice.compute_") +
|
||||
lValueToString(computeArch)+ "." +
|
||||
@@ -219,7 +220,9 @@ static void lUsage(const int ret)
|
||||
fprintf(stdout, "\nusage: ptxgen [options] file.[ll,bc] \n");
|
||||
fprintf(stdout, " [--help]\t\t This help\n");
|
||||
fprintf(stdout, " [--verbose]\t\t Be verbose\n");
|
||||
fprintf(stdout, " [--arch={%s}]\t GPU target architecture\n", "sm_35");
|
||||
fprintf(stdout, " [--arch=]\t\t GPU target architecture\n");
|
||||
fprintf(stdout, " \t\t\t sm_35 - K20, K40, GK110 chip \n");
|
||||
fprintf(stdout, " \t\t\t sm_37 - K80, GK210 chip \n");
|
||||
fprintf(stdout, " [-o <name>]\t\t Output file name\n");
|
||||
fprintf(stdout, " [-g]\t\t Enable generation of debuggin information \n");
|
||||
fprintf(stdout, " [--opt=]\t\t Optimization parameters \n");
|
||||
@@ -334,7 +337,10 @@ int main(int argc, char *argv[])
|
||||
#endif
|
||||
|
||||
int computeArch = 35;
|
||||
assert(_arch == std::string("sm_35"));
|
||||
assert(_arch == std::string("sm_35") || _arch == std::string("sm_37"));
|
||||
|
||||
if (_arch == std::string("sm_37"))
|
||||
computeArch = 37;
|
||||
|
||||
if (_useFastMath)
|
||||
{
|
||||
@@ -343,7 +349,7 @@ int main(int argc, char *argv[])
|
||||
}
|
||||
|
||||
std::vector<std::string> nvvmOptions;
|
||||
nvvmOptions.push_back("-arch=compute_35");
|
||||
nvvmOptions.push_back("-arch=compute_"+std::to_string(computeArch));
|
||||
nvvmOptions.push_back("-ftz=" + lValueToString(_ftz));
|
||||
nvvmOptions.push_back("-prec-sqrt=" + lValueToString(_precSqrt));
|
||||
nvvmOptions.push_back("-prec-div=" + lValueToString(_precDiv));
|
||||
|
||||
@@ -116,7 +116,11 @@ header:
|
||||
version:
|
||||
TOKEN_VERSION TOKEN_FLOAT { assert($2 >= 3.0); } ;//std::cerr << "Reading PTX version " << $2 << std::endl; };
|
||||
target:
|
||||
TOKEN_TARGET TOKEN_STRING { assert(std::string($2) == std::string("sm_35")); } //std::cerr << "Target " << $2 << std::endl; };
|
||||
TOKEN_TARGET TOKEN_STRING {
|
||||
assert(
|
||||
std::string($2) == std::string("sm_35")
|
||||
|| std::string($2) == std::string("sm_37")
|
||||
); } //std::cerr << "Target " << $2 << std::endl; };
|
||||
address_size:
|
||||
TOKEN_ADDRESS_SIZE TOKEN_INT { assert($2 == 64); } //std::cerr << "Address_Size " << $2 << std::endl; };
|
||||
|
||||
|
||||
Reference in New Issue
Block a user