summaryrefslogtreecommitdiff
path: root/var/spack/repos/builtin/packages/intel-gtpin/package.py
blob: bea8e9e31ee83b5d508b1cd1faf309cd09e380be (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
# Copyright 2013-2023 Lawrence Livermore National Security, LLC and other
# Spack Project Developers. See the top-level COPYRIGHT file for details.
#
# SPDX-License-Identifier: (Apache-2.0 OR MIT)

from spack.package import *


class IntelGtpin(Package):
    """Intel(R) GtPin is a dynamic binary instrumentation framework for GEN
    (Intel(R) graphics) Architecture. It is a unique SW platform for
    profiling a code running on GEN Execution Units (EUs). GTPin
    includes a binary instrumentation engine for Intel(R) GPUs EUs, along
    with an API for developing analysis tools, and many sample
    tools. GTPin allows you to capture a range of dynamic profiling
    data at the finest granularity of the specific GPU EU instruction.
    GTPin supports both compute and graphics workloads. It operates on
    regular, real-world GPU applications, as well as on pre-captured
    API streams. The technology enables fast and accurate dynamic
    analysis of the code that is executing on the GPU EUs. GTPin opens
    up new opportunities to perform dynamic, low level workload and HW
    analysis on an Intel(R) GPU, with greater efficiency than other
    current solutions. Some of the GTPin capabilities are integrated
    into Intel(R) VTune(TM) Profiler, Intel(R) Advisor, and the Intel(R)
    Graphics Performance Analyzers (Intel(R) GPA).

    GTPin is available, along with a set of analysis tools based on
    the GTPin framework. It also enables more advanced users to
    develop their own analysis tools. GTPin can analyze any GPU
    application. It also collects dynamic profiling data which the
    application executes on the GPU.
    """

    homepage = "https://www.intel.com/content/www/us/en/developer/articles/tool/gtpin.html"
    url = "https://downloadmirror.intel.com/762747/external-release-gtpin-3.2.2-linux.tar.xz"

    maintainers("rashawnlk")

    license("MIT")

    version(
        "3.2.2",
        sha256="6c51b08451935ed8c86778d197e2ff36d4b91883f41292968ff413b53ac8910a",
        url="https://downloadmirror.intel.com/762747/external-release-gtpin-3.2.2-linux.tar.xz",
    )

    version(
        "3.0",
        sha256="8a8a238ab9937d85e4cc5a5c15a79cad0e4aa306b57e5d72dad3e09230a4cdab",
        url="https://downloadmirror.intel.com/730598/external-release-gtpin-3.0-linux.tar.xz",
    )

    version(
        "2.19",
        sha256="996cdfbcf7fbe736407d063e0ed1794e51bf31a72b50cf733a407af71118a304",
        url="https://downloadmirror.intel.com/686383/external-gtpin-2.19-linux.tar.xz",
    )

    version(
        "2.13",
        sha256="d715a55074147b73d51583bf684660b40f871e38e29af2bfc14dfe070fcbbada",
        url="https://downloadmirror.intel.com/682776/external-gtpin-2.13-linux.tar.bz2",
    )
    version(
        "2.12",
        sha256="432f1365bf4b3ff5847bb1059fb468ce6c7237ccd1489fbe8005f48e5a11e218",
        url="https://downloadmirror.intel.com/682777/external-gtpin-2.12-linux.tar.bz2",
    )
    version(
        "2.11.4",
        sha256="57f4d3aa67e8b7eb8a2456a4a770e60af770c599180cb2b6c3c8addd37311093",
        url="https://downloadmirror.intel.com/682779/external-gtpin-2.11.4-linux.tar.bz2",
    )

    depends_on("patchelf", type="build")

    # Gtpin only runs on linux/cray x86_64.
    conflicts("platform=darwin", msg="intel-gtpin only runs on linux/cray")
    conflicts("target=ppc64:", msg="intel-gtpin only runs on x86_64")
    conflicts("target=ppc64le:", msg="intel-gtpin only runs on x86_64")
    conflicts("target=aarch64:", msg="intel-gtpin only runs on x86_64")

    # The gtbin tar file installs into Bin, Include, Lib directories.
    @property
    def command(self):
        return Executable(self.prefix.Bin.gtpin)

    @property
    def headers(self):
        return find_headers("gtpin", self.prefix.Include)

    @property
    def libs(self):
        return find_libraries("libgtpin", self.prefix.Lib, recursive=True)

    # The gtpin binary uses libraries from its own Lib directory but
    # doesn't set rpath.
    def install(self, spec, prefix):
        patchelf = spec["patchelf"].command
        patchelf(
            "--set-rpath", join_path("$ORIGIN", "..", "Lib", "intel64"), join_path("Bin", "gtpin")
        )

        install_tree(".", prefix)