diff --git a/src/cuda/GPU_Microbenchmark/hw_def/ampere_A100_hw_def.h b/src/cuda/GPU_Microbenchmark/hw_def/ampere_A100_hw_def.h index fc95b6dc2..cffce8764 100644 --- a/src/cuda/GPU_Microbenchmark/hw_def/ampere_A100_hw_def.h +++ b/src/cuda/GPU_Microbenchmark/hw_def/ampere_A100_hw_def.h @@ -12,7 +12,10 @@ #define L1_SIZE (192 * 1024) // Max L1 size in bytes -#define CLK_FREQUENCY 1410 // frequency in MHz +// NOTE: Frequency commented out since gpuConfig.h defines a `config` struct +// with a member also named CLK_FREQUENCY, so `#define CLK_FREQUENCY` collides + +// #define CLK_FREQUENCY 1410 // frequency in MHz #define ISSUE_MODEL issue_model::single // single issue core or dual issue #define CORE_MODEL core_model::subcore // subcore model or shared model diff --git a/src/cuda/GPU_Microbenchmark/hw_def/ampere_RTX3060_MOBILE_hw_def.h b/src/cuda/GPU_Microbenchmark/hw_def/ampere_RTX3060_MOBILE_hw_def.h new file mode 100644 index 000000000..0a592698b --- /dev/null +++ b/src/cuda/GPU_Microbenchmark/hw_def/ampere_RTX3060_MOBILE_hw_def.h @@ -0,0 +1,36 @@ +// These are the configration parameters that can be found publicly +// Sources: +// https://www.nvidia.com/content/dam/en-zz/Solutions/geforce/ampere/pdf/NVIDIA-ampere-GA102-GPU-Architecture-Whitepaper-V1.pdf +// https://en.wikipedia.org/wiki/GeForce_30_series +// https://en.wikipedia.org/wiki/CUDA + +#ifndef AMPERE_RTX3060_DEF_H +#define AMPERE_RTX3060_DEF_H + +#include "./common/common.h" +#include "./common/deviceQuery.h" + +#define L1_SIZE (128 * 1024) // Max L1 size in bytes + +// NOTE: Frequency commented out since gpuConfig.h defines a `config` struct +// with a member also named CLK_FREQUENCY, so `#define CLK_FREQUENCY` collides + +// #define CLK_FREQUENCY 1132 // frequency in MHz + +#define ISSUE_MODEL issue_model::single // single issue core or dual issue +#define CORE_MODEL core_model::subcore // subcore model or shared model +#define DRAM_MODEL dram_model::GDDR6 // memory type +#define WARP_SCHEDS_PER_SM 4 // number of warp schedulers per SM + +// number of SASS HMMA per 16x16 PTX WMMA for FP16 - FP32 accumlate operation +// see slide 22 at +// https://developer.download.nvidia.com/video/gputechconf/gtc/2020/presentations/s21730-inside-the-nvidia-ampere-architecture.pdf +#define SASS_hmma_per_PTX_wmma 2 + +// These vars are almost constant between HW generation +// see slide 24 from Nvidia at +// https://developer.download.nvidia.com/video/gputechconf/gtc/2020/presentations/s21730-inside-the-nvidia-ampere-architecture.pdf +#define L2_BANKS_PER_MEM_CHANNEL 2 +#define L2_BANK_WIDTH_in_BYTE 32 + +#endif diff --git a/src/cuda/GPU_Microbenchmark/hw_def/ampere_RTX3070_hw_def.h b/src/cuda/GPU_Microbenchmark/hw_def/ampere_RTX3070_hw_def.h index 133711416..767ed438d 100644 --- a/src/cuda/GPU_Microbenchmark/hw_def/ampere_RTX3070_hw_def.h +++ b/src/cuda/GPU_Microbenchmark/hw_def/ampere_RTX3070_hw_def.h @@ -12,7 +12,10 @@ #define L1_SIZE (128 * 1024) // Max L1 size in bytes -#define CLK_FREQUENCY 1132 // frequency in MHz +// NOTE: Frequency commented out since gpuConfig.h defines a `config` struct +// with a member also named CLK_FREQUENCY, so `#define CLK_FREQUENCY` collides + +// #define CLK_FREQUENCY 1132 // frequency in MHz #define ISSUE_MODEL issue_model::single // single issue core or dual issue #define CORE_MODEL core_model::subcore // subcore model or shared model diff --git a/src/cuda/GPU_Microbenchmark/hw_def/blackwell_B200_hw_def.h b/src/cuda/GPU_Microbenchmark/hw_def/blackwell_B200_hw_def.h index 73b658d6f..b9cb74c4f 100644 --- a/src/cuda/GPU_Microbenchmark/hw_def/blackwell_B200_hw_def.h +++ b/src/cuda/GPU_Microbenchmark/hw_def/blackwell_B200_hw_def.h @@ -8,6 +8,9 @@ #define L1_SIZE (256 * 1024) // Max L1 size in bytes +// NOTE: Frequency commented out since gpuConfig.h defines a `config` struct +// with a member also named CLK_FREQUENCY, so `#define CLK_FREQUENCY` collides + // #define CLK_FREQUENCY 1665 // frequency in MHz #define ISSUE_MODEL issue_model::single // single issue core or dual issue diff --git a/src/cuda/GPU_Microbenchmark/hw_def/hopper_H100_hw_def.h b/src/cuda/GPU_Microbenchmark/hw_def/hopper_H100_hw_def.h index 5d27a1b94..7095fd620 100644 --- a/src/cuda/GPU_Microbenchmark/hw_def/hopper_H100_hw_def.h +++ b/src/cuda/GPU_Microbenchmark/hw_def/hopper_H100_hw_def.h @@ -11,7 +11,10 @@ #define L1_SIZE (256 * 1024) // Max L1 size in bytes -#define CLK_FREQUENCY 1455 // frequency in MHz +// NOTE: Frequency commented out since gpuConfig.h defines a `config` struct +// with a member also named CLK_FREQUENCY, so `#define CLK_FREQUENCY` collides + +// #define CLK_FREQUENCY 1455 // frequency in MHz #define ISSUE_MODEL issue_model::single #define CORE_MODEL core_model::subcore diff --git a/src/cuda/GPU_Microbenchmark/hw_def/hw_def.h b/src/cuda/GPU_Microbenchmark/hw_def/hw_def.h index 8d12b2456..e64180af6 100644 --- a/src/cuda/GPU_Microbenchmark/hw_def/hw_def.h +++ b/src/cuda/GPU_Microbenchmark/hw_def/hw_def.h @@ -11,9 +11,12 @@ //#include "ampere_RTX3070_hw_def.h" -// #include "volta_TITANV_hw_def.h" +#include "ampere_RTX3060_MOBILE_hw_def.h" -// #include "ampere_A100_hw_def.h" -#include "blackwell_B200_hw_def.h" +//#include "volta_TITANV_hw_def.h" + +//#include "ampere_A100_hw_def.h" + +//#include "blackwell_B200_hw_def.h" #endif diff --git a/src/cuda/GPU_Microbenchmark/hw_def/kepler_TITAN_hw_def.h b/src/cuda/GPU_Microbenchmark/hw_def/kepler_TITAN_hw_def.h index 1f4c6212e..5e9e8e2eb 100644 --- a/src/cuda/GPU_Microbenchmark/hw_def/kepler_TITAN_hw_def.h +++ b/src/cuda/GPU_Microbenchmark/hw_def/kepler_TITAN_hw_def.h @@ -7,7 +7,10 @@ #define L1_SIZE (64 * 1024) // Max L1 size in bytes, when enabled -#define CLK_FREQUENCY 837 // frequency in MHz +// NOTE: Frequency commented out since gpuConfig.h defines a `config` struct +// with a member also named CLK_FREQUENCY, so `#define CLK_FREQUENCY` collides + +// #define CLK_FREQUENCY 837 // frequency in MHz #define ISSUE_MODEL issue_model::dual #define CORE_MODEL core_model::shared diff --git a/src/cuda/GPU_Microbenchmark/hw_def/pascal_TITANX_hw_def.h b/src/cuda/GPU_Microbenchmark/hw_def/pascal_TITANX_hw_def.h index b68329a73..d07badb39 100644 --- a/src/cuda/GPU_Microbenchmark/hw_def/pascal_TITANX_hw_def.h +++ b/src/cuda/GPU_Microbenchmark/hw_def/pascal_TITANX_hw_def.h @@ -7,7 +7,10 @@ #define L1_SIZE (24 * 1024) // Max L1 size in bytes, when enabled -#define CLK_FREQUENCY 1417 // frequency in MHz +// NOTE: Frequency commented out since gpuConfig.h defines a `config` struct +// with a member also named CLK_FREQUENCY, so `#define CLK_FREQUENCY` collides + +//#define CLK_FREQUENCY 1417 // frequency in MHz #define ISSUE_MODEL issue_model::dual #define CORE_MODEL core_model::subcore diff --git a/src/cuda/GPU_Microbenchmark/hw_def/turing_RTX2060_hw_def.h b/src/cuda/GPU_Microbenchmark/hw_def/turing_RTX2060_hw_def.h index e7d728d15..f4e8f6cde 100644 --- a/src/cuda/GPU_Microbenchmark/hw_def/turing_RTX2060_hw_def.h +++ b/src/cuda/GPU_Microbenchmark/hw_def/turing_RTX2060_hw_def.h @@ -8,7 +8,10 @@ #define L1_SIZE (64 * 1024) // Max L1 size in bytes -#define CLK_FREQUENCY 1365 // frequency in MHz +// NOTE: Frequency commented out since gpuConfig.h defines a `config` struct +// with a member also named CLK_FREQUENCY, so `#define CLK_FREQUENCY` collides + +// #define CLK_FREQUENCY 1365 // frequency in MHz #define ISSUE_MODEL issue_model::single // single issue core or dual issue #define CORE_MODEL core_model::subcore // subcore model or shared model diff --git a/src/cuda/GPU_Microbenchmark/hw_def/volta_QV100_hw_def.h b/src/cuda/GPU_Microbenchmark/hw_def/volta_QV100_hw_def.h index c307e3266..276a8ff0d 100644 --- a/src/cuda/GPU_Microbenchmark/hw_def/volta_QV100_hw_def.h +++ b/src/cuda/GPU_Microbenchmark/hw_def/volta_QV100_hw_def.h @@ -11,7 +11,10 @@ #define L1_SIZE (128 * 1024) // Max L1 size in bytes -#define CLK_FREQUENCY 1132 // frequency in MHz +// NOTE: Frequency commented out since gpuConfig.h defines a `config` struct +// with a member also named CLK_FREQUENCY, so `#define CLK_FREQUENCY` collides + +// #define CLK_FREQUENCY 1132 // frequency in MHz #define ISSUE_MODEL issue_model::single #define CORE_MODEL core_model::subcore diff --git a/src/cuda/GPU_Microbenchmark/hw_def/volta_TITANV_hw_def.h b/src/cuda/GPU_Microbenchmark/hw_def/volta_TITANV_hw_def.h index 3548d66e1..473286d9f 100644 --- a/src/cuda/GPU_Microbenchmark/hw_def/volta_TITANV_hw_def.h +++ b/src/cuda/GPU_Microbenchmark/hw_def/volta_TITANV_hw_def.h @@ -11,7 +11,10 @@ #define L1_SIZE (128 * 1024) // Max L1 size in bytes -#define CLK_FREQUENCY 1200 // frequency in MHz +// NOTE: Frequency commented out since gpuConfig.h defines a `config` struct +// with a member also named CLK_FREQUENCY, so `#define CLK_FREQUENCY` collides + +// #define CLK_FREQUENCY 1200 // frequency in MHz #define ISSUE_MODEL issue_model::single #define CORE_MODEL core_model::subcore diff --git a/src/cuda/GPU_Microbenchmark/hw_def/volta_V100_hw_def.h b/src/cuda/GPU_Microbenchmark/hw_def/volta_V100_hw_def.h index d25b24efa..db08be5c0 100644 --- a/src/cuda/GPU_Microbenchmark/hw_def/volta_V100_hw_def.h +++ b/src/cuda/GPU_Microbenchmark/hw_def/volta_V100_hw_def.h @@ -11,7 +11,10 @@ #define L1_SIZE (128 * 1024) // Max L1 size in bytes -#define CLK_FREQUENCY 1455 // frequency in MHz +// NOTE: Frequency commented out since gpuConfig.h defines a `config` struct +// with a member also named CLK_FREQUENCY, so `#define CLK_FREQUENCY` collides + +// #define CLK_FREQUENCY 1455 // frequency in MHz #define ISSUE_MODEL issue_model::single #define CORE_MODEL core_model::subcore