nvptx-tools: add v2023-09-13 (#40897)
New changes have been made to nvptx-tools that address dropping support for sm_30 in later CUDA versions (12.0+). Also refactor gcc to make nvptx-tools a dependency instead of a resource. Co-authored-by: Tamara Dahlgren <35777542+tldahlgren@users.noreply.github.com>
This commit is contained in:
parent
f35ff441f2
commit
fa8fb7903b
2 changed files with 29 additions and 13 deletions
|
@ -12,6 +12,7 @@
|
|||
|
||||
import llnl.util.tty as tty
|
||||
from llnl.util.lang import classproperty
|
||||
from llnl.util.symlink import readlink
|
||||
|
||||
import spack.platforms
|
||||
import spack.util.executable
|
||||
|
@ -309,14 +310,10 @@ class Gcc(AutotoolsPackage, GNUMirrorPackage):
|
|||
destination="newlibsource",
|
||||
fetch_options=timeout,
|
||||
)
|
||||
# nvptx-tools does not seem to work as a dependency,
|
||||
# but does fine when the source is inside the gcc build directory
|
||||
# nvptx-tools doesn't have any releases, so grabbing the last commit
|
||||
resource(
|
||||
name="nvptx-tools",
|
||||
git="https://github.com/MentorEmbedded/nvptx-tools",
|
||||
commit="d0524fbdc86dfca068db5a21cc78ac255b335be5",
|
||||
)
|
||||
|
||||
nvptx_tools_ver = "2023-09-13"
|
||||
depends_on("nvptx-tools@" + nvptx_tools_ver, type="build")
|
||||
|
||||
# NVPTX offloading supported in 7 and later by limited languages
|
||||
conflicts("@:6", msg="NVPTX only supported in gcc 7 and above")
|
||||
conflicts("languages=ada")
|
||||
|
@ -860,6 +857,28 @@ def configure_args(self):
|
|||
|
||||
return options
|
||||
|
||||
# Copy nvptx-tools into the GCC install prefix
|
||||
def copy_nvptx_tools(self):
|
||||
nvptx_tools_bin_path = self.spec["nvptx-tools"].prefix.bin
|
||||
gcc_bin_path = self.prefix.bin
|
||||
mkdirp(gcc_bin_path)
|
||||
copy_list = ["as", "ld", "nm", "run", "run-single"]
|
||||
for file in copy_list:
|
||||
fullname = f"nvptx-none-{file}"
|
||||
copy(join_path(nvptx_tools_bin_path, fullname), join_path(gcc_bin_path, fullname))
|
||||
link_list = ["ar", "ranlib"]
|
||||
for file in link_list:
|
||||
fullname = f"nvptx-none-{file}"
|
||||
orig_target = readlink(join_path(nvptx_tools_bin_path, fullname))
|
||||
symlink(orig_target, join_path(gcc_bin_path, fullname))
|
||||
util_dir_path = join_path(self.prefix, "nvptx-none", "bin")
|
||||
mkdirp(util_dir_path)
|
||||
util_list = ["ar", "as", "ld", "nm", "ranlib"]
|
||||
for file in util_list:
|
||||
rel_target = join_path("..", "..", "bin", f"nvptx-none-{file}")
|
||||
dest_link = join_path(util_dir_path, file)
|
||||
symlink(rel_target, dest_link)
|
||||
|
||||
# run configure/make/make(install) for the nvptx-none target
|
||||
# before running the host compiler phases
|
||||
@run_before("configure")
|
||||
|
@ -882,11 +901,7 @@ def nvptx_install(self):
|
|||
"--with-cuda-driver-lib={0}".format(spec["cuda"].libs.directories[0]),
|
||||
]
|
||||
|
||||
with working_dir("nvptx-tools"):
|
||||
configure = Executable("./configure")
|
||||
configure(*options)
|
||||
make()
|
||||
make("install")
|
||||
self.copy_nvptx_tools()
|
||||
|
||||
pattern = join_path(self.stage.source_path, "newlibsource", "*")
|
||||
files = glob.glob(pattern)
|
||||
|
|
|
@ -15,6 +15,7 @@ class NvptxTools(AutotoolsPackage):
|
|||
homepage = "https://github.com/MentorEmbedded/nvptx-tools"
|
||||
git = "https://github.com/MentorEmbedded/nvptx-tools"
|
||||
|
||||
version("2023-09-13", commit="c321f1a3573dd89a12e3291d690207685a34df6e")
|
||||
version("2021-05-21", commit="d0524fbdc86dfca068db5a21cc78ac255b335be5")
|
||||
version("2018-03-01", commit="5f6f343a302d620b0868edab376c00b15741e39e")
|
||||
|
||||
|
|
Loading…
Reference in a new issue