Intel 64及IA-32架构软件开发者手册:指令集参考N-Z

需积分: 10 5 下载量 189 浏览量 更新于2024-12-28 收藏 5.72MB PDF 举报
"Intel®64和IA-32架构软件开发者手册Volume 2B是针对这两种广泛使用的计算机架构的详尽指南。此手册专门针对指令集参考部分,涵盖了从N到Z的指令集指令和特性。它是整个五卷系列的一部分,包括基本架构(Order Number 253665)、指令集参考A-M(Order Number 253666)、当前文档所指的N-Z指令集参考(Order Number 253667),以及系统编程指南的两个部分(Order Number 253668和253669)。开发者在进行设计评估时,应参考这五卷资料。 这份手册的重要性在于它提供了对Intel 64和IA-32处理器技术的深入理解,对于编写高效、兼容的软件至关重要。它不仅阐述了硬件的底层细节,包括各种指令的语法、操作数规定、控制转移和内存访问,还可能包含性能优化建议和最佳实践。读者可以从中学习如何利用这些架构的扩展特性,如宽字节计算、SIMD(单指令多数据)操作和向量化处理,来提升程序的执行效率。 值得注意的是,虽然手册本身并不构成知识产权许可,但在购买和使用Intel产品时,必须遵循Intel的销售条款和条件,它明确了Intel对产品销售和使用的责任范围,包括但不限于产品适配特定用途、产品修改(MERCHANTABILITY)或侵犯专利、版权等法律问题的免责声明。因此,手册使用者在依赖其内容时,必须确保遵守所有适用的法律法规。 Intel®64 and IA-32 Architectures Software Developer's Manual Volume 2B是软件开发人员不可或缺的工具,无论是在设计新应用、优化现有代码还是处理架构相关的疑难问题时,都能提供深入的技术支持和指导。"

解释:if(CUDA_FOUND) message(STATUS "Found CUDA Toolkit v${CUDA_VERSION_STRING}") enable_language(CUDA) set(HAVE_CUDA TRUE) if (CMAKE_CUDA_COMPILER_ID STREQUAL "NVIDIA") if(${CUDA_VERSION_STRING} VERSION_GREATER_EQUAL "11.1") execute_process(COMMAND ${CMAKE_CUDA_COMPILER} --list-gpu-code RESULT_VARIABLE EXIT_CODE OUTPUT_VARIABLE OUTPUT_VAL) if(EXIT_CODE EQUAL 0) #Remove sm_ string(REPLACE "sm_" "" OUTPUT_VAL ${OUTPUT_VAL}) #Convert to list string(REPLACE "\n" ";" __CUDA_ARCH_BIN ${OUTPUT_VAL}) #Remove last empty entry list(REMOVE_AT __CUDA_ARCH_BIN -1) else() message(FATAL_ERROR "Failed to run NVCC to get list of GPU codes: ${EXIT_CODE}") endif() elseif(${CUDA_VERSION_STRING} VERSION_GREATER_EQUAL "11.0") set(__CUDA_ARCH_BIN "35;37;50;52;53;60;61;62;70;72;75;80") elseif(${CUDA_VERSION_STRING} VERSION_GREATER_EQUAL "10.0") set(__CUDA_ARCH_BIN "30;32;35;37;50;52;53;60;61;62;70;72;75") elseif(${CUDA_VERSION_STRING} VERSION_GREATER_EQUAL "9.1") set(__CUDA_ARCH_BIN "30;32;35;37;50;52;53;60;61;62;70;72") else() set(__CUDA_ARCH_BIN "30;32;35;37;50;52;53;60;61;62;70") endif() else() message(FATAL_ERROR "Unsupported CUDA compiler ${CMAKE_CUDA_COMPILER_ID}.") endif() set(CUDA_ARCH_BIN ${__CUDA_ARCH_BIN} CACHE STRING "Specify 'real' GPU architectures to build binaries for") if(POLICY CMP0104) cmake_policy(SET CMP0104 NEW) set(CMAKE_CUDA_ARCHITECTURES ${CUDA_ARCH_BIN}) message(STATUS "CMAKE_CUDA_ARCHITECTURES: ${CMAKE_CUDA_ARCHITECTURES}") #Add empty project as its not required with newer CMake add_library(pcl_cuda INTERFACE) else() # Generate SASS set(CMAKE_CUDA_ARCHITECTURES ${CUDA_ARCH_BIN}) # Generate PTX for last architecture list(GET CUDA_ARCH_BIN -1 ver) set(CMAKE_CUDA_FLAGS "${CMAKE_CUDA_FLAGS} -gencode arch=compute_${ver},code=compute_${ver}") message(STATUS "CMAKE_CUDA_FLAGS: ${CMAKE_CUDA_FLAGS}") add_library(pcl_cuda INTERFACE) target_include_directories(pcl_cuda INTERFACE ${CUDA_TOOLKIT_INCLUDE}) endif () endif()

2023-05-30 上传