Fix new gfx target naming convention (#397)
This was introduced in recent xnack changes naming changes which affected our offload bundler. This patch will fix issues in HIP samples, ROCR tests, and others.
[ROCm/hip commit: ab7e727fa2]
Bu işleme şunda yer alıyor:
işlemeyi yapan:
Maneesh Gupta
ebeveyn
29c54aa96a
işleme
28ff48c951
@@ -11,25 +11,27 @@
|
||||
using namespace std;
|
||||
|
||||
hsa_isa_t hip_impl::triple_to_hsa_isa(const std::string& triple) {
|
||||
static constexpr const char prefix[] = "hcc-amdgcn--amdhsa-gfx";
|
||||
static constexpr size_t prefix_sz = sizeof(prefix) - 1;
|
||||
static constexpr const char OffloadKind[] = "hcc-";
|
||||
hsa_isa_t Isa = {0};
|
||||
|
||||
hsa_isa_t r = {};
|
||||
|
||||
auto idx = triple.find(prefix);
|
||||
|
||||
if (idx != string::npos) {
|
||||
idx += prefix_sz;
|
||||
string tmp = "AMD:AMDGPU";
|
||||
while (idx != triple.size()) {
|
||||
tmp.push_back(':');
|
||||
tmp.push_back(triple[idx++]);
|
||||
}
|
||||
|
||||
hsa_isa_from_name(tmp.c_str(), &r);
|
||||
if ((triple.size() < sizeof(OffloadKind) - 1) || !std::equal(triple.c_str(), triple.c_str() + sizeof(OffloadKind) - 1, triple.c_str())) {
|
||||
return Isa;
|
||||
}
|
||||
|
||||
return r;
|
||||
std::string validatedTriple = triple.substr(sizeof(OffloadKind) - 1);
|
||||
static constexpr const char oldPrefix[] = "amdgcn--amdhsa-gfx";
|
||||
static constexpr const char newPrefix[] = "amdgcn-amd-amdhsa--gfx";
|
||||
|
||||
if ((triple.size() >= sizeof(oldPrefix) - 1) && std::equal(oldPrefix, oldPrefix + sizeof(oldPrefix) - 1, triple.c_str())) {
|
||||
// Support backwards compatibility with old naming.
|
||||
validatedTriple = newPrefix + triple.substr(sizeof(oldPrefix) - 1);
|
||||
}
|
||||
|
||||
if (HSA_STATUS_SUCCESS != hsa_isa_from_name(validatedTriple.c_str(), &Isa)) {
|
||||
Isa.handle = 0;
|
||||
}
|
||||
|
||||
return Isa;
|
||||
}
|
||||
|
||||
// DATA - STATICS
|
||||
@@ -59,4 +61,4 @@ hip_impl::Bundled_code_header::Bundled_code_header(
|
||||
}
|
||||
|
||||
read(static_cast<const char*>(p), static_cast<const char*>(p) + sz, *this);
|
||||
}
|
||||
}
|
||||
|
||||
Yeni konuda referans
Bir kullanıcı engelle