gpu-compute: Added register file cache support (#730)
The RFC is defaulted to a size of 0 which removes it completely. To use the RFC set the --register-file-cache-size to a non-zero multiple of two. In addition, rfc_pipe_length may be altered to increase or decrease RFC latency benefit.
This commit is contained in:
@@ -335,6 +335,12 @@ parser.add_argument(
|
||||
default="dynamic",
|
||||
help="register allocation policy (simple/dynamic)",
|
||||
)
|
||||
parser.add_argument(
|
||||
"--register-file-cache-size",
|
||||
type=int,
|
||||
default=0,
|
||||
help="number of registers in cache",
|
||||
)
|
||||
|
||||
parser.add_argument(
|
||||
"--dgpu",
|
||||
@@ -493,6 +499,7 @@ for i in range(n_cu):
|
||||
vrfs = []
|
||||
vrf_pool_mgrs = []
|
||||
srfs = []
|
||||
rfcs = []
|
||||
srf_pool_mgrs = []
|
||||
for j in range(args.simds_per_cu):
|
||||
for k in range(shader.n_wf):
|
||||
@@ -537,10 +544,16 @@ for i in range(n_cu):
|
||||
simd_id=j, wf_size=args.wf_size, num_regs=args.sreg_file_size
|
||||
)
|
||||
)
|
||||
rfcs.append(
|
||||
RegisterFileCache(
|
||||
simd_id=j, cache_size=args.register_file_cache_size
|
||||
)
|
||||
)
|
||||
|
||||
compute_units[-1].wavefronts = wavefronts
|
||||
compute_units[-1].vector_register_file = vrfs
|
||||
compute_units[-1].scalar_register_file = srfs
|
||||
compute_units[-1].register_file_cache = rfcs
|
||||
compute_units[-1].register_manager = RegisterManager(
|
||||
policy=args.registerManagerPolicy,
|
||||
vrf_pool_managers=vrf_pool_mgrs,
|
||||
|
||||
@@ -247,3 +247,9 @@ def addAmdGPUOptions(parser):
|
||||
default="simple",
|
||||
help="register allocation policy (simple/dynamic)",
|
||||
)
|
||||
parser.add_argument(
|
||||
"--register-file-cache-size",
|
||||
type=int,
|
||||
default=0,
|
||||
help="number of registers in cache",
|
||||
)
|
||||
|
||||
@@ -84,6 +84,7 @@ def createGPU(system, args):
|
||||
vrfs = []
|
||||
vrf_pool_mgrs = []
|
||||
srfs = []
|
||||
rfcs = []
|
||||
srf_pool_mgrs = []
|
||||
for j in range(args.simds_per_cu):
|
||||
for k in range(shader.n_wf):
|
||||
@@ -133,10 +134,16 @@ def createGPU(system, args):
|
||||
num_regs=args.sreg_file_size,
|
||||
)
|
||||
)
|
||||
rfcs.append(
|
||||
RegisterFileCache(
|
||||
simd_id=j, cache_size=args.register_file_cache_size
|
||||
)
|
||||
)
|
||||
|
||||
compute_units[-1].wavefronts = wavefronts
|
||||
compute_units[-1].vector_register_file = vrfs
|
||||
compute_units[-1].scalar_register_file = srfs
|
||||
compute_units[-1].register_file_cache = rfcs
|
||||
compute_units[-1].register_manager = RegisterManager(
|
||||
policy=args.registerManagerPolicy,
|
||||
vrf_pool_managers=vrf_pool_mgrs,
|
||||
|
||||
Reference in New Issue
Block a user