西红柿小生|昨日Github开源Nvidia的C++标准库Libcu++


更多互联网新鲜资讯、工作奇淫技巧关注原创【飞鱼在浪屿】(日更新)

西红柿小生|昨日Github开源Nvidia的C++标准库Libcu++
本文插图

libcu ++(NVIDIA C ++标准库)是一个C ++标准库 。它提供了C ++标准库的异构实现 , 可在CPU和GPU代码之间以及之间使用 。
用libcu++和使用C ++标准库的方法一样 。 添加cuda/std/到标准库header之前 , 在使用任何std::加cude::
#include cuda::std::atomic x;NVIDIA C ++标准库是一个开源项目 。 它在github上: ,并在NVIDIA HPC SDK和CUDA Toolkit中 。
与NVCC一起使用时 , NVIDIA C ++标准库工具位于其自己的标头层次结构和名称空间中 , 其结构与主机编译器的标准库相同 , 但有所不同:

  • std::/ :编译器的标准库__host__仅在代码中起作用。 使用NVCC(NVDIA CC库)时 , libcu++不会替换或干扰编译器的标准库 。
  • cuda::std::/ :严格符合标准库中以__host__ __device__ 代码形式工作的设施的实现 。
  • cuda::/ :在__host__ __device__代码中有效的标准库扩展 。
  • cuda::device/ :仅在__device__代码中有效的标准库扩展 。
//默认 标准C++,适用于 __host__ 模式#include std::atomic x;// CUDA C++, 适用于__host__和__device__模式.#include cuda::std::atomic x;// CUDA C++, __host__ __device__.// Conforming extensions to the C++ Standard.#include cuda::atomic x;NVIDIA C ++标准库可在整个代码库中使用 , 也可在__host__和__device__模式使用 。
少数libcu ++命名空间代码只能在__device__模式工作 , 因为__host__代码中没有可用的实现 。
这些都在命名空间cuda::device:: 。
如今 , NVIDIA C++标准库扩展了现代C ++标准库 , 并且每个版本都增加了功能集 。 但这是一个子集(不对旧的做兼容) 。 并不是最新版本所有的历史的代码都可用 。 该API文档列出了历史版本变更 。

NVIDIA C ++标准库是在GitHub上开发的一个开源项目 。 它是NVIDIA基于LLVM libc ++的变更版本 。 libcu++是根据Apache许可v2.0发行的 。
NVIDIA C ++标准库是C ++标准ISO / IEC IS 14882第16至32条的一致实现 。
++draft
NVIDIA C ++标准库没有保持长期的ABI稳定性 。 没有长期ABI稳定性将给NVIDIA纠正错误时机并提供最佳的性能 。 但是对于使用者来说 , 这并不友好 。
每个主要的CUDA Toolkit版本中 , ABI都会变化 。 ABI版本的生命周期约为一年 。 大约两年后 , 将不再提供对ABI版本的长期支持 。 请参阅版本控制部分以获取更多详细信息 。
git clone//下载cd libcudacxxmkdir build && cd buildcmake3 ..makemake install//如果cmake出现错误#error "The CMAKE_C_COMPILER is set to a C++ compiler" , //因为这里把g++用作了c编译 , 重置下c编译器//需要在CMakeList.txt前几行(第7、8行左右)追加set(CMAKE_C_COMPILER "/usr/bin/gcc")set(CMAKE_CXX_COMPILER "/usr/bin/g++")//如果出现报错:include could not find load file:AddLLVM centosyum install llvm-devel 【西红柿小生|昨日Github开源Nvidia的C++标准库Libcu++】


    推荐阅读