Technique for inter-procedural memory address space optimization in GPU computing compiler
AssigneeNVIDIA Corporation
InventorsXiangyun Kong, Jian-Zhong Wang, Yuan Lin, Vinod Grover
Life of this patent
Estimating the term…
Abstract
A device compiler and linker is configured to optimize program code of a co-processor enabled application by resolving generic memory access operations within that program code to target specific memory spaces. In situations where a generic memory access operation cannot be resolved and may target constant memory, constant variables associated with those generic memory access operations are transferred to reside in global memory.
Claims24
One or more processors, comprising:
- one or more circuits to cause a compiler to:
- identify, from source code, a memory access operation to access a first type of memory;
- generate an indicator for the memory access operation representing the first type of memory;
- generate a dependency list related to the indicator included in the memory access operation, the dependency list to include one or more constant addresses and one or more declarations in the source code that reference the indicator;
- modify the memory access operation to access a second type of memory based, at least in part, on the indicator representing a second type of memory different from the first type of memory and the dependency list;
- and
- compile source code with the modified access operation, wherein the compiled code is to indicate the second type of memory into which information is to be stored.
One or more processors, comprising:
- one or more circuits to perform one or more executable programs having source code that indicates a first type of memory into which information is to be stored, wherein the one or more executable programs are to:
- identify, from the source code, a memory access operation to access the first type of memory;
- generate an indicator for the memory access operation representing the first type of memory;
- generate a dependency list related to the indicator included in the memory access operation, the dependency list to include one or more constant addresses and one or more declarations in the source code that reference the indicator;
- modify the memory access operation to access a second type of memory based, at least in part, on the indicator representing a second type of memory different from the first type of memory and the dependency list;
- and
- indicate the second type of memory into which information is to be stored.
A system, comprising one or more computers having one or more processors to cause a compiler to:
- identify, from source code, a memory access operation to access a first type of memory;
- generate an indicator for the memory access operation representing the first type of memory;
- generate a dependency list related to the indicator included in the memory access operation, the dependency list to include one or more constant addresses and one or more declarations in the source code that reference the indicator;
- modify the memory access operation to access a second type of memory based, at least in part, on the indicator representing a second type of memory different from the first type of memory and the dependency list;
- and
- compile source code with the modified access operation, wherein the compiled code is to indicate the second type of memory into which information is to be stored.
A method, comprising:
- identifying, from source code, a memory access operation to access a first type of memory;
- generating an indicator for the memory access operation representing the first type of memory;
- generating a dependency list related to the indicator included in the memory access operation, the dependency list to include one or more constant addresses and one or more declarations in the source code that reference the indicator;
- modifying the memory access operation to access a second type of memory based, at least in part, on the indicator representing a second type of memory different from the first type of memory and the dependency list;
- and
- causing a compiler to compile source code with the modified access operation, wherein the compiled code is to indicate the second type of memory into which information is to be stored.
Dependencies are inferred from the claim text.