[v0.25] Add missing Ampere GPU chips and new uarchs: ada and hopper
This commit is contained in:
@@ -8,7 +8,7 @@
|
||||
#include "../cuda/cuda.hpp"
|
||||
#include "../cuda/uarch.hpp"
|
||||
|
||||
static const char* VERSION = "0.24";
|
||||
static const char* VERSION = "0.25";
|
||||
|
||||
void print_help(char *argv[]) {
|
||||
const char **t = args_str;
|
||||
|
||||
@@ -5,6 +5,10 @@ typedef uint32_t GPUCHIP;
|
||||
|
||||
enum {
|
||||
CHIP_UNKNOWN_CUDA,
|
||||
CHIP_AD102,
|
||||
CHIP_AD102GL,
|
||||
CHIP_AD104,
|
||||
CHIP_AD104GL,
|
||||
CHIP_G80,
|
||||
CHIP_G80GL,
|
||||
CHIP_G84,
|
||||
@@ -37,6 +41,9 @@ enum {
|
||||
CHIP_GA100GL,
|
||||
CHIP_GA102,
|
||||
CHIP_GA102GL,
|
||||
CHIP_GA103,
|
||||
CHIP_GA103GLM,
|
||||
CHIP_GA103M,
|
||||
CHIP_GA104,
|
||||
CHIP_GA104GL,
|
||||
CHIP_GA104GLM,
|
||||
@@ -72,6 +79,7 @@ enum {
|
||||
CHIP_GF117M,
|
||||
CHIP_GF119,
|
||||
CHIP_GF119M,
|
||||
CHIP_GH100,
|
||||
CHIP_GK104,
|
||||
CHIP_GK104GL,
|
||||
CHIP_GK104GLM,
|
||||
@@ -167,7 +175,7 @@ enum {
|
||||
CHIP_TU117BM,
|
||||
CHIP_TU117GL,
|
||||
CHIP_TU117GLM,
|
||||
CHIP_TU117M,
|
||||
CHIP_TU117M
|
||||
};
|
||||
|
||||
#endif
|
||||
|
||||
@@ -21,6 +21,12 @@
|
||||
|
||||
GPUCHIP get_chip_from_pci_cuda(struct pci* pci) {
|
||||
CHECK_PCI_START
|
||||
CHECK_PCI(pci, 0x27b8, CHIP_AD104GL)
|
||||
CHECK_PCI(pci, 0x2785, CHIP_AD104)
|
||||
CHECK_PCI(pci, 0x26b8, CHIP_AD102GL)
|
||||
CHECK_PCI(pci, 0x26b5, CHIP_AD102GL)
|
||||
CHECK_PCI(pci, 0x26b1, CHIP_AD102GL)
|
||||
CHECK_PCI(pci, 0x2684, CHIP_AD102)
|
||||
CHECK_PCI(pci, 0x25fa, CHIP_GA107)
|
||||
CHECK_PCI(pci, 0x25f9, CHIP_GA107)
|
||||
CHECK_PCI(pci, 0x25e5, CHIP_GA107BM)
|
||||
@@ -89,6 +95,14 @@ GPUCHIP get_chip_from_pci_cuda(struct pci* pci) {
|
||||
CHECK_PCI(pci, 0x2484, CHIP_GA104)
|
||||
CHECK_PCI(pci, 0x2483, CHIP_GA104)
|
||||
CHECK_PCI(pci, 0x2482, CHIP_GA104)
|
||||
CHECK_PCI(pci, 0x2460, CHIP_GA103M)
|
||||
CHECK_PCI(pci, 0x2438, CHIP_GA103GLM)
|
||||
CHECK_PCI(pci, 0x2420, CHIP_GA103M)
|
||||
CHECK_PCI(pci, 0x2414, CHIP_GA103)
|
||||
CHECK_PCI(pci, 0x2336, CHIP_GH100)
|
||||
CHECK_PCI(pci, 0x2331, CHIP_GH100)
|
||||
CHECK_PCI(pci, 0x2321, CHIP_GH100)
|
||||
CHECK_PCI(pci, 0x2302, CHIP_GH100)
|
||||
CHECK_PCI(pci, 0x228e, CHIP_GA106)
|
||||
CHECK_PCI(pci, 0x228b, CHIP_GA104)
|
||||
CHECK_PCI(pci, 0x223f, CHIP_GA102GL)
|
||||
|
||||
@@ -24,6 +24,8 @@ enum {
|
||||
UARCH_VOLTA,
|
||||
UARCH_TURING,
|
||||
UARCH_AMPERE,
|
||||
UARCH_ADA,
|
||||
UARCH_HOPPER
|
||||
};
|
||||
|
||||
static const char *uarch_str[] = {
|
||||
@@ -36,6 +38,8 @@ static const char *uarch_str[] = {
|
||||
/*[ARCH_VOLTA] = */ "Volta",
|
||||
/*[ARCH_TURING] = */ "Turing",
|
||||
/*[ARCH_AMPERE] = */ "Ampere",
|
||||
/*[ARCH_ADA] = */ "Ada Lovelace",
|
||||
/*[ARCH_HOPPER] = */ "Hopper"
|
||||
};
|
||||
|
||||
#define CHECK_UARCH_START if (false) {}
|
||||
@@ -218,6 +222,9 @@ void map_chip_to_uarch_cuda(struct uarch* arch) {
|
||||
CHECK_UARCH(arch, CHIP_GA100GL, "GA100", UARCH_AMPERE, 7)
|
||||
CHECK_UARCH(arch, CHIP_GA102, "GA102", UARCH_AMPERE, 8)
|
||||
CHECK_UARCH(arch, CHIP_GA102GL, "GA102", UARCH_AMPERE, 8)
|
||||
CHECK_UARCH(arch, CHIP_GA103, "GA103", UARCH_AMPERE, 8)
|
||||
CHECK_UARCH(arch, CHIP_GA103GLM, "GA103", UARCH_AMPERE, 8)
|
||||
CHECK_UARCH(arch, CHIP_GA103M, "GA103", UARCH_AMPERE, 8)
|
||||
CHECK_UARCH(arch, CHIP_GA104, "GA104", UARCH_AMPERE, 8)
|
||||
CHECK_UARCH(arch, CHIP_GA104GL, "GA104", UARCH_AMPERE, 8)
|
||||
CHECK_UARCH(arch, CHIP_GA104GLM, "GA104", UARCH_AMPERE, 8)
|
||||
@@ -228,6 +235,13 @@ void map_chip_to_uarch_cuda(struct uarch* arch) {
|
||||
CHECK_UARCH(arch, CHIP_GA107BM, "GA107", UARCH_AMPERE, 8)
|
||||
CHECK_UARCH(arch, CHIP_GA107GLM, "GA107", UARCH_AMPERE, 8)
|
||||
CHECK_UARCH(arch, CHIP_GA107M, "GA107", UARCH_AMPERE, 8)
|
||||
// ADA LOVELACE (8.9)
|
||||
CHECK_UARCH(arch, CHIP_AD102, "AD102", UARCH_ADA, 4)
|
||||
CHECK_UARCH(arch, CHIP_AD102GL, "AD102", UARCH_ADA, 4)
|
||||
CHECK_UARCH(arch, CHIP_AD104, "AD104", UARCH_ADA, 4)
|
||||
CHECK_UARCH(arch, CHIP_AD104GL, "AD104", UARCH_ADA, 4)
|
||||
// HOPPER (9.0)
|
||||
CHECK_UARCH(arch, CHIP_GH100, "GH100", UARCH_HOPPER, 4)
|
||||
CHECK_UARCH_END
|
||||
}
|
||||
|
||||
@@ -266,6 +280,8 @@ bool clkm_possible_for_uarch(int clkm, struct uarch* arch) {
|
||||
case UARCH_VOLTA: return clkm == 1;
|
||||
case UARCH_TURING: return clkm == 2 || clkm == 4;
|
||||
case UARCH_AMPERE: return clkm == 1 || clkm == 4 || clkm == 8;
|
||||
case UARCH_ADA: return clkm == 8;
|
||||
case UARCH_HOPPER: return clkm == 1;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
@@ -317,6 +333,10 @@ MEMTYPE guess_memtype_from_cmul_and_uarch(int clkm, struct uarch* arch) {
|
||||
CHECK_MEMTYPE(arch, clkm, UARCH_AMPERE, 1, MEMTYPE_HBM2)
|
||||
CHECK_MEMTYPE(arch, clkm, UARCH_AMPERE, 4, MEMTYPE_GDDR6)
|
||||
CHECK_MEMTYPE(arch, clkm, UARCH_AMPERE, 8, MEMTYPE_GDDR6X)
|
||||
// ADA
|
||||
CHECK_MEMTYPE(arch, clkm, UARCH_ADA, 8, MEMTYPE_GDDR6X)
|
||||
// HOPPER
|
||||
CHECK_MEMTYPE(arch, clkm, UARCH_HOPPER, 1, MEMTYPE_HBM2)
|
||||
CHECK_MEMTYPE_END
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user