Skip to content

Releases: NVlabs/NVBit

NVBit-1.5

14 Oct 18:45
Compare
Choose a tag to compare

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, to operand_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

08 Jun 15:43
Compare
Choose a tag to compare

Added

  • Added complete Turing support, specifically SM_73 and SM_75.
  • Added Ampere support, specifically SM_80.
    • Added new GLOBAL_TO_SHARED memory space for LDGSTS instruction from Ampere.
  • 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 like dev_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 and IARG_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 and mem_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

23 Apr 21:29
Compare
Choose a tag to compare

Added

  • Add ARM64 support in NVBit

Fixed

  • Remove an unnecessary register limit on instrument functions for GPUs older than Volta.

NVBit-v1.3

24 Mar 19:16
a7a03be
Compare
Choose a tag to compare

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 and SM_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

21 Oct 16:52
ee852ec
Compare
Choose a tag to compare
  • Restored support for SM_61 and SM_52
  • Added new nvbit API: nvbit_get_shmem_base_addr

NVBit-v1.0

10 Oct 16:59
Compare
Choose a tag to compare
NVBit-v1.0 Pre-release
Pre-release

NVBit-v1.0