> On Jan. 14, 2016, 10:26 a.m., Andreas Hansson wrote:
> > SConstruct, line 1244
> > <http://reviews.gem5.org/r/3189/diff/3/?file=53120#file53120line1244>
> >
> >     This makes it look like the two are not orthogonal, could you 
> > explain/comment?
> 
> Tony Gutierrez wrote:
>     We introduce switching headers for the GPU that are identically named to 
> the CPU switching headers (in some cases). So they are not orthogonal in that 
> sense. The headers for the GPU ISAs are then generated in the 
> build/GPUISA/gpu-compute/arch, and scons didn't seem to play nicely when I 
> tried to have two separated ISAs in arch, one GPU ISA and one CPU ISA. So I 
> chose to separate them.
> 
> Andreas Hansson wrote:
>     I am somewhat surprised. So the CPUs will be built for ISA build/CPUISA/? 
> What about the GPU? Is it like Ruby with build/CPUISA_GPUISA_RUBYPROTOCOL?
> 
> Tony Gutierrez wrote:
>     No, the GPUISA I put in the middle there was just a generic place holder 
> for any ISA built, e.g., think of the build_opts files. So, e.g., in the case 
> of the GPU code, we have build_opts/gpu_RfO/. So the build tree, with respect 
> to the arch directories will look something like this:
>     
>     build/gpu_RfO/arch/ # the traditional arch dir
>     build/gpu_RfO/gpu-compute/arch # where GPU-specific arch code goes. 
> switching headers, etc.
> 
> Andreas Hansson wrote:
>     So the GPUISA implies a CPUISA? Why not make them independent (which 
> seems more intuitive to me at least)?
> 
> Tony Gutierrez wrote:
>     Because, if I understand what you're asking, they are not dependent. The 
> GPU is entirely dependent on there being a CPU ISA, at this point X86.
> 
> Tony Gutierrez wrote:
>     *Not independent.
> 
> Andreas Hansson wrote:
>     Would it not be sensible for the GPUISA name to include the implied 
> CPUISA in that case?
>     
>     I guess we would have a build/X86, and a build/X86_XYZ.
> 
> Joel Hestness wrote:
>     I've thought about this some more, and I feel it's only necessary to 
> specify CPU ISA and GPU ISA (without any associated CPU ISA). While it's true 
> that some GPUs will be dependent on also executing particular CPU ISAs, it's 
> possible that someone could circle back and adjust the devices/etc. required 
> to run the GPU under another CPU ISA. For example, gem5-gpu has NVIDIA 
> CUDA/PTX/SASS GPUs from GPGPU-Sim, and we've set up our infrastructure to 
> allow either x86 or ARM32 as the CPU ISA. Our gem5 build_opts are named 
> X86_<rubyprotocol>_GPU and ARM_<rubyprotocol>_GPU, respectively. A minimal 
> amount of code is dependent on the "#define TARGET_ISA" for things like 
> address translation and data packing, but the vast majority is 
> interchangeable across CPU ISAs. If we were to add another GPU, it would make 
> sense to just change "_GPU" in the build_opts names to the GPU ISA.
>     
>     Overall, while CPU and GPU ISA may currently be dependent, they are 
> likely to become more independent over time, so I feel that including the 
> separate ISAs without denoting dependence should be sufficient.
> 
> Andreas Hansson wrote:
>     What would it look like in this instance? Also, how many additional 
> builds are we ending up with? I guess the cross-product of Ruby protocols and 
> GPU ISAs (NULL and HSAIL)?

Based on earlier feedback I removed the gpu_X build_opts file and we have one 
HSAIL_X86 build_opts file that defaults to PROTOCOL=GPU_RfO, our baseline 
public protocol. I think this is in line with what Joel is mentioning (at least 
his latter suggestion of CPUISA_<rubyprotocol>_GPUISA, but without explicitly 
adding a new build for each protocol, because they are specified easily enough 
on the command line.


- Tony


-----------------------------------------------------------
This is an automatically generated e-mail. To reply, visit:
http://reviews.gem5.org/r/3189/#review7897
-----------------------------------------------------------


On Jan. 13, 2016, 1:25 p.m., Tony Gutierrez wrote:
> 
> -----------------------------------------------------------
> This is an automatically generated e-mail. To reply, visit:
> http://reviews.gem5.org/r/3189/
> -----------------------------------------------------------
> 
> (Updated Jan. 13, 2016, 1:25 p.m.)
> 
> 
> Review request for Default.
> 
> 
> Repository: gem5
> 
> 
> Description
> -------
> 
> Changeset 11282:118397102cfe
> ---------------------------
> gpu: AMD's baseline GPU model
> 
> This patch includes the entire baseline GPU model from AMD.
> 
> 
> Diffs
> -----
> 
>   src/gpu-compute/hsa_object.cc PRE-CREATION 
>   src/gpu-compute/hsail_code.hh PRE-CREATION 
>   src/gpu-compute/hsail_code.cc PRE-CREATION 
>   src/gpu-compute/kernel_cfg.hh PRE-CREATION 
>   src/gpu-compute/kernel_cfg.cc PRE-CREATION 
>   src/gpu-compute/lds_state.hh PRE-CREATION 
>   src/gpu-compute/lds_state.cc PRE-CREATION 
>   src/gpu-compute/local_memory_pipeline.hh PRE-CREATION 
>   src/gpu-compute/local_memory_pipeline.cc PRE-CREATION 
>   src/gpu-compute/misc.hh PRE-CREATION 
>   src/gpu-compute/ndrange.hh PRE-CREATION 
>   src/gpu-compute/of_scheduling_policy.hh PRE-CREATION 
>   src/gpu-compute/of_scheduling_policy.cc PRE-CREATION 
>   src/gpu-compute/pool_manager.hh PRE-CREATION 
>   src/gpu-compute/pool_manager.cc PRE-CREATION 
>   src/gpu-compute/qstruct.hh PRE-CREATION 
>   src/gpu-compute/rr_scheduling_policy.hh PRE-CREATION 
>   src/gpu-compute/rr_scheduling_policy.cc PRE-CREATION 
>   src/gpu-compute/schedule_stage.hh PRE-CREATION 
>   src/gpu-compute/schedule_stage.cc PRE-CREATION 
>   src/gpu-compute/scheduler.hh PRE-CREATION 
>   src/gpu-compute/scheduler.cc PRE-CREATION 
>   src/gpu-compute/scheduling_policy.hh PRE-CREATION 
>   src/gpu-compute/scoreboard_check_stage.hh PRE-CREATION 
>   src/gpu-compute/scoreboard_check_stage.cc PRE-CREATION 
>   src/gpu-compute/shader.hh PRE-CREATION 
>   src/gpu-compute/shader.cc PRE-CREATION 
>   src/gpu-compute/simple_pool_manager.hh PRE-CREATION 
>   src/gpu-compute/simple_pool_manager.cc PRE-CREATION 
>   src/gpu-compute/tlb_coalescer.hh PRE-CREATION 
>   src/gpu-compute/tlb_coalescer.cc PRE-CREATION 
>   src/gpu-compute/vector_register_file.hh PRE-CREATION 
>   src/gpu-compute/vector_register_file.cc PRE-CREATION 
>   src/gpu-compute/vector_register_state.hh PRE-CREATION 
>   src/gpu-compute/vector_register_state.cc PRE-CREATION 
>   src/gpu-compute/wavefront.hh PRE-CREATION 
>   src/gpu-compute/wavefront.cc PRE-CREATION 
>   src/mem/protocol/GPU_RfO-SQC.sm PRE-CREATION 
>   src/mem/protocol/GPU_RfO-TCC.sm PRE-CREATION 
>   src/mem/protocol/GPU_RfO-TCCdir.sm PRE-CREATION 
>   src/mem/protocol/GPU_RfO-TCP.sm PRE-CREATION 
>   src/mem/protocol/GPU_RfO.slicc PRE-CREATION 
>   src/mem/protocol/GPU_VIPER-SQC.sm PRE-CREATION 
>   src/mem/protocol/GPU_VIPER-TCC.sm PRE-CREATION 
>   src/mem/protocol/GPU_VIPER-TCP.sm PRE-CREATION 
>   src/mem/protocol/GPU_VIPER.slicc PRE-CREATION 
>   src/mem/protocol/GPU_VIPER_Baseline.slicc PRE-CREATION 
>   src/mem/protocol/GPU_VIPER_Region-TCC.sm PRE-CREATION 
>   src/mem/protocol/GPU_VIPER_Region.slicc PRE-CREATION 
>   src/mem/protocol/MOESI_AMD_Base-CorePair.sm PRE-CREATION 
>   src/mem/protocol/MOESI_AMD_Base-L3cache.sm PRE-CREATION 
>   src/mem/protocol/MOESI_AMD_Base-Region-CorePair.sm PRE-CREATION 
>   src/mem/protocol/MOESI_AMD_Base-Region-dir.sm PRE-CREATION 
>   src/mem/protocol/MOESI_AMD_Base-Region-msg.sm PRE-CREATION 
>   src/mem/protocol/MOESI_AMD_Base-RegionBuffer.sm PRE-CREATION 
>   src/mem/protocol/MOESI_AMD_Base-RegionDir.sm PRE-CREATION 
>   src/mem/protocol/MOESI_AMD_Base-dir.sm PRE-CREATION 
>   src/mem/protocol/MOESI_AMD_Base-msg.sm PRE-CREATION 
>   src/mem/protocol/MOESI_AMD_Base-probeFilter.sm PRE-CREATION 
>   src/mem/protocol/MOESI_AMD_Base.slicc PRE-CREATION 
>   src/mem/protocol/RubySlicc_ComponentMapping.sm 
> d9a0136ab8cc4b3cf4821d064140b857e60db0dd 
>   src/mem/protocol/RubySlicc_Exports.sm 
> d9a0136ab8cc4b3cf4821d064140b857e60db0dd 
>   src/mem/protocol/RubySlicc_Types.sm 
> d9a0136ab8cc4b3cf4821d064140b857e60db0dd 
>   src/mem/protocol/SConsopts d9a0136ab8cc4b3cf4821d064140b857e60db0dd 
>   src/mem/ruby/SConscript d9a0136ab8cc4b3cf4821d064140b857e60db0dd 
>   src/mem/ruby/profiler/Profiler.cc d9a0136ab8cc4b3cf4821d064140b857e60db0dd 
>   src/mem/ruby/slicc_interface/AbstractCacheEntry.hh 
> d9a0136ab8cc4b3cf4821d064140b857e60db0dd 
>   src/mem/ruby/slicc_interface/AbstractController.hh 
> d9a0136ab8cc4b3cf4821d064140b857e60db0dd 
>   src/mem/ruby/slicc_interface/AbstractController.cc 
> d9a0136ab8cc4b3cf4821d064140b857e60db0dd 
>   src/mem/ruby/slicc_interface/RubySlicc_ComponentMapping.hh 
> d9a0136ab8cc4b3cf4821d064140b857e60db0dd 
>   src/mem/ruby/structures/CacheMemory.hh 
> d9a0136ab8cc4b3cf4821d064140b857e60db0dd 
>   src/mem/ruby/structures/CacheMemory.cc 
> d9a0136ab8cc4b3cf4821d064140b857e60db0dd 
>   src/mem/ruby/structures/RubyCache.py 
> d9a0136ab8cc4b3cf4821d064140b857e60db0dd 
>   src/mem/ruby/system/GPUCoalescer.hh PRE-CREATION 
>   src/mem/ruby/system/GPUCoalescer.cc PRE-CREATION 
>   src/mem/ruby/system/GPUCoalescer.py PRE-CREATION 
>   src/mem/ruby/system/RubyPort.hh d9a0136ab8cc4b3cf4821d064140b857e60db0dd 
>   src/mem/ruby/system/RubyPort.cc d9a0136ab8cc4b3cf4821d064140b857e60db0dd 
>   src/mem/ruby/system/RubySystem.cc d9a0136ab8cc4b3cf4821d064140b857e60db0dd 
>   src/mem/ruby/system/SConscript d9a0136ab8cc4b3cf4821d064140b857e60db0dd 
>   src/mem/ruby/system/Sequencer.hh d9a0136ab8cc4b3cf4821d064140b857e60db0dd 
>   src/mem/ruby/system/Sequencer.cc d9a0136ab8cc4b3cf4821d064140b857e60db0dd 
>   src/mem/ruby/system/Sequencer.py d9a0136ab8cc4b3cf4821d064140b857e60db0dd 
>   src/mem/ruby/system/VIPERCoalescer.hh PRE-CREATION 
>   src/mem/ruby/system/VIPERCoalescer.cc PRE-CREATION 
>   src/mem/ruby/system/VIPERCoalescer.py PRE-CREATION 
>   src/mem/ruby/system/WeightedLRUPolicy.hh PRE-CREATION 
>   src/mem/ruby/system/WeightedLRUPolicy.cc PRE-CREATION 
>   src/mem/ruby/system/WeightedLRUReplacementPolicy.py PRE-CREATION 
>   src/mem/slicc/symbols/StateMachine.py 
> d9a0136ab8cc4b3cf4821d064140b857e60db0dd 
>   src/gpu-compute/fetch_stage.cc PRE-CREATION 
>   src/gpu-compute/fetch_unit.hh PRE-CREATION 
>   src/gpu-compute/fetch_unit.cc PRE-CREATION 
>   src/gpu-compute/global_memory_pipeline.hh PRE-CREATION 
>   src/gpu-compute/global_memory_pipeline.cc PRE-CREATION 
>   src/gpu-compute/gpu_dyn_inst.hh PRE-CREATION 
>   src/gpu-compute/gpu_dyn_inst.cc PRE-CREATION 
>   src/gpu-compute/gpu_exec_context.hh PRE-CREATION 
>   src/gpu-compute/gpu_exec_context.cc PRE-CREATION 
>   src/gpu-compute/gpu_static_inst.hh PRE-CREATION 
>   src/gpu-compute/gpu_static_inst.cc PRE-CREATION 
>   src/gpu-compute/gpu_tlb.hh PRE-CREATION 
>   src/gpu-compute/gpu_tlb.cc PRE-CREATION 
>   src/gpu-compute/hsa_code.hh PRE-CREATION 
>   src/gpu-compute/hsa_kernel_info.hh PRE-CREATION 
>   src/gpu-compute/hsa_object.hh PRE-CREATION 
>   SConstruct d9a0136ab8cc4b3cf4821d064140b857e60db0dd 
>   build_opts/X86_MOESI_AMD_Base PRE-CREATION 
>   build_opts/gpu_RfO PRE-CREATION 
>   build_opts/gpu_VIPER PRE-CREATION 
>   build_opts/gpu_VIPER_Baseline PRE-CREATION 
>   build_opts/gpu_VIPER_Region PRE-CREATION 
>   configs/common/GPUTLBConfig.py PRE-CREATION 
>   configs/common/GPUTLBOptions.py PRE-CREATION 
>   configs/example/apu_se.py PRE-CREATION 
>   configs/example/ruby_gpu_random_test.py PRE-CREATION 
>   configs/ruby/AMD_Base_Constructor.py PRE-CREATION 
>   configs/ruby/GPU_RfO.py PRE-CREATION 
>   configs/ruby/GPU_VIPER.py PRE-CREATION 
>   configs/ruby/GPU_VIPER_Baseline.py PRE-CREATION 
>   configs/ruby/GPU_VIPER_Region.py PRE-CREATION 
>   configs/ruby/MOESI_AMD_Base.py PRE-CREATION 
>   configs/ruby/MemCntrlConstructor.py PRE-CREATION 
>   src/SConscript d9a0136ab8cc4b3cf4821d064140b857e60db0dd 
>   src/gpu-compute/GPU.py PRE-CREATION 
>   src/gpu-compute/LdsState.py PRE-CREATION 
>   src/gpu-compute/SConscript PRE-CREATION 
>   src/gpu-compute/X86GPUTLB.py PRE-CREATION 
>   src/gpu-compute/arch/SConscript PRE-CREATION 
>   src/gpu-compute/arch/hsail/Brig.h PRE-CREATION 
>   src/gpu-compute/arch/hsail/Brig_new.hpp PRE-CREATION 
>   src/gpu-compute/arch/hsail/SConscript PRE-CREATION 
>   src/gpu-compute/arch/hsail/SConsopts PRE-CREATION 
>   src/gpu-compute/arch/hsail/decoder.hh PRE-CREATION 
>   src/gpu-compute/arch/hsail/gen.py PRE-CREATION 
>   src/gpu-compute/arch/hsail/generic_types.hh PRE-CREATION 
>   src/gpu-compute/arch/hsail/generic_types.cc PRE-CREATION 
>   src/gpu-compute/arch/hsail/insts/branch.hh PRE-CREATION 
>   src/gpu-compute/arch/hsail/insts/branch.cc PRE-CREATION 
>   src/gpu-compute/arch/hsail/insts/decl.hh PRE-CREATION 
>   src/gpu-compute/arch/hsail/insts/gpu_static_inst.hh PRE-CREATION 
>   src/gpu-compute/arch/hsail/insts/gpu_static_inst.cc PRE-CREATION 
>   src/gpu-compute/arch/hsail/insts/main.cc PRE-CREATION 
>   src/gpu-compute/arch/hsail/insts/mem.hh PRE-CREATION 
>   src/gpu-compute/arch/hsail/insts/mem.cc PRE-CREATION 
>   src/gpu-compute/arch/hsail/insts/mem_impl.hh PRE-CREATION 
>   src/gpu-compute/arch/hsail/insts/pseudo_inst.cc PRE-CREATION 
>   src/gpu-compute/arch/hsail/operand.hh PRE-CREATION 
>   src/gpu-compute/arch/hsail/operand.cc PRE-CREATION 
>   src/gpu-compute/arch/hsail/types.hh PRE-CREATION 
>   src/gpu-compute/brig_object.hh PRE-CREATION 
>   src/gpu-compute/brig_object.cc PRE-CREATION 
>   src/gpu-compute/cl_driver.hh PRE-CREATION 
>   src/gpu-compute/cl_driver.cc PRE-CREATION 
>   src/gpu-compute/cl_event.hh PRE-CREATION 
>   src/gpu-compute/code_enums.hh PRE-CREATION 
>   src/gpu-compute/compute_unit.hh PRE-CREATION 
>   src/gpu-compute/compute_unit.cc PRE-CREATION 
>   src/gpu-compute/condition_register_state.hh PRE-CREATION 
>   src/gpu-compute/condition_register_state.cc PRE-CREATION 
>   src/gpu-compute/dispatcher.hh PRE-CREATION 
>   src/gpu-compute/dispatcher.cc PRE-CREATION 
>   src/gpu-compute/exec_stage.hh PRE-CREATION 
>   src/gpu-compute/exec_stage.cc PRE-CREATION 
>   src/gpu-compute/fetch_stage.hh PRE-CREATION 
> 
> Diff: http://reviews.gem5.org/r/3189/diff/
> 
> 
> Testing
> -------
> 
> 
> Thanks,
> 
> Tony Gutierrez
> 
>

_______________________________________________
gem5-dev mailing list
[email protected]
http://m5sim.org/mailman/listinfo/gem5-dev

Reply via email to