Releases: NVlabs/NVBit
Releases · NVlabs/NVBit
NVBit-1.5
Changed
- Changed
*_pred
functions/variables to*_guard_pred
to avoid confusion, since some SASS instructions also use as operands predicate register, which is different from guard predicate. - Moved instruction types to InstrType namespace from Instr class.
- Renamed class/enum type names: memOpType -> MemorySpace, memOpTypeStr -> MemorySpaceStr, operandType -> OperandType, operandTypeStr -> OperandTypeStr, regModiferType -> RegModiferType, regModiferTypeStr -> RegModifierTypeStr.
- Added a new
str
variable, storing the parsed operand, tooperand_t
.
Added
- Added support for native compilation of tools targeting SM arch >= 70 (up to the currently supported arch). Previously a compilation required targeting PTX< SM70 even when running on Volta+
Fixed
- Removed unused
mref_t
variable. - Fixed some bugs on Turing and Ampere.
- Fixed bug in instrumentation function stack calculation which resulted in segmentation fault on pbrt (#28) due to possible nested device function calls.
Removed
- Removed obsolete custom implementations of shuffle and ballot from utils.h, which was implemented to support old nvcc
NVBit-1.4
Added
- Added complete Turing support, specifically
SM_73
andSM_75
. - Added Ampere support, specifically
SM_80
.- Added new
GLOBAL_TO_SHARED
memory space forLDGSTS
instruction from Ampere.
- Added new
- Added
nvbit_read_ureg
,nvbit_write_ureg
to read/write uniform registers. - Added
nvbit_read_pred_reg
,nvbit_write_pred_reg
to read/write predicate register. - Added
nvbit_read_upred_reg
,nvbit_write_upred_reg
to read/write uniform predicate register. - Added
NVBIT_VERSION
to nvbit.h, so one can identify NVBit version in his instrumentation tools - Added variadic instrument function support (with
record_reg_vals
as an example), so one can write instrument functions likedev_func(int num_args...)
.
Fixed
- Fixed the bug, which prevents callee functions from being instrumented if their caller function has no instruction to be instrumented.
Changed
IARG_PRED_VAL_T
andIARG_PRED_REG_T
give uniform predicate register value if the instrumented instruction uses uniform predicate register.- Changed
move_replace
tool to support uniform register. - Changed
mem_trace
andmem_print
tools to support instructions with more than one memory reference address (e.g., LDGSTS). - Changed
nvbit_enable_instrumented
function to allow users to only enable/disable instrumentation on the specified function without affecting its related functions (the original and default behavior is to enable/disable instrumentation on the specified function and all its related functions).
NVBit-1.3.1
Added
- Add ARM64 support in NVBit
Fixed
- Remove an unnecessary register limit on instrument functions for GPUs older than Volta.
NVBit-v1.3
Added
- Added
nvbit_add_call_arg_mref_addr64
to automatically generate a memory reference to be passed to the instrumentation functions. - Added ability to use CXX and CC to override compiler in all tools Makefiles.
- Added new core API:
nvbit_get_local_mem_base_addr(CUcontext cuctx)
to get base virtual address of the local memory mapped space. - Added new core API:
nvbit_get_related_functions(CUcontext cuctx, CUfunction func)
to get the vector of all CUfunctions callable by a given CUfunction. - Added support for
SM_37
,SM_53
,SM_62
andSM_72
.
Removed
- Removed
NVBIT_EXPORT_FUNC
since new compilation flow for tools uses the new nvcc option-Xptxas -astoolspatch --keep-device-functions
which makes this step unnecessary. - Removed core API
nvbit_at_function_first_load(CUcontext ctx, CUfunction func)
(and modified example to use APIs like those presented in the MICRO 2019 paper). - Removed NOINSPECT control API since now inspection can be controlled directly by the user inside
nvbit_at_cuda_event
.
Changed
- Modified Lifter (i.e. Class Instr) to support broader set of operands, and register modifiers. Previous tools need to be slightly modified to work with the new Instr class.
- Changed tool compilation flow to require nvcc >= 10.1. Injected functions must be compiled separately with option
-Xptxas -astoolspatch --keep-device-functions
and for the moment can't use any external symbols. - Changed example tools structure with a separate
inject_funcs.cu
file which contains all the injected functions and it is compiled with the options specified above. - Changed overall instrumentation approach to be compatible to what explained in the MICRO 2019. Specifically discontinued the callback
nvbit_at_function_first_load
to allow user to programmatically inspect and instrument at kernel launch time. - Changed all the examples to reflect the change above.
Fixed
- Fixed tools Makefiles to use
-ccbin=$(CXX)
so that g++ is used when compiling a tool and libstdc++ is appropriately linked to avoid undefined symbol errors. - Fixed bug in NVBit context initialization and termination.
- Fixed bug in
Instr::getSize()
when LD.64 are encountered.
NVBit-v1.1
- Restored support for SM_61 and SM_52
- Added new nvbit API: nvbit_get_shmem_base_addr
NVBit-v1.0
NVBit-v1.0