Source: NVIDIA PTX ISA 9.4 documentation.
This section describes the history of change in the PTX ISA and implementation. The first section describes ISA and implementation changes in the current release of PTX ISA version 9.4, and the remaining sections provide a record of changes in previous releases of PTX ISA versions back to PTX ISA version 2.0.
Table 71 shows the PTX release history.
PTX ISA Version |
CUDA Release |
Supported Targets |
|---|---|---|
PTX ISA 1.0 |
CUDA 1.0 |
|
PTX ISA 1.1 |
CUDA 1.1 |
|
PTX ISA 1.2 |
CUDA 2.0 |
|
PTX ISA 1.3 |
CUDA 2.1 |
|
PTX ISA 1.4 |
CUDA 2.2 |
|
PTX ISA 1.5 |
driver r190 |
|
PTX ISA 2.0 |
CUDA 3.0, driver r195 |
|
PTX ISA 2.1 |
CUDA 3.1, driver r256 |
|
PTX ISA 2.2 |
CUDA 3.2, driver r260 |
|
PTX ISA 2.3 |
CUDA 4.0, driver r270 |
|
PTX ISA 3.0 |
CUDA 4.1, driver r285 |
|
CUDA 4.2, driver r295 |
|
|
PTX ISA 3.1 |
CUDA 5.0, driver r302 |
|
PTX ISA 3.2 |
CUDA 5.5, driver r319 |
|
PTX ISA 4.0 |
CUDA 6.0, driver r331 |
|
PTX ISA 4.1 |
CUDA 6.5, driver r340 |
|
PTX ISA 4.2 |
CUDA 7.0, driver r346 |
|
PTX ISA 4.3 |
CUDA 7.5, driver r352 |
|
PTX ISA 5.0 |
CUDA 8.0, driver r361 |
|
PTX ISA 6.0 |
CUDA 9.0, driver r384 |
|
PTX ISA 6.1 |
CUDA 9.1, driver r387 |
|
PTX ISA 6.2 |
CUDA 9.2, driver r396 |
|
PTX ISA 6.3 |
CUDA 10.0, driver r400 |
|
PTX ISA 6.4 |
CUDA 10.1, driver r418 |
|
PTX ISA 6.5 |
CUDA 10.2, driver r440 |
|
PTX ISA 7.0 |
CUDA 11.0, driver r445 |
|
PTX ISA 7.1 |
CUDA 11.1, driver r455 |
|
PTX ISA 7.2 |
CUDA 11.2, driver r460 |
|
PTX ISA 7.3 |
CUDA 11.3, driver r465 |
|
PTX ISA 7.4 |
CUDA 11.4, driver r470 |
|
PTX ISA 7.5 |
CUDA 11.5, driver r495 |
|
PTX ISA 7.6 |
CUDA 11.6, driver r510 |
|
PTX ISA 7.7 |
CUDA 11.7, driver r515 |
|
PTX ISA 7.8 |
CUDA 11.8, driver r520 |
|
PTX ISA 8.0 |
CUDA 12.0, driver r525 |
|
PTX ISA 8.1 |
CUDA 12.1, driver r530 |
|
PTX ISA 8.2 |
CUDA 12.2, driver r535 |
|
PTX ISA 8.3 |
CUDA 12.3, driver r545 |
|
PTX ISA 8.4 |
CUDA 12.4, driver r550 |
|
PTX ISA 8.5 |
CUDA 12.5, driver r555 |
|
CUDA 12.6, driver r560 |
||
PTX ISA 8.6 |
CUDA 12.7, driver r565 |
|
PTX ISA 8.7 |
CUDA 12.8, driver r570 |
|
PTX ISA 8.8 |
CUDA 12.9, driver r575 |
|
PTX ISA 9.0 |
CUDA 13.0, driver r580 |
|
PTX ISA 9.1 |
CUDA 13.1, driver r590 |
|
PTX ISA 9.2 |
CUDA 13.2, driver r595 |
|
PTX ISA 9.3 |
CUDA 13.3, driver r610 |
|
PTX ISA 9.4 |
CUDA 13.4, driver r615 |
|
Table 72 shows the release history of arch-specific and family-specific PTX instructions. Apart from PTX instructions, other features and constructs that are architecture-specific and family-specific are described in following sections:
Instruction |
Variant |
PTX ISA Version |
Supported Targets |
|---|---|---|---|
|
Base variant |
8.3 |
|
8.6 |
|
||
8.8 |
|
||
9.0 |
|
||
|
8.6 |
|
|
8.8 |
|
||
9.0 |
|
||
|
8.7 |
|
|
8.8 |
|
||
9.0 |
|
||
|
8.8 |
|
|
9.4 |
|
||
|
Base variant |
8.0 |
|
|
Base variant |
8.0 |
|
8.6 |
|
||
8.8 |
|
||
9.0 |
|
||
|
Types |
9.4 |
|
|
Types |
8.6 |
|
8.8 |
|
||
9.0 |
|
||
|
8.6 |
|
|
8.8 |
|
||
9.0 |
|
||
|
|
8.6 |
|
8.8 |
|
||
9.0 |
|
||
|
8.7 |
|
|
8.8 |
|
||
|
9.1 |
|
|
|
9.1 |
|
|
|
9.1 |
|
|
|
9.2 |
|
|
|
9.4 |
|
|
Qualifier |
9.4 |
|
|
Qualifier |
9.4 |
|
|
|
9.4 |
|
|
|
|
8.6 |
|
8.8 |
|
||
9.0 |
|
||
|
8.6 |
|
|
8.8 |
|
||
9.0 |
|
||
|
8.6 |
|
|
8.8 |
|
||
9.0 |
|
||
Qualifier |
9.4 |
|
|
Qualifier |
9.4 |
|
|
Qualifiers |
9.4 |
|
|
Qualifier |
9.4 |
|
|
|
|
8.6 |
|
8.8 |
|
||
9.0 |
|
||
Qualifier |
9.4 |
|
|
Qualifiers |
9.4 |
|
|
|
Type |
8.6 |
|
8.8 |
|
||
|
|
8.6 |
|
8.8 |
|
||
9.0 |
|
||
|
|
8.6 |
|
8.8 |
|
||
9.0 |
|
||
Types |
9.4 |
|
|
|
|
8.6 |
|
8.8 |
|
||
9.0 |
|
||
|
Base variant |
8.6 |
|
8.8 |
|
||
9.0 |
|
||
|
Qualifier |
9.4 |
|
|
Base variant |
8.6 |
|
8.8 |
|
||
9.0 |
|
||
|
Base variant |
8.6 |
|
8.8 |
|
||
9.0 |
|
||
Qualifier
|
9.4 |
|
|
Qualifier |
9.4 |
|
|
|
Base variant |
8.8 |
|
9.0 |
|
||
|
Base variant |
8.6 |
|
8.8 |
|
||
9.0 |
|
||
9.4 |
|
||
|
Base variant |
8.6 |
|
8.8 |
|
||
9.0 |
|
||
Kind |
8.6 |
|
|
9.0 |
|
||
Argument |
8.6 |
|
|
8.8 |
|
||
Qualifiers |
8.6 |
|
|
Qualifiers |
8.8 |
|
|
K shape value |
8.8 |
|
|
9.4 |
|
||
Qualifier |
9.4 |
|
|
Qualifiers |
9.4 |
|
|
Qualifier |
9.4 |
|
|
|
Base variant |
8.6 |
|
8.8 |
|
||
9.0 |
|
||
Kind |
8.6 |
|
|
9.0 |
|
||
Kind |
8.6 |
|
|
8.8 |
|
||
9.0 |
|
||
9.4 |
|
||
Argument |
8.6 |
|
|
8.8 |
|
||
Qualifiers |
8.6 |
|
|
Qualifiers |
8.8 |
|
|
Qualifiers |
9.4 |
|
|
Qualifier |
9.4 |
|
|
|
Base variant |
8.6 |
|
8.8 |
|
||
9.0 |
|
||
Kind |
8.6 |
|
|
9.0 |
|
||
Qualifier |
9.4 |
|
|
|
|
8.7 |
|
8.8 |
|
||
|
|
8.7 |
|
8.8 |
|
||
Kind |
8.7 |
|
|
|
Types |
9.2 |
|
|
Types |
9.2 |
|
|
Types |
9.4 |
|
FP8/FP6/FP4 x4 packed types |
9.4 |
|
|
|
Base variant |
9.4 |
|
|
Qualifier |
9.4 |
|
Qualifier |
9.4 |
|
|
|
Qualifier |
9.4 |
|
|
Qualifier |
9.4 |
|
Qualifiers |
9.4 |
|
|
|
Qualifier |
9.4 |
|
|
Base variant |
9.4 |
|
|
Base variant |
9.4 |
|
13.1. Changes in PTX ISA Version 9.4#
New Features
PTX ISA version 9.4 introduces the following new features:
Adds support for
sm_107target architecture.Adds support for target
sm_107fthat supports family-specific features.Adds support for target
sm_107athat supports architecture-specific features.Adds support for instruction types
.u8x4,.s8x4,.u16x2,.s16x2forsetinstruction.Adds support for
.pzoqualifier forcvtinstruction.Adds support for
.rzrounding mode forcvtinstruction with.e4m3x2,.e5m2x2,.e2m3x2,.e3m2x2,.e2m1x2destination types.Adds support for
.multicast::cluster::32bqualifier formbarrier.expect_tx,mbarrier.complete_tx,mbarrier.arrive,mbarrier.arrive_drop,cp.async.bulk,cp.async.bulk.tensorandtcgen05.commitinstructions.Adds support for
.sync_restrict::shared::read::mma::aqualifier fortcgen05.commitinstruction.Adds support for
.level::eviction_priorityqualifier forcp.async.bulk.prefetchandcp.async.bulk.prefetch.tensorinstructions.Adds support for
applypriority.async.bulkandapplypriority.async.bulk.tensorinstructions.Adds support for
.override::global_addressand.override_attributequalifiers forcp.async.bulk.tensor,cp.reduce.async.bulk.tensor,cp.async.bulk.prefetch.tensorinstructions.Adds support for
.im2col_no_offs::wqualifier forcp.async.bulk.tensorandcp.reduce.async.bulk.tensorinstructions.Adds support for
.spcompressqualifier fortcgen05.ldandtcgen05.ld.redinstructions.Adds support for
spcompressandspdecompressinstructions.Adds support for
.ue5m3x2instruction type forcvtinstruction.Adds support for
.scaled::n1::ue8m0qualifier forcvtinstruction.Adds
UE5M3as scale type fortcgen05.mmaandtcgen05.mma.spinstructions.Adds support for
.kind::ti16qualifier fortcgen05.mma,tcgen05.mma.sp,tcgen05.mma.ws,tcgen05.mma.ws.spinstructions.Adds support for
add,sub,mulandfmainstructions with.f16x2/.bf16x2/.f32x2types.Adds support for
add,sub,mulandfmainstructions with FP8/FP6/FP4 x4 packed types.Adds support for
.exclusivequalifier fortcgen05.allocandtcgen05.deallocinstructions.Adds support for
.report_mechanismqualifier forcp.async.bulkandcp.async.bulk.tensorinstructions.Adds support for
.decompress::lut::bqualifier fortcgen05.mmainstruction.Adds support for
.collector::b::*qualifier fortcgen05.mmainstruction.Adds support for
.loc_intermediatedirective and.nv_intermediate_source_sectionconstruct for intermediate IR source location mapping.Adds support for
.valid_addrand.L1::32Bqualifiers forprefetchinstruction.Adds support for
.noftzqualifier with.f32type foratom,red,cp.reduce.async.bulk, andmultimem.cp.reduce.async.bulkinstructions.Adds support for
.proxy::readonlyqualifier forldinstruction.Adds support for
.minperctamemorydirective and%perctamemoryoffset,%perctamemorysizespecial registers for per-CTA global memory.Adds support for
.s8.s4types forldmatrixinstruction for.m8n16shape.Adds support for
.sync_restrict::shared::cluster::readqualifier forfence.proxy.async::genericinstruction.Adds support for
.acquireand.releasequalifiers with.aliasqualifier forfence.proxyinstruction.Adds support for
fabric.try_get.async.tensor,fabric.try_put.async.tensor, andfabric.try_red.async.tensorinstructions.Adds support for
fabric.try_atominstruction.Adds support for
createpolicy.range.fabricinstruction.Adds support for
.level::cache_hintqualifier forfabric.try_get,fabric.try_put, andfabric.try_redinstructions.
Semantic Changes and Clarifications
None
13.2. Changes in PTX ISA Version 9.3#
New Features
PTX ISA version 9.3 introduces the following new features:
Adds support for
mma_throughputpragma.Adds support for
clmadinstruction.Adds support for
.phase_type::*qualifier formbarrier.test_waitandmbarrier.try_waitinstructions.Adds support for
reportPredicateandreportValueoperands formbarrier.test_waitandmbarrier.try_waitinstructions.Adds support for
.layoutqualifier for mbarrier instructions and support formbarrier.check_layoutinstruction.Adds support for
multimem.st.asyncandmultimem.red.asyncinstructions.Adds support for
.semand.scopequalifiers forcp.async.bulk,cp.reduce.async.bulk,multimem.cp.async.bulkandmultimem.cp.reduce.async.bulkinstructions.Adds support for
fabric.try_get,fabric.try_put,fabric.try_red,fabric.try_pullred,fabric.wait,fabric.submitinstructions.Adds support for
fence.proxy.to_proxykind::from_proxykind_fabricqualifier forfenceinstruction.Adds support for
.languagedirective.
Semantic Changes and Clarifications
Clarified that
red.asyncinstruction supportssysscope and notclusterscope with.releasequalifier.
13.3. Changes in PTX ISA Version 9.2#
New Features
PTX ISA version 9.2 introduces the following new features:
Adds support for
.u8x4and.s8x4instruction types foradd,sub,min,max,neginstructions.Adds support for
add.sat.{u16x2/s16x2/u32}instruction.Adds support for
.b128type forst.asyncinstruction.Adds support for
.ignore_oobqualifier forcp.async.bulkinstruction.Adds support for
.bf16x2destination type forcvtinstruction with.e4m3x2,.e5m2x2,.e3m2x2,.e2m3x2,.e2m1x2source types.
Semantic Changes and Clarifications
For
wgmma.mma_asyncinstruction with.atypeand.btypeas.e4m3/.e5m2and.dtypeas.f32, current implementation does accumulation at higher than half precision but lower than single precision.
13.4. Changes in PTX ISA Version 9.1#
New Features
PTX ISA version 9.1 introduces the following new features:
Adds support for
.volatilequalifier with.localstate space forldandstinstructions.Adds support for
.f16x2and.bf16x2source types forcvtinstruction with destination types.e2m1x2,.e2m3x2,.e3m2x2,.e4m3x2,.e5m2x2.Adds support for
.scale_vec::4Xwith.ue8m0as.stypewith.kind::mxf4nvf4formma/mma.spinstructions.Adds support for
.s2f6x2instruction type forcvtinstruction.Adds support for
multimem.cp.async.bulkandmultimem.cp.reduce.async.bulkinstructions.
Semantic Changes and Clarifications
None.
13.5. Changes in PTX ISA Version 9.0#
New Features
PTX ISA version 9.0 introduces the following new features:
Adds support for
sm_88target architecture.Adds support for
sm_110target architecture.Adds support for target
sm_110fthat supports family-specific features.Adds support for target
sm_110athat supports architecture-specific features.Adds support for pragma
enable_smem_spillingthat is used to enable shared memory spilling for a function.Adds support for pragma
frequencythat is used to specify the execution frequency of a basic block.Adds support for directive
.blocksareclustersthat is used to specify that CUDA thread blocks are mapped to clusters.Extends
sizeoperand ofst.bulkinstruction to support 32-bit length.Adds support for performance-tuning directives
.abi_preserveand.abi_preserve_controlthat are used to specify the number of data and control registers that should be preserved by the callers of a function.
Semantic Changes and Clarifications
All
tcgen05instructions(tcgen05.alloc,tcgen05.dealloc,tcgen05.relinquish_alloc_permit,tcgen05.cp,tcgen05.shift,tcgen05.mma,tcgen05.mma.sp,tcgen05.mma.ws, tcgen05.mma.ws.sp,tcgen05.commit) within a kernel must specify the same value for the.cta_groupqualifier.
13.6. Changes in PTX ISA Version 8.8#
New Features
PTX ISA version 8.8 introduces the following new features:
Adds support for
sm_103target architecture.Adds support for target
sm_103athat supports architecture-specific features.Adds support for
sm_121target architecture.Adds support for target
sm_121athat supports architecture-specific features.Introduces family-specific target architectures that are represented with “f” suffix. PTX for family-specific targets is compatible with all subsequent targets in same family. Adds support for
sm_100f,sm_101f,sm_103f,sm_120f,sm_121f.Extends
minandmaxinstructions to support three input arguments.Extends
tcgen05.mmainstruction to add support for newscale_vectorsizequalifiers.block16and.block32and K dimension 96.Extends
.field3oftensormap.replaceinstruction to support 96B swizzle mode.Adds support for
tcgen05.ld.redinstruction.Extends
ld,ld.global.ncandstinstructions to support 256b load/store operations.-
Table 73 shows the list of features that are supported on family-specific targets:
Table 73 List of features promoted to family-specific architecture Feature
Supported targets
.m16n8,.m16n16,.m8n16shapes and.b8type forldmatrix/stmatrixsm_100f,sm_101f,sm_120fShapes for
tcgen05.16x64b.16x128b,.16x256b,.16x32bx2,.32x32b,.4x256b,.32x128b,.64x128b,.128x256b,.128x128b,.31x256bsm_100f,sm_101fsetmaxnregsm_100f,sm_101f,sm_120f.cta_groupmodifiersm_100f,sm_101fcvtwith.e2m1x2,.e3m2x2,.e2m3x2,.ue8m0x2sm_100f,sm_101f,sm_120fmultimemwith.acc::f16and.e5m2,.e5m2x2,.e5m2x4,.e4m3,.e4m3x2,.e4m3x4typessm_100f,sm_101ftensormap.replacesm_100f,sm_101f,sm_120ftcgen05.ld.redsm_101f,sm_103ftcgen05.ld/st/fence/wait/commit/cp/alloc/dealloc/relinquish_alloc_permitsm_100f,sm_101ftcgen05.mma{.ws}{.sp}(exceptkind::mxf4/kind::mxf4nvf4for.sp)sm_100f,sm_101ftcgen05.kind::mxf4nvf4,.kind::mxf4,.kind::mxf8f6f4,.kind::f16,.kind::tf32,.kind::f8f6f4sm_100f,sm_101f.ashift,.collector_usagemodifiers fortcgen05sm_100f,sm_101fModifiers
.b8x16,.b6x16_p32,.b4x16_p64sm_100f,sm_101f,sm_120f.block_scalemodifiersm_100f,sm_101f,sm_120fmma{.sp}with.e3m2,.e2m3,.e2m1types and.kind,.block_scale,.scale_vec_sizemodifiers (except.spwithmxf4/mxf4nvf4)sm_120f.scale_vec::1X/2X/4Xmodifierssm_120f.block16/.block32modifiers (alias toscale_vec)sm_100f,sm_101f.warpx2::02_13,.warpx2::01_23,.warpx4,.pack::16b,.unpack::16bmodifiers fortcgen05sm_100f,sm_101fclusterlaunchcontrol.try_cancelmulticast::cluster::allsm_100f,sm_101f,sm_120f.tile::scatter4,.tile::gather4,.im2col::w,.im2col::w::128sm_100f,sm_101fredux.f32sm_100fscale-input-dfortcgen05sm_100f
Semantic Changes and Clarifications
Clarified the behavior of float-to-integer conversions for
NaNinput.
13.7. Changes in PTX ISA Version 8.7#
New Features
PTX ISA version 8.7 introduces the following new features:
Adds support for
sm_120target architecture.Adds support for target
sm_120athat supports architecture-specific features.Extends
tcgen05.mmainstruction to add support for.kind::mxf4nvf4and.scale_vec::4Xqualifiers.Extends
mmainstructions to support.f16type accumulator and shape.m16n8k16with FP8 types.e4m3and.e5m2.Extends
cvtinstruction to add support for.rsrounding mode and destination types.e2m1x4,.e4m3x4,.e5m2x4,.e3m2x4,.e2m3x4.Extends support for
st.asyncandred.asyncinstructions to add support for.mmio,.release,.globaland.scopequalifiers.Extends
tensormap.replaceinstruction to add support for values13to15for.elemtypequalifier.Extends
mmaandmma.sp::ordered_metadatainstructions to add support for types.e3m2/.e2m3/.e2m1and qualifiers.kind,.block_scale,.scale_vec_size.
Semantic Changes and Clarifications
Clarified that in
.tile::gather4,.tile::scatter4modes, tensor coordinates need to be specified as {col_idx, row_idx0, row_idx1, row_idx2, row_idx3} i.e. {x, y0, y1, y2, y3} instead of {x0, x1, x2, x3, y}.Updated Instruction descriptor of
tcgen05.mmainstruction to clarify the bits that are reserved for future use.
13.8. Changes in PTX ISA Version 8.6#
New Features
PTX ISA version 8.6 introduces the following new features:
Adds support for
sm_100target architecture.Adds support for target
sm_100athat supports architecture-specific features.Adds support for
sm_101target architecture.Adds support for target
sm_101athat supports architecture-specific features.Extends
cp.async.bulkandcp.async.bulk.tensorinstructions to add.shared::ctaas destination state space.Extends
fenceinstruction to add support for.acquireand.releasequalifiers.Extends
fenceandfence.proxyinstructions to add support for.sync_restrictqualifier.Extends
ldmatrixinstruction to support.m16n16,.m8n16shapes and.b8type.Extends
ldmatrixinstruction to support.src_fmt,.dst_fmtqualifiers.Extends
stmatrixinstruction to support.m16n8shape and.b8type.Adds support for
clusterlaunchcontrolinstruction.Extends
add,subandfmainstructions to support mixed precision floating point operations with.f32as destaination operand type and.f16/.bf16as source operand types.Extends
add,sub,mulandfmainstructions to support.f32x2type.Extends
cvtinstruction with.tf32type to support.satfinitequalifier for.rn/.rzrounding modes.Extends
cp.async.bulkinstruction to support.cp_maskqualifier andbyteMaskoperand.Extends
multimem.ld_reduceandmultimem.stinstructions to support.e5m2,.e5m2x2,.e5m2x4,.e4m3,.e4m3x2and.e4m3x4types.Extends
cvtinstruction to support conversions to/from.e2m1x2,.e3m2x2,.e2m3x2and.ue8m0x2types.Extends
cp.async.bulk.tensorandcp.async.bulk.prefetch.tensorinstructions to support new load_mode qualifiers.tile::scatter4and.tile::gather4.Extends
tensormap.replaceinstruction to add support for new qualifier.swizzle_atomicityfor supporting new swizzle modes.Extends
mbarrier.arrive,mbarrier.arrive_drop,.mbarrier.test_waitand.mbarrier.try_waitinstructions to support.relaxedqualifier.Extends
cp.async.bulk.tensorandcp.async.bulk.prefetch.tensorinstructions to support new load_mode qualifiers.im2col::wand.im2col::w::128.Extends
cp.async.bulk.tensorinstruction to support new qualifier.cta_group.Add support for
st.bulkinstruction.Adds support for tcgen05 features and related instructions:
tcgen05.alloc,tcgen05.dealloc,tcgen05.relinquish_alloc_permit,tcgen05.ld,tcgen05.st,tcgen05.wait,tcgen05.cp,tcgen05.shift,tcgen05.mma,tcgen05.mma.sp,tcgen05.mma.ws,tcgen05.mma.ws.sp,tcgen05.fenceandtcgen05.commit.Extends
redux.syncinstruction to add support for.f32type with qualifiers.absand.NaN.
Semantic Changes and Clarifications
None.
13.9. Changes in PTX ISA Version 8.5#
New Features
PTX ISA version 8.5 introduces the following new features:
Adds support for
mma.sp::ordered_metadatainstruction.
Semantic Changes and Clarifications
Values
0b0000,0b0101,0b1010,0b1111for sparsity metadata (operande) of instructionmma.spare invalid and their usage results in undefined behavior.
13.10. Changes in PTX ISA Version 8.4#
New Features
PTX ISA version 8.4 introduces the following new features:
Extends
ld,standatominstructions with.b128type to support.sysscope.Extends integer
wgmma.mma_asyncinstruction to support.u8.s8and.s8.u8as.atypeand.btyperespectively.Extends
mma,mma.spinstructions to support FP8 types.e4m3and.e5m2.
Semantic Changes and Clarifications
None.
13.11. Changes in PTX ISA Version 8.3#
New Features
PTX ISA version 8.3 introduces the following new features:
Adds support for pragma
used_bytes_maskthat is used to specify mask for used bytes for a load operation.Extends
isspacep,cvta.to,ldandstinstructions to accept::entryand::funcsub-qualifiers with.paramstate space qualifier.Adds support for
.b128type on instructionsld,ld.global.nc,ldu,st,movandatom.Add support for instructions
tensormap.replace,tensormap.cp_fenceproxyand support for qualifier.to_proxykind::from_proxykindon instructionfence.proxyto support modifyingtensor-map.
Semantic Changes and Clarifications
None.
13.12. Changes in PTX ISA Version 8.2#
New Features
PTX ISA version 8.2 introduces the following new features:
Adds support for
.mmioqualifier onldandstinstructions.Extends
lop3instruction to allow predicate destination.Extends
multimem.ld_reduceinstruction to support.acc::f32qualifier to allow.f32precision of the intermediate accumulation.Extends the asynchronous warpgroup-level matrix multiply-and-accumulate operation
wgmma.mma_asyncto support.spmodifier that allows matrix multiply-accumulate operation when input matrix A is sparse.
Semantic Changes and Clarifications
The .multicast::cluster qualifier on cp.async.bulk and cp.async.bulk.tensor instructions
is optimized for target architecture sm_90a and may have substantially reduced performance on
other targets and hence .multicast::cluster is advised to be used with sm_90a.
13.13. Changes in PTX ISA Version 8.1#
New Features
PTX ISA version 8.1 introduces the following new features:
Adds support for
st.asyncandred.asyncinstructions for asynchronous store and asynchronous reduction operations respectively on shared memory.Adds support for
.oobmodifier on half-precisionfmainstruction.Adds support for
.satfinitesaturation modifier oncvtinstruction for.f16,.bf16and.tf32formats.Extends support for
cvtwith.e4m3/.e5m2tosm_89.Extends
atomandredinstructions to support vector types.Adds support for special register
%aggr_smem_size.Extends
suredinstruction with 64-bitmin/maxoperations.Adds support for increased kernel parameter size of 32764 bytes.
Adds support for multimem addresses in memory consistency model.
Adds support for
multimem.ld_reduce,multimem.standmultimem.redinstructions to perform memory operations on multimem addresses.
Semantic Changes and Clarifications
None.
13.14. Changes in PTX ISA Version 8.0#
New Features
PTX ISA version 8.0 introduces the following new features:
Adds support for target
sm_90athat supports architecture-specific features.Adds support for asynchronous warpgroup-level matrix multiply-and-accumulate operation
wgmma.Extends the asynchronous copy operations with bulk operations that operate on large data, including tensor data.
Introduces packed integer types
.u16x2and.s16x2.Extends integer arithmetic instruction
addto allow packed integer types.u16x2and.s16x2.Extends integer arithmetic instructions
minandmaxto allow packed integer types.u16x2and.s16x2, as well as saturation modifier.reluon.s16x2and.s32types.Adds support for special register
%current_graph_execthat identifies the currently executing CUDA device graph.Adds support for
elect.syncinstruction.Adds support for
.unifiedattribute on functions and variables.Adds support for
setmaxnreginstruction.Adds support for
.semqualifier onbarrier.clusterinstruction.Extends the
fenceinstruction to allow opcode-specific synchronizaion usingop_restrictqualifier.Adds support for
.clusterscope onmbarrier.arrive,mbarrier.arrive_drop,mbarrier.test_waitandmbarrier.try_waitoperations.Adds support for transaction count operations on
mbarrierobjects, specified with.expect_txand.complete_txqualifiers.
Semantic Changes and Clarifications
None.
13.15. Changes in PTX ISA Version 7.8#
New Features
PTX ISA version 7.8 introduces the following new features:
Adds support for
sm_89target architecture.Adds support for
sm_90target architecture.Extends
barandbarrierinstructions to accept optional scope qualifier.cta.Extends
.sharedstate space qualifier with optional sub-qualifier::cta.Adds support for
movmatrixinstruction which transposes a matrix in registers across a warp.Adds support for
stmatrixinstruction which stores one or more matrices to shared memory.Extends the
.f64floating point typemmaoperation with shapes.m16n8k4,.m16n8k8, and.m16n8k16.Extends
add,sub,mul,set,setp,cvt,tanh,ex2,atomandredinstructions withbf16alternate floating point data format.Adds support for new alternate floating-point data formats
.e4m3and.e5m2.Extends
cvtinstruction to convert.e4m3and.e5m2alternate floating point data formats.Adds support for
griddepcontrolinstruction as a communication mechanism to control the execution of dependent grids.Extends
mbarrierinstruction to allow a new phase completion check operation try_wait.Adds support for new thread scope
.clusterwhich is a set of Cooperative Thread Arrays (CTAs).Extends
fence/membar,ld,st,atom, andredinstructions to accept.clusterscope.Adds support for extended visibility of shared state space to all threads within a cluster.
Extends
.sharedstate space qualifier with::clustersub-qualifier for cluster-level visibility of shared memory.Extends
isspacep,cvta,ld,st,atom, andredinstructions to accept::clustersub-qualifier with.sharedstate space qualifier.Adds support for
mapainstruction to map a shared memory address to the corresponding address in a different CTA within the cluster.Adds support for
getctarankinstruction to query the rank of the CTA that contains a given address.Adds support for new barrier synchronization instruction
barrier.cluster.Extends the memory consistency model to include the new cluster scope.
Adds support for special registers related to cluster information:
%is_explicit_cluster,%clusterid,%nclusterid,%cluster_ctaid,%cluster_nctaid,%cluster_ctarank,%cluster_nctarank.Adds support for cluster dimension directives
.reqnctapercluster,.explicitcluster, and.maxclusterrank.
Semantic Changes and Clarifications
None.
13.16. Changes in PTX ISA Version 7.7#
New Features
PTX ISA version 7.7 introduces the following new features:
Extends
isspacepandcvtainstructions to include the.paramstate space for kernel function parameters.
Semantic Changes and Clarifications
None.
13.17. Changes in PTX ISA Version 7.6#
New Features
PTX ISA version 7.6 introduces the following new features:
Support for
szextinstruction which performs sign-extension or zero-extension on a specified value.Support for
bmskinstruction which creates a bitmask of the specified width starting at the specified bit position.Support for special registers
%reserved_smem_offset_begin,%reserved_smem_offset_end,%reserved_smem_offset_cap,%reserved_smem_offset<2>.
Semantic Changes and Clarifications
None.
13.18. Changes in PTX ISA Version 7.5#
New Features
PTX ISA version 7.5 introduces the following new features:
Debug information enhancements to support label difference and negative values in the
.sectiondebugging directive.Support for
ignore-srcoperand oncp.asyncinstruction.-
Extensions to the memory consistency model to introduce the following new concepts:
A memory proxy as an abstract label for different methods of memory access.
Virtual aliases as distinct memory addresses accessing the same physical memory location.
Support for new
fence.proxyandmembar.proxyinstructions to allow synchronization of memory accesses performed via virtual aliases.
Semantic Changes and Clarifications
None.
13.19. Changes in PTX ISA Version 7.4#
New Features
PTX ISA version 7.4 introduces the following new features:
Support for
sm_87target architecture.Support for
.level::eviction_priorityqualifier which allows specifying cache eviction priority hints onld,ld.global.nc,st, andprefetchinstructions.Support for
.level::prefetch_sizequalifier which allows specifying data prefetch hints onldandcp.asyncinstructions.Support for
createpolicyinstruction which allows construction of different types of cache eviction policies.Support for
.level::cache_hintqualifier which allows the use of cache eviction policies withld,ld.global.nc,st,atom,redandcp.asyncinstructions.Support for
applypriorityanddiscardoperations on cached data.
Semantic Changes and Clarifications
None.
13.20. Changes in PTX ISA Version 7.3#
New Features
PTX ISA version 7.3 introduces the following new features:
Extends
mask()operator used in initializers to also support integer constant expression.Adds support for stack manpulation instructions that allow manipulating stack using
stacksaveandstackrestoreinstructions and allocation of per-thread stack usingallocainstruction.
Semantic Changes and Clarifications
The unimplemented version of alloca from the older PTX ISA specification has been replaced with
new stack manipulation instructions in PTX ISA version 7.3.
13.21. Changes in PTX ISA Version 7.2#
New Features
PTX ISA version 7.2 introduces the following new features:
Enhances
.locdirective to represent inline function information.Adds support to define labels inside the debug sections.
Extends
minandmaxinstructions to support.xorsignand.absmodifiers.
Semantic Changes and Clarifications
None.
13.22. Changes in PTX ISA Version 7.1#
New Features
PTX ISA version 7.1 introduces the following new features:
Support for
sm_86target architecture.Adds a new operator,
mask(), to extract a specific byte from variable’s address used in initializers.Extends
texandtld4instructions to return an optional predicate that indicates if data at specified coordinates is resident in memory.Extends single-bit
wmmaandmmainstructions to support.andoperation.Extends
mmainstruction to support.spmodifier that allows matrix multiply-accumulate operation when input matrix A is sparse.Extends
mbarrier.test_waitinstruction to test the completion of specific phase parity.
Semantic Changes and Clarifications
None.
13.23. Changes in PTX ISA Version 7.0#
New Features
PTX ISA version 7.0 introduces the following new features:
Support for
sm_80target architecture.Adds support for asynchronous copy instructions that allow copying of data asynchronously from one state space to another.
Adds support for
mbarrierinstructions that allow creation of mbarrier objects in memory and use of these objects to synchronize threads and asynchronous copy operations initiated by threads.Adds support for
redux.syncinstruction which allows reduction operation across threads in a warp.Adds support for new alternate floating-point data formats
.bf16and.tf32.Extends
wmmainstruction to support.f64type with shape.m8n8k4.Extends
wmmainstruction to support.bf16data format.Extends
wmmainstruction to support.tf32data format with shape.m16n16k8.Extends
mmainstruction to support.f64type with shape.m8n8k4.Extends
mmainstruction to support.bf16and.tf32data formats with shape.m16n8k8.Extends
mmainstruction to support new shapes.m8n8k128,.m16n8k4,.m16n8k16,.m16n8k32,.m16n8k64,.m16n8k128and.m16n8k256.Extends
absandneginstructions to support.bf16and.bf16x2data formats.Extends
minandmaxinstructions to support.NaNmodifier and.f16,.f16x2,.bf16and.bf16x2data formats.Extends
fmainstruction to support.relusaturation mode and.bf16and.bf16x2data formats.Extends
cvtinstruction to support.relusaturation mode and.f16,.f16x2,.bf16,.bf16x2and.tf32destination formats.Adds support for
tanhinstruction that computes hyperbolic-tangent.Extends
ex2instruction to support.f16and.f16x2types.
Semantic Changes and Clarifications
None.
13.24. Changes in PTX ISA Version 6.5#
New Features
PTX ISA version 6.5 introduces the following new features:
Adds support for integer destination types for half precision comparison instruction
set.Extends
absinstruction to support.f16and.f16x2types.Adds support for
cvt.packinstruction which allows converting two integer values and packing the results together.Adds new shapes
.m16n8k8,.m8n8k16and.m8n8k32on themmainstruction.Adds support for
ldmatrixinstruction which loads one or more matrices from shared memory formmainstruction.
Removed Features
PTX ISA version 6.5 removes the following features:
Support for
.satfinitequalifier on floating pointwmma.mmainstruction has been removed. This support was deprecated since PTX ISA version 6.4.
Semantic Changes and Clarifications
None.
13.25. Changes in PTX ISA Version 6.4#
New Features
PTX ISA version 6.4 introduces the following new features:
Adds support for
.noreturndirective which can be used to indicate a function does not return to it’s caller function.Adds support for
mmainstruction which allows performing matrix multiply-and-accumulate operation.
Deprecated Features
PTX ISA version 6.4 deprecates the following features:
Support for
.satfinitequalifier on floating pointwmma.mmainstruction.
Removed Features
PTX ISA version 6.4 removes the following features:
Support for
shflandvoteinstructions without the.syncqualifier has been removed for.targetsm_70and higher. This support was deprecated since PTX ISA version 6.0 as documented in PTX ISA version 6.2.
Semantic Changes and Clarifications
Clarified that resolving references of a
.weaksymbol considers only.weakor.visiblesymbols with the same name and does not consider local symbols with the same name.Clarified that in
cvtinstruction, modifier.ftzcan only be specified when either.atypeor.dtypeis.f32.
13.26. Changes in PTX ISA Version 6.3#
New Features
PTX ISA version 6.3 introduces the following new features:
Support for
sm_75target architecture.Adds support for a new instruction
nanosleepthat suspends a thread for a specified duration.Adds support for
.aliasdirective which allows defining alias to function symbol.Extends
atominstruction to perform.f16addition operation and.cas.b16operation.Extends
redinstruction to perform.f16addition operation.The
wmmainstructions are extended to support multiplicand matrices of type.s8,.u8,.s4,.u4,.b1and accumulator matrices of type.s32.
Semantic Changes and Clarifications
Introduced the mandatory
.alignedqualifier for allwmmainstructions.Specified the alignment required for the base address and stride parameters passed to
wmma.loadandwmma.store.Clarified that layout of fragment returned by
wmmaoperation is architecture dependent and passingwmmafragments around functions compiled for different link compatible SM architectures may not work as expected.Clarified that atomicity for
{atom/red}.f16x2}operations is guaranteed separately for each of the two.f16elements but not guaranteed to be atomic as single 32-bit access.
13.27. Changes in PTX ISA Version 6.2#
New Features
PTX ISA version 6.2 introduces the following new features:
A new instruction
activemaskfor querying active threads in a warp.Extends atomic and reduction instructions to perform
.f16x2addition operation with mandatory.noftzqualifier.
Deprecated Features
PTX ISA version 6.2 deprecates the following features:
The use of
shflandvoteinstructions without the.syncis deprecated retrospectively from PTX ISA version 6.0, which introduced thesm_70architecture that implements Independent Thread Scheduling.
Semantic Changes and Clarifications
Clarified that
wmmainstructions can be used in conditionally executed code only if it is known that all threads in the warp evaluate the condition identically, otherwise behavior is undefined.In the memory consistency model, the definition of morally strong operations was updated to exclude fences from the requirement of complete overlap since fences do not access memory.
13.28. Changes in PTX ISA Version 6.1#
New Features
PTX ISA version 6.1 introduces the following new features:
Support for
sm_72target architecture.Support for new matrix shapes
32x8x16and8x32x16inwmmainstruction.
Semantic Changes and Clarifications
None.
13.29. Changes in PTX ISA Version 6.0#
New Features
PTX ISA version 6.0 introduces the following new features:
Support for
sm_70target architecture.Specifies the memory consistency model for programs running on
sm_70and later architectures.Various extensions to memory instructions to specify memory synchronization semantics and scopes at which such synchronization can be observed.
New instruction
wmmafor matrix operations which allows loading matrices from memory, performing multiply-and-accumulate on them and storing result in memory.Support for new
barrierinstruction.Extends
neginstruction to support.f16and.f16x2types.A new instruction
fnswhich allows finding n-th set bit in integer.A new instruction
bar.warp.syncwhich allows synchronizing threads in warp.Extends
voteandshflinstructions with.syncmodifier which waits for specified threads before executing thevoteandshfloperation respectively.A new instruction
match.syncwhich allows broadcasting and comparing a value across threads in warp.A new instruction
brx.idxwhich allows branching to a label indexed from list of potential targets.Support for unsized array parameter for
.funcwhich can be used to implement variadic functions.Support for
.b16integer type in dwarf-lines.Support for taking address of device function return parameters using
movinstruction.
Semantic Changes and Clarifications
Semantics of
barinstruction were updated to indicate that executing thread waits for other non-exited threads from it’s warp.Support for indirect branch introduced in PTX 2.1 which was unimplemented has been removed from the spec.
Support for taking address of labels, using labels in initializers which was unimplemented has been removed from the spec.
Support for variadic functions which was unimplemented has been removed from the spec.
13.30. Changes in PTX ISA Version 5.0#
New Features
PTX ISA version 5.0 introduces the following new features:
Support for
sm_60,sm_61,sm_62target architecture.Extends atomic and reduction instructions to perform double-precision add operation.
Extends atomic and reduction instructions to specify
scopemodifier.A new
.commondirective to permit linking multiple object files containing declarations of the same symbol with different size.A new
dp4ainstruction which allows 4-way dot product with accumulate operation.A new
dp2ainstruction which allows 2-way dot product with accumulate operation.Support for special register
%clock_hi.
Semantic Changes and Clarifications
Semantics of cache modifiers on ld and st instructions were clarified to reflect cache
operations are treated as performance hint only and do not change memory consistency behavior of the
program.
Semantics of volatile operations on ld and st instructions were clarified to reflect how
volatile operations are handled by optimizing compiler.
13.31. Changes in PTX ISA Version 4.3#
New Features
PTX ISA version 4.3 introduces the following new features:
A new
lop3instruction which allows arbitrary logical operation on 3 inputs.Adds support for 64-bit computations in extended precision arithmetic instructions.
Extends
tex.gradinstruction to supportcubeandacubegeometries.Extends
tld4instruction to supporta2d,cubeandacubegeometries.Extends
texandtld4instructions to support optional operands for offset vector and depth compare.Extends
txqinstruction to support querying texture fields from specific LOD.
Semantic Changes and Clarifications
None.
13.32. Changes in PTX ISA Version 4.2#
New Features
PTX ISA version 4.2 introduces the following new features:
Support for
sm_53target architecture.Support for arithmetic, comparison and texture instructions for
.f16and.f16x2types.Support for
memory_layoutfield for surfaces andsuqinstruction support for querying this field.
Semantic Changes and Clarifications
Semantics for parameter passing under ABI were updated to indicate ld.param and st.param
instructions used for argument passing cannot be predicated.
Semantics of {atom/red}.add.f32 were updated to indicate subnormal inputs and results are
flushed to sign-preserving zero for atomic operations on global memory; whereas atomic operations on
shared memory preserve subnormal inputs and results and don’t flush them to zero.
13.33. Changes in PTX ISA Version 4.1#
New Features
PTX ISA version 4.1 introduces the following new features:
Support for
sm_37andsm_52target architectures.Support for new fields
array_size,num_mipmap_levelsandnum_samplesfor Textures, and thetxqinstruction support for querying these fields.Support for new field
array_sizefor Surfaces, and thesuqinstruction support for querying this field.Support for special registers
%total_smem_sizeand%dynamic_smem_size.
Semantic Changes and Clarifications
None.
13.34. Changes in PTX ISA Version 4.0#
New Features
PTX ISA version 4.0 introduces the following new features:
Support for
sm_32andsm_50target architectures.Support for 64bit performance counter special registers
%pm0_64,..,%pm7_64.A new
istypepinstruction.A new instruction,
rsqrt.approx.ftz.f64has been added to compute a fast approximation of the square root reciprocal of a value.Support for a new directive
.attributefor specifying special attributes of a variable.Support for
.managedvariable attribute.
Semantic Changes and Clarifications
The vote instruction semantics were updated to clearly indicate that an inactive thread in a
warp contributes a 0 for its entry when participating in vote.ballot.b32.
13.35. Changes in PTX ISA Version 3.2#
New Features
PTX ISA version 3.2 introduces the following new features:
The texture instruction supports reads from multi-sample and multisample array textures.
Extends
.sectiondebugging directive to include label + immediate expressions.Extends
.filedirective to include timestamp and file size information.
Semantic Changes and Clarifications
The vavrg2 and vavrg4 instruction semantics were updated to indicate that instruction adds 1
only if Va[i] + Vb[i] is non-negative, and that the addition result is shifted by 1 (rather than
being divided by 2).
13.36. Changes in PTX ISA Version 3.1#
New Features
PTX ISA version 3.1 introduces the following new features:
Support for
sm_35target architecture.Support for CUDA Dynamic Parallelism, which enables a kernel to create and synchronize new work.
ld.global.ncfor loading read-only global data though the non-coherent texture cache.A new funnel shift instruction,
shf.Extends atomic and reduction instructions to perform 64-bit
{and, or, xor}operations, and 64-bit integer{min, max}operations.Adds support for
mipmaps.Adds support for indirect access to textures and surfaces.
Extends support for generic addressing to include the
.conststate space, and adds a new operator,generic(), to form a generic address for.globalor.constvariables used in initializers.A new
.weakdirective to permit linking multiple object files containing declarations of the same symbol.
Semantic Changes and Clarifications
PTX 3.1 redefines the default addressing for global variables in initializers, from generic
addresses to offsets in the global state space. Legacy PTX code is treated as having an implicit
generic() operator for each global variable used in an initializer. PTX 3.1 code should either
include explicit generic() operators in initializers, use cvta.global to form generic
addresses at runtime, or load from the non-generic address using ld.global.
Instruction mad.f32 requires a rounding modifier for sm_20 and higher targets. However for
PTX ISA version 3.0 and earlier, ptxas does not enforce this requirement and mad.f32 silently
defaults to mad.rn.f32. For PTX ISA version 3.1, ptxas generates a warning and defaults to
mad.rn.f32, and in subsequent releases ptxas will enforce the requirement for PTX ISA version
3.2 and later.
13.37. Changes in PTX ISA Version 3.0#
New Features
PTX ISA version 3.0 introduces the following new features:
Support for
sm_30target architectures.SIMD video instructions.
A new warp shuffle instruction.
Instructions
mad.ccandmadcfor efficient, extended-precision integer multiplication.Surface instructions with 3D and array geometries.
The texture instruction supports reads from cubemap and cubemap array textures.
Platform option
.targetdebug to declare that a PTX module containsDWARFdebug information.pmevent.mask, for triggering multiple performance monitor events.Performance monitor counter special registers
%pm4..%pm7.
Semantic Changes and Clarifications
Special register %gridid has been extended from 32-bits to 64-bits.
PTX ISA version 3.0 deprecates module-scoped .reg and .local variables when compiling to the
Application Binary Interface (ABI). When compiling without use of the ABI, module-scoped .reg
and .local variables are supported as before. When compiling legacy PTX code (ISA versions prior
to 3.0) containing module-scoped .reg or .local variables, the compiler silently disables
use of the ABI.
The shfl instruction semantics were updated to clearly indicate that value of source operand
a is unpredictable for inactive and predicated-off threads within the warp.
PTX modules no longer allow duplicate .version directives. This feature was unimplemented, so
there is no semantic change.
Unimplemented instructions suld.p and sust.p.{u32,s32,f32} have been removed.
13.38. Changes in PTX ISA Version 2.3#
New Features
PTX 2.3 adds support for texture arrays. The texture array feature supports access to an array of 1D or 2D textures, where an integer indexes into the array of textures, and then one or two single-precision floating point coordinates are used to address within the selected 1D or 2D texture.
PTX 2.3 adds a new directive, .address_size, for specifying the size of addresses.
Variables in .const and .global state spaces are initialized to zero by default.
Semantic Changes and Clarifications
The semantics of the .maxntid directive have been updated to match the current
implementation. Specifically, .maxntid only guarantees that the total number of threads in a
thread block does not exceed the maximum. Previously, the semantics indicated that the maximum was
enforced separately in each dimension, which is not the case.
Bit field extract and insert instructions BFE and BFI now indicate that the len and pos
operands are restricted to the value range 0..255.
Unimplemented instructions {atom,red}.{min,max}.f32 have been removed.
13.39. Changes in PTX ISA Version 2.2#
New Features
PTX 2.2 adds a new directive for specifying kernel parameter attributes; specifically, there is a new directives for specifying that a kernel parameter is a pointer, for specifying to which state space the parameter points, and for optionally specifying the alignment of the memory to which the parameter points.
PTX 2.2 adds a new field named force_unnormalized_coords to the .samplerref opaque
type. This field is used in the independent texturing mode to override the normalized_coords
field in the texture header. This field is needed to support languages such as OpenCL, which
represent the property of normalized/unnormalized coordinates in the sampler header rather than in
the texture header.
PTX 2.2 deprecates explicit constant banks and supports a large, flat address space for the
.const state space. Legacy PTX that uses explicit constant banks is still supported.
PTX 2.2 adds a new tld4 instruction for loading a component (r, g, b, or a) from
the four texels compising the bilinear interpolation footprint of a given texture location. This
instruction may be used to compute higher-precision bilerp results in software, or for performing
higher-bandwidth texture loads.
Semantic Changes and Clarifications
None.
13.40. Changes in PTX ISA Version 2.1#
New Features
The underlying, stack-based ABI is supported in PTX ISA version 2.1 for sm_2x targets.
Support for indirect calls has been implemented for sm_2x targets.
New directives, .branchtargets and .calltargets, have been added for specifying potential
targets for indirect branches and indirect function calls. A .callprototype directive has been
added for declaring the type signatures for indirect function calls.
The names of .global and .const variables can now be specified in variable initializers to
represent their addresses.
A set of thirty-two driver-specific execution environment special registers has been added. These
are named %envreg0..%envreg31.
Textures and surfaces have new fields for channel data type and channel order, and the txq and
suq instructions support queries for these fields.
Directive .minnctapersm has replaced the .maxnctapersm directive.
Directive .reqntid has been added to allow specification of exact CTA dimensions.
A new instruction, rcp.approx.ftz.f64, has been added to compute a fast, gross approximate
reciprocal.
Semantic Changes and Clarifications
A warning is emitted if .minnctapersm is specified without also specifying .maxntid.
13.41. Changes in PTX ISA Version 2.0#
New Features
Floating Point Extensions
This section describes the floating-point changes in PTX ISA version 2.0 for sm_20 targets. The
goal is to achieve IEEE 754 compliance wherever possible, while maximizing backward compatibility
with legacy PTX ISA version 1.x code and sm_1x targets.
The changes from PTX ISA version 1.x are as follows:
Single-precision instructions support subnormal numbers by default for
sm_20targets. The.ftzmodifier may be used to enforce backward compatibility withsm_1x.Single-precision
add,sub, andmulnow support.rmand.rprounding modifiers forsm_20targets.A single-precision fused multiply-add (fma) instruction has been added, with support for IEEE 754 compliant rounding modifiers and support for subnormal numbers. The
fma.f32instruction also supports.ftzand.satmodifiers.fma.f32requiressm_20. Themad.f32instruction has been extended with rounding modifiers so that it’s synonymous withfma.f32forsm_20targets. Bothfma.f32andmad.f32require a rounding modifier forsm_20targets.The
mad.f32instruction without rounding is retained so that compilers can generate code forsm_1xtargets. When code compiled forsm_1xis executed onsm_20devices,mad.f32maps tofma.rn.f32.Single- and double-precision
div,rcp, andsqrtwith IEEE 754 compliant rounding have been added. These are indicated by the use of a rounding modifier and requiresm_20.Instructions
testpandcopysignhave been added.
New Instructions
A load uniform instruction, ldu, has been added.
Surface instructions support additional .clamp modifiers, .clamp and .zero.
Instruction sust now supports formatted surface stores.
A count leading zeros instruction, clz, has been added.
A find leading non-sign bit instruction, bfind, has been added.
A bit reversal instruction, brev, has been added.
Bit field extract and insert instructions, bfe and bfi, have been added.
A population count instruction, popc, has been added.
A vote ballot instruction, vote.ballot.b32, has been added.
Instructions {atom,red}.add.f32 have been implemented.
Instructions {atom,red}.shared have been extended to handle 64-bit data types for sm_20
targets.
A system-level membar instruction, membar.sys, has been added.
The bar instruction has been extended as follows:
A
bar.arriveinstruction has been added.Instructions
bar.red.popc.u32andbar.red.{and,or}.predhave been added.barnow supports optional thread count and register operands.
Scalar video instructions (includes prmt) have been added.
Instruction isspacep for querying whether a generic address falls within a specified state space
window has been added.
Instruction cvta for converting global, local, and shared addresses to generic address and
vice-versa has been added.
Other New Features
Instructions ld, ldu, st, prefetch, prefetchu, isspacep, cvta, atom,
and red now support generic addressing.
New special registers %nwarpid, %nsmid, %clock64, %lanemask_{eq,le,lt,ge,gt} have
been added.
Cache operations have been added to instructions ld, st, suld, and sust, e.g., for
prefetching to specified level of memory hierarchy. Instructions prefetch and prefetchu
have also been added.
The .maxnctapersm directive was deprecated and replaced with .minnctapersm to better match
its behavior and usage.
A new directive, .section, has been added to replace the @@DWARF syntax for passing
DWARF-format debugging information through PTX.
A new directive, .pragma nounroll, has been added to allow users to disable loop unrolling.
Semantic Changes and Clarifications
The errata in cvt.ftz for PTX ISA versions 1.4 and earlier, where single-precision subnormal
inputs and results were not flushed to zero if either source or destination type size was 64-bits,
has been fixed. In PTX ISA version 1.5 and later, cvt.ftz (and cvt for .target sm_1x,
where .ftz is implied) instructions flush single-precision subnormal inputs and results to
sign-preserving zero for all combinations of floating-point instruction types. To maintain
compatibility with legacy PTX code, if .version is 1.4 or earlier, single-precision subnormal inputs
and results are flushed to sign-preserving zero only when neither source nor destination type size
is 64-bits.
Components of special registers %tid, %ntid, %ctaid, and %nctaid have been extended
from 16-bits to 32-bits. These registers now have type .v4.u32.
The number of samplers available in independent texturing mode was incorrectly listed as thirty-two in PTX ISA version 1.5; the correct number is sixteen.