SWDEV-378651 - add proper wavefrontsize link time option to hipRTC, in accordance with env variable GPU_ENABLE_WAVE32_MODE

This is a copy of http://gerrit-git.amd.com/c/compute/ec/hipamd/+/841299
Raising this here again since hipamd repo is frozen.

Change-Id: I8722ef55f78a9176e131fd5766fb11101b51f1b5


[ROCm/clr commit: cec579c006]
이 커밋은 다음에 포함됨:
Vikram
2023-05-02 01:28:59 -04:00
커밋한 사람 Vikram Hegde
부모 2fab383d94
커밋 41ee2ee689
3개의 변경된 파일22개의 추가작업 그리고 2개의 파일을 삭제
+1
파일 보기
@@ -188,6 +188,7 @@ endif()
set(HIPRTC_OBJECTS)
# Add hiprtc
set(FIXME_DIR ${CMAKE_CURRENT_BINARY_DIR}/CMakeFiles/amdhip64.dir)
add_subdirectory(hiprtc)
if(NOT WIN32)
+2
파일 보기
@@ -96,6 +96,8 @@ if(BUILD_SHARED_LIBS)
endif()
if(WIN32)
target_link_libraries(hiprtc PRIVATE ${FIXME_DIR}/fixme.cpp${CMAKE_CXX_OUTPUT_EXTENSION})
add_dependencies(hiprtc amdhip64)
target_link_libraries(hiprtc PRIVATE Dbghelp.lib)
endif()
+19 -2
파일 보기
@@ -133,8 +133,6 @@ RTCCompileProgram::RTCCompileProgram(std::string name_) : RTCProgram(name_), fgp
if (GPU_ENABLE_WGP_MODE) compile_options_.push_back("-mcumode");
if (!GPU_ENABLE_WAVE32_MODE) compile_options_.push_back("-mwavefrontsize64");
compile_options_.push_back(hipVerOpt);
compile_options_.push_back(hipVerMajor);
compile_options_.push_back(hipVerMinor);
@@ -261,6 +259,14 @@ bool RTCCompileProgram::transformOptions(std::vector<std::string>& compile_optio
return findIsa();
}
static inline uint getArchMajorVersion(std::string &isa) {
if (const amd::Isa *isaIter = amd::Isa::findIsa(isa.data())) {
return isaIter->versionMajor();
}
return static_cast<uint>(-1);
}
amd::Monitor RTCProgram::lock_("HIPRTC Program", true);
bool RTCCompileProgram::compile(const std::vector<std::string>& options, bool fgpu_rdc) {
@@ -286,6 +292,17 @@ bool RTCCompileProgram::compile(const std::vector<std::string>& options, bool fg
return false;
}
// Decide whether to enable wave64 compilation
auto majorVer = getArchMajorVersion(isa_);
if (majorVer <= 9 || !GPU_ENABLE_WAVE32_MODE) {
if (majorVer > 9) {
LogWarning("Wavefront size 64 is experimental for gfx10 and above. Warp "
"functions may not work");
}
compileOpts.push_back("-mwavefrontsize64");
link_options_.push_back("wavefrontsize64");
}
if (!compileToBitCode(compile_input_, isa_, compileOpts, build_log_, LLVMBitcode_)) {
LogError("Error in hiprtc: unable to compile source to bitcode");
return false;