0
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心
发布
  • 发文章

  • 发资料

  • 发帖

  • 提问

  • 发视频

创作活动

完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>

3天内不再提示

用CUDA 11 . 2 C ++编译器加速应用程序性能

星星科技指导员 来源:NVIDIA 作者:NVIDIA 2022-04-06 10:13 次阅读

11 . 2 CUDA C ++编译器结合了旨在提高开发者生产力和 GPU 加速应用性能的特性和增强。

编译器工具链将 LLVM 升级到 7 . 0 ,这将启用新功能并有助于改进 NVIDIA GPU 的编译器代码生成。设备代码的链接时间优化( LTO )(也称为设备 LTO )在 CUDA 11 . 0 工具包版本中作为预览功能引入,现在作为全功能优化功能提供。 11 . 2 CUDA C ++编译器可以可选地生成一个函数,用于为设备的功能内联诊断报告,它可以提供编译器的内联决策的洞察力。这些诊断报告可以帮助高级 CUDA 开发人员进行应用程序性能分析和调优工作。

CUDA C ++编译器默认地将设备函数内嵌到调用站点。这使得优化设备代码的汇编级调试成为一项困难的任务。对于使用 11 . 2 CUDA C ++编译器工具链编译的源代码,[EZX223]和 NVIEW 计算调试器可以在调用堆栈回溯中显示内联设备功能的名称,从而改进调试体验。

这些和其他新特性被纳入 CUDA C ++ 11 . 2 编译器,我们将在这个帖子中进行深入的跳水。继续读!

使用设备 LTO 加速应用程序性能

CUDA 11 . 2 的特点是 设备 LTO ,它为以单独编译模式编译的设备代码带来了 LTO 的性能优势。在 CUDA 5 . 0 中, NVIDIA 引入了独立编译模式,以提高开发人员设计和构建 GPU 加速应用程序的效率。没有单独的编译模式,编译器只支持整个程序编译模式, CUDA 应用程序中的所有设备代码必须限制在单个翻译单元中。单独的编译模式使您可以自由地跨多个文件构造设备代码,包括 GPU 加速的库和利用增量构建。单独的编译模式允许您关注源代码模块化。

但是,单独的编译模式限制在编译时可以执行的性能优化范围内。诸如跨单个翻译单元边界的设备函数内联之类的优化不能在单独的编译模式下执行。与整个程序编译模式相比,这会导致在单独编译模式下生成次优代码,尤其是在针对设备代码库进行链接时。使用设备 LTO ,在单独编译模式下编译的应用程序的性能与整个编译模式相当。

LTO 是 CPU 编译器工具链中一个强大的优化功能,我们现在正在使 GPU 加速代码可以访问它。对于单独编译的设备代码, Device LTO 支持仅在 NVCC 整个程序编译模式下才可能进行的设备代码优化。使用设备 LTO ,您可以利用源代码模块化的好处,而不必牺牲整个程序编译的运行时性能好处。

优化设备代码的增强调试

我们做了一些增强,以便在某些情况下更容易调试优化的设备代码。

精确调试

使用 CUDA 11 . 2 ,大多数内联函数都可以在cuda-gdb和 Nsight 调试器的调用堆栈回溯中看到。您拥有性能优化代码路径的一致回溯,更重要的是,您可以更精确地确定错误或异常的调用路径,即使所有函数都是内联的。

图 1 显示了一个场景示例,在调试异常时,此功能可以节省大量时间。

Alt-Text: The code example shows that a device function, ExpWrapper, invokes another device function, ForceBoundsException, that forces an array out-of-bound exception at line no 71 in the same file.

图 1 。在第 71 行强制数组越界异常的示例代码

在图 1 中,函数ExpWrapper调用ForceBoundsException,该函数注入一个数组越界异常。因为函数ForceBoundsException与函数ExpWrapper定义在同一个文件中,所以它只是简单地内联在那里。如果没有对 CUDA 11 . 2 中添加的内联函数的回溯支持,调用堆栈将只显示未内联在此调用路径中的顶级调用方。在本例中,它恰好是函数ExpWrapper的调用者,因此异常点处的调用堆栈如图 2 所示,排除了所有其他内联函数调用。

A snapshot of the call stack at the point of array out-of-bounds exception from the same program discussed around Figure 1 but compiled using toolkit prior to CUDA 11.2. The call stack shows a single function that reads blacksholes.cu!GPUBlackScholesCallPut, which is not the function that caused the exception. This is because all the other functions are inlined and there isn't sufficient debug information to generate all the call stack.

图 2 。 CUDA 11 . 2 之前没有内联函数的调用堆栈报告行号,没有完全回溯。

从图 2 中的调用堆栈可以明显看出,调用堆栈中的信息非常少,无法有意义地调试最终导致异常点的执行路径。如果不知道函数是如何内联的,调用堆栈中提供的行号 71 也没有用处。在一个三层的深层函数调用中,这个问题看起来很容易找到。随着堆栈越来越深,这个问题可能会迅速升级。我们知道,这可能是相当令人沮丧的。

A call stack generated on CUDA11.3 for the same program discussed earlier. The call stack has the three functions, indicating that GPUBlackScholesCallPut invokes ExpWrapper, which in turn invokes the ForceBoundsException function where the exception occurred at Line 71.

图 3 。在 CUDA 11 . 2 中,一种带有内联函数的调用堆栈。

在 CUDA 11 . 2 中, NVIDIA 通过为内联函数添加有意义的调试信息,朝着优化代码的符号调试迈出了一步。现在生成的调用堆栈既精确又有用,包括在每个级别调用的所有函数,包括那些内联的函数。这使您不仅可以确定发生异常的确切函数,还可以消除触发异常的确切调用路径的歧义。

它变得更好了!

更多的调试信息,即使是最优化的代码

对内联函数调试的改进不仅是在调用堆栈回溯上查看内联函数,而且还扩展到源代码查看。在 CUDA 11 . 2 之前,当函数调用被积极内联时,反汇编代码的源代码视图是神秘而紧凑的(图 4 )。

Source enabled disassembled code view of the previous code example before CUDA 11.2.

图 4 。 CUDA 11 . 2 之前的源代码反汇编视图

Source-enabled disassembled code view of the previous code example on CUDA 11.2.

图 5 。 CUDA 11 . 2 上启用源代码的反汇编代码视图。

有更多的调试信息,包括行信息和源代码行被标记到反汇编代码段。

图 5 显示了 CUDA 11 . 2 上相同反汇编代码段的源代码视图。您可以为优化的代码段获得更详细的源代码视图,并且可以单步执行它们。行信息和源代码行被标记到反汇编源代码视图中,即使对于内联代码段也是如此。

要启用此功能,将--generate-line-info(或-lineinfo)选项传递给编译器就足够了。对优化的设备代码进行全面的符号调试还不可用。在某些情况下,您可能仍然需要使用-G选项进行调试。然而,仅仅拥有一个精确的调用堆栈和一个详细的源代码查看就可以决定性地提高调试性能优化代码的效率,从而提高开发人员的工作效率。

但还不止这些!

对诊断报告内联的见解

传统上,当编译器做出应用程序开发人员看不到的基于启发式的优化决策时,编译器有点像黑匣子。

其中一个关键的优化就是函数内联。如果没有对汇编输出进行繁重的后处理,就很难理解内联的编译器启发式方法。只要知道哪些函数是内联的,哪些不是内联的,就可以节省很多时间,这就是我们在 CUDA 11 . 2 中介绍的。现在您不仅知道函数何时没有内联,而且还知道为什么函数不能内联。然后可以重构代码,向函数 de Clara 选项添加内联关键字,或者执行其他源代码重构(如果可能的话)。

您可以通过一个新选项--optimization-info=inline获得关于优化器内联决策的诊断报告。启用内联诊断时,当函数无法内联时,优化器会报告其他诊断。

test.cu is a sample CUDAprogram where the global function caller invokes three device function:s callee1, callee2, callee3, where the callee1 and callee2 device functions are qualified with __noinline__, __forceinline__ respectively.

图 6 。样品测试. cu 用于以下内联诊断生成的文件。

remark: test.cu:16:12: _Z7callee2i inlined into _Z6callerPii with cost=always
remark: test.cu:17:11: _Z7callee3i inlined into _Z6callerPii with cost=always
remark: test.cu:18:12: _Z7callee1i not inlined into _Z6callerPii because it should never be inlined (cost=never)

在某些情况下,您可能会得到更详细的诊断:

remark: x.cu:312:28: callee not inlined into caller because callee doesn't have forceinline attribute and is too big for auto inlining (CalleeSize=666)

有关内联的诊断报告对于重构代码以适当地使用内联函数的性能优势非常有用。内联诊断在编译器运行内联过程时发出。当从编译器多次调用内联程序时,前一个过程中未内联的调用站点可能会内联到后一个过程中通过。那个 CUDA C ++编译器文档解释了如何在 NVCC 调用期间使用此选项。

通过并行编译减少构建时间

可以使用 -gencode/-arch/-code 命令行选项同时调用 CUDA C ++编译器,以编译多个 GPU 架构的 CUDA 设备代码。虽然这是一个方便的特性,但它可能会导致由于几个中间步骤而增加构建时间。

特别地,编译器需要对 CUDA C ++源代码进行多次处理,并使用不同的 __CUDA__ARCH__ 内置宏的值来指定每个不同的计算架构,包括额外的预处理步骤,其中内置的宏未被定义,以编译主机平台的源代码。之后,预处理的 CUDA C ++设备代码实例必须编译成指定的每个目标 GPU 架构的机器代码。这些步骤目前是连续进行的。

为了减轻由多个编译过程产生的编译时间的增加,从 CUDA 11 。 2 版本开始, CUDA C ++编译器支持一个新的 —threads 《number》 命令行选项(简称-t)来生成单独的线程以并行执行独立编译传递。如果在单个 nvcc 命令中编译多个文件, -t 将并行编译这些文件。 参数确定 NVCC 编译器为并行执行独立编译步骤而生成的独立辅助线程数。

对于特殊情况 -t0 ,使用的线程数是机器上的 CPU 数。当调用 NVCC 为多个 GPU 架构同时编译 CUDA 设备代码时,此选项有助于减少总体构建时间。默认情况下,这些步骤是连续执行的。

Example

以下命令为两个虚拟体系结构生成。 ptx 文件: compute_52 和 compute_70 。对于 compute_52 ,为两个 GPU 目标生成。 cubin 文件: sm_52 和 sm_60 ;对于 compute_70 ,为 sm_70. 生成。 cubin 文件

nvcc -gencode arch=compute_52,code=sm_52 -gencode arch=compute_52,code=sm_60 -gencode arch=compute_70,code=sm_70 t.cu

并行编译有助于在编译大量应用 CUDA C ++设备代码到多个 GPU 目标的应用程序时减少总体构建时间。如果源代码主要是 C / C ++主机代码,只有少量 CUDA 设备代码,或者如果仅以单个虚拟架构/ GPU-SM 组合为目标,则可能不会减少整个构建时间。换句话说,构建时的加速可能会因程序、编译目标特性以及 NVCC 可以生成的并行编译线程的数量而异。

NVCC 启动 helper 线程来动态地并行执行编译步骤(如 CUDA 编译轨迹图 中所描述的),受编译步骤之间的序列化依赖关系的约束,其中编译步骤仅在其依赖的所有先前步骤完成之后才在单独的线程上启动。

图 7 显示了当 NVCC 生成的独立编译线程的限制增加时( -t N 选项),由于并行编译而导致的 CUDA 编译加速是如何变化的。这适用于需要不同级别的独立编译步骤的编译轨迹,这些步骤可以并行执行。

图 7 。为多个 GPU 架构编译 NVIDIA 性能原语( NPP )的并行编译加速。

CPU 型号: i7-7800X CPU @ 3 。 50GHz # CPU : 12 ,每核线程数: 2 ,每插槽核数: 6 ,内存: 31G 。 (所有的编译都使用 make-j8 )

NVCC 并行线程编译特性可以与进程级构建并行性(即, make -j N )一起使用。但是,必须考虑主机平台的特性,以避免过度订阅生成系统资源(例如, CPU 核心数、可用内存、其他工作负载),这可能会对总体生成时间产生负面影响。

新的编译器内置提示,可以更好地优化设备代码

CUDA 11 。 2 支持新的内置程序,使您能够向编译器指示编程提示,以便更好地生成和优化设备代码。

使用 __builtin_assume_aligned , 可以向编译器提示指针对齐,编译器可以使用指针对齐进行优化。类似地, __builtin_assume 和 __assume 内置可以用来指示运行时条件,以帮助编译器生成更好的优化代码。下一节将深入研究每个特定的内置提示函数。

void * __builtin_assume_aligned(const void *ptr, size_t align)
void *__builtin_assume_aligned(const void *ptr, size_t align, offset)

__builtin_assume_aligned内置函数可用于向编译器提示作为指针传递的参数至少与align字节对齐。当参数(char *)ptr - offset至少与align字节对齐时,可以使用带有offset的版本。两个函数都返回参数指针。

编译器可以使用这种对齐提示来执行某些代码优化,如加载/存储矢量化,以更好地工作。考虑一下这里显示的函数中的示例代码,该函数使用内置函数来指示参数ptr可以假定至少与 16 个字节对齐。

__device int __get(int*ptr)
{
int *v = static_cast 
(__builtin_assume_aligned(ptr, 16));
return *v + *(v+1) + *(v+2) + *(v+3);
}

前面的代码示例在使用nvcc -rdc=true -ptx foo.cu编译时没有内置函数,生成了以下 PTX ,其中对返回表达式执行了四个单独的加载操作。

ld.u32 %r1, [%rd1];
ld.u32 %r2, [%rd1 + 4];
ld.u32 %r4, [%rd1 + 8];
ld.u32 %r6, [%rd1 +12];

当使用内置函数向编译器提示指针是 16 字节对齐的时,生成的 PTX 反映了这样一个事实:编译器可以将加载操作组合成一个向量化的加载操作。

ld.v4.u32 {%r1, %r2, %r3, %r4 }, [%rd1];

由于四个加载是并行执行的,因此单个矢量化加载操作所需的执行时间更少。这避免了向内存子系统发出多个请求的开销,同时还保持了较小的二进制大小。

void * __builtin_assume(bool exp)

__builtin__assume内置函数允许编译器假定提供的布尔参数为 true 。如果参数在运行时不为 true ,则行为未定义。参数表达式不能有副作用。尽管 CUDA 11 . 2 文档指出副作用已被丢弃,但此行为在将来的版本中可能会发生更改,因此可移植代码在提供的表达式中不应产生副作用。

例如,对于下面的代码段, CUDA 11 . 2toolkit 编译器可以用更少的指令优化 modulo-16 操作,因为知道num变量的值是肯定的。

__device__ int mod16(int num) 
{
      __builtin_assume(num > 0); 
      return num % 16; 
}

如下一个生成的 PTX 代码示例所示,当使用nvcc -rdc=true -ptx编译示例代码时,编译器为模运算生成一条 AND 指令。

ld.param.u32   %r1, [_Z5Mod16i_param_0]; 
     and.b32   %r2, %r1, 15;
st.param.b32   [func_retval0+0], %r2;

如果没有提示,编译器必须考虑num值为负值的可能性,如生成的 PTX 代码(包括附加指令)所示。

ld.param.u32   %r1, [_Z5Mod16i_param_0];
     shr.s32   %r2, %r1, 31;
     shr.u32   %r3, %r2, 28;
     add.s32   %r4, %r1, %r3;
     and.b32   %r2, %r1, 15;
     sub.s32   %r6, %r1, %r5
st.param.b32   [func_retval0+0], %r2;

使用时, NVCC 还支持类似的内置函数__assume(bool)cl . exe 文件作为主机编译器。

void * __builtin_unreachable(void)

在 CUDA 11 . 3 中,我们将介绍__builtin_unreachable内置函数。这个内置函数在 CUDA 11 . 3 中引入时,可用于向编译器指示控制流永远不会到达调用此函数的点。如果控制流在运行时到达该点,则程序具有未定义的行为。此提示可以帮助代码优化器生成更好的代码:

__device__ int get(int input)
{
   switch (input)
   {
          case 1: return 4;
          case 2: return 10;
          default: __builtin_unreachable();
   }
}

用 CUDA 11 . 3 中的nvcc -rdc=true -ptx编译早期代码片段生成的 PTX 将把整个 switch 语句优化为一条 SELECT 指令。

  ld.param.u32   %r1, [_Z3geti_param_0];
   setp.eq.s32   %p1, %r1, 1;
      selp.b32   %r2, 4, 10, %p1;
  st.param.b32   [func_retval0+0], %r2;

如果没有__builtin_unreachable调用,编译器将生成一个警告,指出控制流已到达非 void 函数的结尾。通常,必须注入一个伪返回 0 以避免出现警告消息。

__device__ int get(int input)
{
switch (input)
{
      case 1: return 4;
     case 2: return 10;
      default: return 0;
}
}

添加 return 以避免编译器警告会导致更多的 PTX 指令,这也有抑制进一步优化的潜在副作用。

  ld.param.u32   %r1, [_Z3geti_param_0];
setp.eq.s32%p1, %r1, 2;
selp.b32%r2, 10, 0, %p1;
setp.eq.s32%p2, %r1, 1;
selp.b32%r3, 4, %r2, %p2;
  st.param.b32[func_retval0+0], %r2;

__builtin_assume__builtin_assume_aligned函数在内部映射到llvm.assumeLLVM 内在函数。

“ 请注意,优化器 MIG ht 限制对 llvm.assume 保留仅用于形成内在函数输入参数的指令。如果用户提供的额外信息 llvm.assume 内在的并不能导致代码质量的全面提高。因此, llvm.assume 不应用于记录优化器可以以其他方式推断的基本数学不变量或对优化器没有多大用处的事实。”

某些主机编译器可能不支持早期的内置函数。在这种情况下,必须注意在代码中调用内置函数的位置。

下表给出了主机编译器为 gcc 时使用 __builtin_assume 的示例。由于 gcc 不支持此内置函数,因此在未定义 __CUDA_ARCH__ 宏的主机编译阶段,对 __builtin_assume 的调用不应出现在 __device__ 函数之外。

表 1 。当主机编译器不支持内置项时,使用内置项的示例。

有关如何使用这些内置函数的详细信息,请参阅 编译器优化提示函数 。

警告可以被抑制或标记为错误

NVCC 现在支持可以用来管理编译器诊断的命令行选项。您可以选择让编译器随诊断消息一起发出错误号,并指定编译器应将与错误号关联的诊断视为错误还是完全抑制。这些选项不适用于主机编译器或预处理器发出的诊断。在将来的版本中,编译器还将支持 pragmas ,以将特定的警告提升到错误或抑制它们。

Usage

--display-error-number (-err-no)

显示 CUDA 前端编译器生成的任何消息的诊断号。

--diag-error 《error-number》,。.. (-diag-error)

为 CUDA 前端编译器生成的指定诊断消息发出错误。

--diag-suppress 《error-number》,。.. (-diag-suppress)

抑制 CUDA 前端编译器生成的指定诊断消息。

Example

设备函数 hdBar 调用主机函数 hostFoo 并且变量 i 在 hostFoo 中未使用的示例代码:

void hostFoo(void)
{
int i = 0;
}
__host__ __device__ void hdBar(bool cond)
{
if (cond)
hostFoo();
}

以下代码示例显示带有默认警告的诊断号:

$nvcc -err-no -ptx warn.cu
warn.cu(1): warning #177-D: variable "i" was declared but never referenced
warn.cu(2): warning #20011-D: calling a __host__ function("hostFoo()") from a __host__ __device__ function("hdBar") is not allowed

以下代码示例将警告# 20011 升级为错误:

$nvcc -err-no -ptx -diag-error 20011 warn.cu
warn.cu(1): warning #177-D: variable "i" was declared but never referenced
warn.cu(2): error: calling a __host__ function("hostFoo()") from a __host__ __device__ function("hdBar") is not allowed

以下代码示例禁止显示警告# 20011 :

$nvcc -err-no -ptx -diag-suppress 20011 warn.cu
warn.cu(1): warning #177-D: variable "i" was declared but never referenced

NVVM 升级到 LLVM 7 。 0

CUDA 11 。 2 编译器工具链接收 LLVM7 。 0 升级。

升级到 LLVM 7 。 0 将打开通向此 LLVM 版本中存在的新功能的大门。它通过利用 LLVM 7 中可用的新优化,为进一步实现性能调整工作提供了更坚实的基础。

图 8 显示了使用包含基于 LLVM7 。 0 的高级 NVVM 优化器的 11 。 2 编译器工具链编译的 HPC 应用程序子集对基于 Volta 和 Ampere 的 GPU 的运行时性能影响,而 11 。 1 编译器工具链包含基于 LLVM3 。 4 的高级 NVVM 优化器。

图 8 。 HPC 应用程序套件的 Geomean 性能增益/损失

相对于 LLVM3 。 4 ,基于 A100 和 V100 的 NVVM 。

libnvm 升级到 LLVM 7 。 0

使用 CUDA 11 。 2 版本, CUDA C ++编译器, LIbvvm 和 NVRTC 共享库都已升级到 LLVM 7 代码库。 libNVVM 库为 LLVM 提供了 GPU 扩展,以支持更广泛的社区,包括编译器、 DSL 转换器和针对 NVIDIA GPU 上计算工作负载的并行应用程序。 NVRTC 共享库有助于在运行时编译动态生成的 CUDA C ++源代码。

由于 libNVVM 库包含 llvm7 。 0 支持, libnvvmapi 和 nvvmir 规范已修改为与 llvm7 。 0 兼容。要更新输入 IR 格式,请参阅已发布的 NVVM IR 规范。此 libNVVM 升级与以前版本中支持的调试元数据 IR 不兼容。依赖于调试元数据生成的第三方编译器应该适应新的规范。在这次升级中, libnvm 也不推荐使用文本 IR 接口。我们建议您使用 LLVM 7 。 0 位码格式 。有关对基于 libnvm 的编译器软件所做更改的更多信息,请参阅 libNVVM 规范 和 NVVM IR 规范 。

此升级还带来了对源代码级调试支持的增强。编译器前端可能需要一个矮型表达式来指示在运行时保存变量值的位置。如果没有对 DWARF 表达式的适当支持,则无法在调试器中检查此类变量。 libNVVM 升级的一个重要方面是,使用 DWARF 表达式之类的操作可以更广泛地表达这些变量位置。 NVVM IR 现在使用 本质与操作 支持此类表达式。这样一个变量的最终位置用这些表达式用 DWARF 表示

试试 CUDA 11 。 2 编译器的功能

CUDA 11 。 2 工具包包含了一些专注于提高 GPU 性能和提升开发人员体验的功能。[VZX107 型]

编译器工具链升级到 LLVM 7 、设备 LTO 支持和新编译器内置的能力,这些能力可以利用来增强 CUDA C ++应用程序的性能。

对内联设备函数的虚拟堆栈回溯支持、关于函数内联决策的编译器报告、并行 CUDA 编译支持以及控制编译器警告诊断的能力是 CUDA 11 。 2 工具包中的新功能,旨在提高您的生产效率。

关于作者

Arthy Sundaram 是 CUDA 平台的技术产品经理。她拥有哥伦比亚大学计算机科学硕士学位。她感兴趣的领域是操作系统、编译器和计算机体系结构。

Jaydeep Marathe 是 NVIDIA 的高级编译工程师。他拥有北卡罗来纳州立大学计算机科学硕士和博士学位。

Hari Sandanagobalane 是 NVIDIA 的高级编译工程师。他拥有新加坡国立大学计算机科学硕士学位。

Gautam Chakrabarti 是 NVIDIA 的高级编译工程师。他的兴趣包括编译器技术,使高效的程序执行和改善开发人员的经验。他拥有密歇根州立大学计算机科学硕士学位。

Mukesh Kapoor 是 NVIDIA 的高级编译工程师。他拥有印度班加罗尔工业学院自动化硕士学位。Steve Wells 是 NVIDIA 的高级调试器工程师。他拥有滑铁卢大学的数学学士学位。Mike Murphy 是 NVIDIA 的高级编译工程师。

审核编辑:郭婷

  • NVIDIA
    +关注

    关注

    14

    文章

    3059

    浏览量

    99822
  • 编译器
    +关注

    关注

    1

    文章

    1243

    浏览量

    48044
收藏 人收藏

    评论

    相关推荐

    MPLAB C18 C编译器用户指南

    才会与ANSI标准有所偏离。此编译器是一个32位Windows平台应用程序,与Microchip的MPLABIDE完全兼容,它允许使用MPLAB ICE在线仿真、MPLAB ICD 2在线调试
    发表于 03-09 15:23

    keil C编译器详解

    本手册讲述对8051的目标环境 如何使用Cx51优化C编译器编译C程序Cx51编译器包可以用在所有的8051系列处理上可以在WINDOWS 32位命令行中执行本手册假定你熟悉WINDOWS操作系统
    发表于 08-26 22:43

    【Rico Board试用体验】一个简单嵌入式应用程序编译与测试过程

    。 实现的功能:应用程序向终端打印定制消息。1 程序的编写实现功能:简单的向终端打印两句话。包含必须的头文件。2 通过samba服务程序拷贝到Linux主机将上面程序保存为 mian.c
    发表于 12-07 20:04

    交叉编译器解析

    上去运行,也就是我们所说的环境不一样,而这也就是为什么称之为交叉编译器的原因,英文解释,这就是所谓的cross。二:体系结构与操作系统1,常见的体系结构有ARM结构、x86结构等.2,常见的操作系统有
    发表于 12-16 09:47

    C语言——编译器的问题

    基本解释本节主要探讨C编译器下面两方面的特点所引发的一系列常见的编程问题。对C文件进行分别编译C程序通常由几个小程序(.c文件)组成,编译器将这几个小程序分别编译,然后通过链接程序将它们组
    发表于 04-20 15:14

    ARM C/C++编译器

    硬件的函数属性:通过ARM C编译器提供的函数属性可以访问相关的ARM硬件特点。例如:  __irq允许在C语言中编写中断服务程序。  __swi(id)允许调用软件中断处理函数r。  嵌入的汇编
    发表于 03-07 14:30

    Arm编译器怎么样

    级顶先的C/C++编译工具。  基于操作系统的多核调试  调试支持所有的开发流程,包括启动代码、内核及用户应用程序。  基于性能记数的Streamline的性能分析。  性能瓶颈(如缓存未命中
    发表于 03-19 15:48

    使用MATLAB编译器部署音频应用程序

    ');通过MathWorks 探索:音频系统工具箱查看:文档相关例子使用MATLAB编译器生成DSP应用程序此示例显示如何使用MATLAB Compiler™从使用DSP System Toolbox™中
    发表于 07-28 13:34

    哪一个编译器编译PIC16F877 A的程序

    你好,我以前在PIC18F4550单片机上工作过,MPLAB C18 C编译器编译代码。现在我在PIC16F877A上工作,而且我面临着为它找一个兼容的c编译器的问题。请帮助我。在MPLAB IDV891上,我应该用哪一个编译器编译
    发表于 09-17 12:24

    TensorFlow XLA加速线性代数编译器

    加速线性代数(Accelerated linear algebra,XLA)是线性代数领域的专用编译器。根据 https://www.tensorflow.org/performance/xla
    发表于 07-28 14:31

    c编译器的用处

    本文中,将基于gcc c编译器,为大家讲解程序插装技术,以帮助大家更好理解c编译器的用处,并推动大家对于c编译器的学习进程。
    发表于 03-04 06:14

    C51编译器软件 V6.02

    C51编译器软件 KEIL V6.02
    发表于 12-27 15:51 71次下载

    C196编译器软件

    C196编译器软件:支持软件:E2000/E6000/V8
    发表于 12-27 16:04 39次下载

    Keil C51编译器用户手册 中文版

    Keil C51编译器用户手册 中文版:本手册讲述对8051 的目标环境,如何使用Cx51 优化C 编译器编译C 程序Cx51 编译器包,可以用在所有的8051 系列处理上,可以在WINDOWS 32 位命令行中执行
    发表于 08-06 08:51 294次下载

    MPLAB® C30C 编译器用户指南

    MPLAB® C30C 编译器用户指南:本文档的目的是帮助大家使用Microchip 的MPLAB C30 C 编译器开发自己的dsPIC应用程序。MPLAB C30 是一款基于GNU 编译器集(GNU Compiler Collectio
    发表于 08-26 19:12 68次下载

    单片机C语言应用程序设计

    单片机C语言应用程序设计针对目前最通用的单片机8051和最流行的程序设计语言——C语言,以KEII。公司8051单片机开发套件讲解单片机的C语言应用程序设计。该套件的编译器有支
    发表于 10-09 17:53 161次下载
    单片机<b>C</b>语言<b>应用程序</b>设计

    PIC单片机的C编译器(软件)

    PIC单片机的C编译器(软件)
    发表于 10-12 11:00 128次下载

    Code Vision AVR (C编译器)

    C编译器,有软件模块,Demo版为限2KB版。如果想消除2K的限制,必须输入注册码。注册可以到 google 搜索获得。提醒一下:网上的注册码仅为测试使用,请不要作商业
    发表于 01-16 11:21 189次下载

    C编译器的设计文档与源代码

    C-编译器的设计文档与源代码:本压缩包包含了C-编译器的设计文档与源代码,供学习参考。  整体框架. 3 词法分析. 3 Class CTokenizer 3 Cla
    发表于 02-09 11:13 45次下载

    Cx51编译器使用手册

    Cx51编译器使用手册 对传统和扩展的8051 微处理的优化的C 编译器和库参考 本手册讲述对8051 的目标环境如何使用Cx51 优化C 编译器编译C 程序Cx51 编
    发表于 03-12 10:24 32次下载

    EMC单片机C编译器

    EMC单片机C编译器   简单讲,编译器就是将“高级语言”翻译为“机器语言(低级语言)”的程序。  高级计算机语言便于人编写,阅读,维护。低阶机
    发表于 03-29 14:23 68次下载

    C51智能反编译器

    C51智能反编译器
    发表于 04-07 17:36 63次下载

    IccAVR C 编译器的使用

    IccAVR C 编译器的使用自 ATMEL 的AT90 系列单片机诞生以来有很多第三方厂商为AT90 系列开发了用于程序开发的C 语言工具ATMEL 公司推荐的第三方C 编译器:Expanded 3rd Party Support
    发表于 04-09 14:48 171次下载

    ICC AVR编译器的安装与使用

    ICCAVR编译器的安装、运行、破解、使用 ICCAVR编译器产生初始化程序程序框架
    发表于 07-09 18:06 258次下载

    C++编译器数值性能比较

    现在市面上,主流的C/C++编译器包括M$的CL、gcc、Intel的icl、PGI的pgcc及Codegear的bcc(原来属于Borland公司)。Windows上使用最多的自然是cl,而在更广阔的平台上,gcc则是C/C++
    发表于 09-10 11:54 8次下载

    MCS-51程序空间扩展原理及编译器优化

    讨论了MCS-51系列单片机程序空间扩展的原理,包括硬件与编译器两个方面,并提出一种编译器优化方案.该方案在Keil仿真上检验并通过关健词:C51编译软件;MCS-51; B ankS witching
    发表于 10-23 08:55 99次下载

    快速识别应用程序性能瓶颈

    RATIONAL QUANTIFY FOR WINDOWS能查明应用程序性能瓶颈,从而确保使用JAVA、VISUAL C/C++和VISUAL BASIC开发的应用程序的质量和性能。RATIONAL QUANTIFY向开发团队提供了一个全面、图形化的性能数据
    发表于 04-18 22:15 20次下载

    C语言编译器

    电子发烧友网站提供《C语言编译器.exe》资料免费下载
    发表于 01-15 17:45 48次下载

    PICC805 C编译器

    有朋友正在找的这个编译器,内带破解,一直,没问题。以前找过一些其他不能用。
    发表于 04-29 16:21 9次下载

    MPLAB C18 C编译器 入门(中文)

    电子专业单片机相关知识学习教材资料——MPLAB C18 C编译器 入门(中文)
    发表于 08-18 18:24 48次下载

    IAR_AVR_C编译器的使用

    IAR_AVR_C编译器的使用A
    发表于 06-15 17:15 26次下载

    新款编译器Accelerator亮相及开始限量供应

    的 Beta 版 PGI Accelerator Fortran、CC++编译器,主要用于 AMD 加速处理(APU)和独立图形处理(discrete Graphics Processing
    发表于 09-14 15:07 4次下载

    最新版高性能计算编译器PGI2012上市和体验报告

    2012 是首个支持 OpenACC 指令式编程模型的通用版编译器,可用于具有 NVIDIA CUDA 功能的图形处理(GPU)编程。PGI 2012 还是市场上首个整合 PGI CUDA C/C
    发表于 09-14 15:15 0次下载
    最新版高<b>性能</b>计算<b>编译器</b>PGI2012上市和体验报告

    基于C430编译器的诊断信息

    基于C430编译器的诊断信息
    发表于 10-12 17:27 1次下载
    基于<b>C</b>430<b>编译器</b>的诊断信息

    基于MSP430系列C编译器编程指南

    基于MSP430系列C编译器编程指南
    发表于 10-12 17:36 6次下载
    基于MSP430系列<b>C</b><b>编译器</b>编程指南

    C编译器及其优化

    本章将帮助读者在ARM处理上编写高效的C代码。本章涉及的一些技术不仅适用于ARM处理,也适用于其他RISC处理。本章首先从ARM编译器及其优化入手,讲解C编译器在优化代码时所碰到的一些问题
    发表于 10-17 17:22 2次下载

    浅谈gcc编译器

    3.3 gcc编译器 GNU CC(简称为gcc)是GNU项目中符合ANSI C标准的编译系统,能够编译CC++和Object C等语言编写的程序。gcc不仅功能强大,而且可以编译CC
    发表于 10-18 13:48 0次下载

    ARM汇编编译器的使用

    10.4 ARM汇编编译器的使用 armasm是ARM汇编语言的交叉编译器,本节将详细介绍它的使用方法。 armasm命令行语法格式如下。 armasm options inputfile 在
    发表于 10-19 10:14 5次下载

    Linux下C/C++编译器gcc使用指南

    1.gcc包含的c/c++编译器 gcc,cc与c++,g++ gcc和cc是一样的,c++和g++是一样的。一般c程序就用gcc编译c++程序就用g++编译2.gcc的基本用法 gcc
    发表于 11-02 10:59 0次下载

    Linux上安装GCC3.4.0编译器过程

    2004年4月20日最新版本的GCC编译器3.4.0发布了。目前,GCC可以用来编译C/C++、FORTRAN、JAVA、OBJC、ADA等语言的程序,可根据需要选择安装支持的语言。GCC
    发表于 11-02 11:18 0次下载

    编译器知识拾零

    分享到: 编译器,是将便于人编写,阅读,维护的高级计算机语言翻译为计算机能识别,运行的低级机器语言的程序编译器将源程序(Source program)作为输入,翻译产生使用目标语言(Target
    发表于 11-07 15:44 0次下载

    TMS320,c28xDSP中创建可c-callable程序集函数的简单方法

    c-callable程序集需要理解参数传递的约定和环境,这是c编译器期望的。此应用程序报告提供了配置c编译器以帮助解决这些问题的说明和建议。
    发表于 04-11 11:06 3次下载
    TMS320,<b>c</b>28xDSP中创建可<b>c</b>-callable<b>程序</b>集函数的简单方法

    如何使用GNU语言工具来编写32位应用程序的代码的详细资料概述

    本文档介绍如何使用 GNU 语言工具来编写 32 位应用程序的代码。 MPLAB XC32 C/C++ 编译器是一款全功能的优化编译器,可将标准 ANSI C 程序转换为 32 位器件汇编语言
    发表于 06-08 13:28 9次下载
    如何使用GNU语言工具来编写32位<b>应用程序</b>的代码的详细资料概述

    如何将C源代码从MPLAB C18编译器移植到MPLAB XC8C编译器的详细概述

    本文档介绍了针对PIC18 MCU的MPLAB® C编译器(以前的说法,本文档称为MPLAB C18)与MPLAB XC8 C编译器间的差异,以及如何将针对MPLAB C18定制的C源代码和编译器选项移植到MPLAB XC8。
    发表于 06-07 09:28 26次下载
    如何将<b>C</b>源代码从MPLAB <b>C</b>18<b>编译器</b>移植到MPLAB XC8<b>C</b><b>编译器</b>的详细概述

    如何使用VS2013做C语言编译器的创建方法详细资料说明

    本文档的主要内容详细介绍的是如何使用VS2013做C语言编译器的创建方法详细资料说明。前言,C语言是一个 历史悠久的计算编程语言,几十年的发展,现在任然经久不衰。有很多C语言编译器。这里介绍强大的VS2013 做C编译器学习
    发表于 11-06 16:18 8次下载
    如何使用VS2013做<b>C</b>语言<b>编译器</b>的创建方法详细资料说明

    MCS-51单片机智能反编译器应用程序免费下载

    本文档的主要内容详细介绍的是MCS-51单片机智能反编译器应用程序免费下载。
    发表于 01-17 14:32 40次下载
    MCS-51单片机智能反<b>编译器</b><b>应用程序</b>免费下载

    主流的C语言编译器详细介绍

    对于当前主流桌面操作系统而言,可使用Visual C++、GCC以及LLVM Clang这三大编译器。其中,Visual C++(简称MSVC)只能用于Windows操作系统;其余两个,除了可用
    发表于 09-05 17:27 1次下载
    主流的<b>C</b>语言<b>编译器</b>详细介绍

    C语言编译器常见的预编译指令详细资料说明

    编译器C程序的处理可以明确地分为两步。第一步由预编译器完成。以#开头的预编译指令可能会影响编译器设置或者进行文本替换。注意,预编译器变量(标识符)和正常的C变量是不一样的。预编译完成之后,编译器将不会看到任何预
    发表于 06-05 17:52 2次下载
    <b>C</b>语言<b>编译器</b>常见的预<b>编译</b>指令详细资料说明

    主流C语言编译器的详细资料介绍

    对于当前主流桌面操作系统而言,可使用Visual C++、GCC以及LLVM Clang这三大编译器。其中,Visual C++(简称 MSVC)只能用于Windows操作系统;其余两个,除了可用
    发表于 05-22 18:00 1次下载
    主流<b>C</b>语言<b>编译器</b>的详细资料介绍

    AVR程序编译器avrubd应用程序免费下载

    本文档的主要内容详细介绍的是AVR程序编译器avrubd应用程序免费下载,简单的AVR程序编译器,简单实用,只需配置串口和时钟频率。
    发表于 05-15 17:22 37次下载
    AVR<b>程序</b><b>编译器</b>avrubd<b>应用程序</b>免费下载

    MATLAB 64位C语言和C++编译器应用程序免费下载

    本文档的主要内容详细介绍的是MATLAB 64位C语言和C++编译器应用程序免费下载。
    发表于 05-21 08:00 4次下载
    MATLAB 64位<b>C</b>语言和<b>C</b>++<b>编译器</b><b>应用程序</b>免费下载

    STM32的编译器CubeIDE安装包应用程序免费下载

    本文档的主要内容详细介绍的使用STM32的编译器CubeIDE安装包应用程序免费下载。
    发表于 11-28 11:44 15次下载
    STM32的<b>编译器</b>CubeIDE安装包<b>应用程序</b>免费下载

    C语言编译器PICC9.60应用程序免费下载

    本文档的主要内容详细介绍的是C语言编译器PICC9.60破解版应用程序免费下载。
    发表于 05-21 08:00 12次下载
    <b>C</b>语言<b>编译器</b>PICC9.60<b>应用程序</b>免费下载

    HI-TECH PICC编译器8.05版应用程序

    本文档的主要内容详细介绍的是HI-TECH PICC编译器8.05版应用程序免费下载。
    发表于 06-08 08:00 43次下载
    HI-TECH PICC<b>编译器</b>8.05版<b>应用程序</b>

    华为方舟编译器使用指南

    当前方舟编译器支持 Java/Kotlin 程序字节码的前端输入,其它编程语言的支持(如 C/C++/JS 等)还在规划中,方舟编译器的中间表示(IR)转换将前端输入转换成方舟 IR,并输送给后端
    发表于 10-14 14:56 1次下载
    华为方舟<b>编译器</b>使用指南

    LabVIEW应用程序性能瓶颈的解决

    了解如何识别和解决LabVIEW应用程序中的性能瓶颈。使用内置工具和VI分析,您可以监视VIs的内存使用情况和执行时间,以确定导致应用程序性能下降的代码部分。
    发表于 03-29 14:03 8次下载
    LabVIEW<b>应用程序</b>中<b>性能</b>瓶颈的解决

    基于C++编译器的节点融合优化方法

    LLVM是以C十十编写的架构编译器的框架系统,支持多后端和交叉编译,用于优化程序编译时间、链接时间、运行时间和空闲时间。节点融合是一种简单有效的优化方法,其基本思想为将多个节点优化为一个高效的融合
    发表于 06-15 14:29 19次下载

    SDCC编译器和FreeRTOS在C8051F上的开发的应用

    SDCC编译器和FreeRTOS在C8051F上的开发的应用(通讯电源技术2020年15期)-SDCC编译器和FreeRTOS在C8051F上的开发应用         
    发表于 08-31 11:38 4次下载
    SDCC<b>编译器</b>和FreeRTOS在<b>C</b>8051F上的开发的应用

    SDCC编译器和FreeRTOS在C8051F上的开发应用

    SDCC编译器和FreeRTOS在C8051F上的开发应用(核达中远通电源技术有限公司招聘信息)-SDCC编译器和FreeRTOS在C8051F上的开发应用              
    发表于 09-18 17:14 21次下载
    SDCC<b>编译器</b>和FreeRTOS在<b>C</b>8051F上的开发应用

    【PIC单片机】2.编译器下载

    【PIC单片机】2.编译器下载
    发表于 11-16 11:51 6次下载
    【PIC单片机】<b>2</b>.<b>编译器</b>下载

    linux的系统移植——交叉编译器

    1.为什么要有交叉编译器?\qquad一般电脑是X86架构,而单片机一般不是,比如单片机是ARM架构,那么gcc编译生成的程序只能在X86的架构上运行,而不能在ARM架构上运行,所以需要交叉编译器
    发表于 11-30 15:21 11次下载
    linux的系统移植——交叉<b>编译器</b>

    SuperH C/C++ 编译器包 V.9.04 用户手册

    SuperH C/C++ 编译器包 V.9.04 用户手册
    发表于 01-12 18:45 1次下载
    SuperH <b>C</b>/<b>C</b>++ <b>编译器</b>包 V.9.04 用户手册

    PGI和英伟达合作开发CUDA Fortran编译器

    PGI和英伟达合作开发CUDA Fortran编译器 意法半导体全资子公司、世界领先的高性能计算机(HPC)编译器提供商Portland Group宣布与英伟达公司(NVIDIA)达成合作开发协议,
    发表于 06-29 07:39 703次阅读

    Linux下C应用程序开发

    本文介绍了在 Linux下能用于 C 应用程序开发和调试的工具. 本文的主旨是介绍如何在 Linux 下使用 C 编译器和其他 C 编程工具, 而非 C 语言编程的教程
    发表于 05-14 10:16 4430次阅读

    PortlandGroup推出PGI CUDA编译器

    Portland Group宣布PGI CUDA CC++编译器已正式出货,针对基于产业标准的通用64位和32位x86架构的处理系统。
    发表于 06-30 08:54 877次阅读

    Portland Group发布首款可支持OpenACC的PGI编译器

    意法半导体全资子公司、世界领先的独立高性能计算技术 PGI®编译器供应商Portland Group,发布首版支持OpenACC®可支持图形处理加速器指令式编程模型标准的Fortran和C编译器。Beta版编译
    发表于 04-16 09:01 996次阅读

    Nios II C语言至硬件加速编译器

    电子发烧友网核心提示: 获奖的Nios II 嵌入式处理C语言至硬件(C2H)加速编译器将对时间要求较高的ANSI C函数转换为FPGA中的硬件加速器,从而提高了性能。 特性: (1)ANSI/ISO C 代码按键
    发表于 10-17 14:29 1786次阅读
    Nios II <b>C</b>语言至硬件<b>加速</b><b>编译器</b>

    MPLAB® XC8 C编译器的架构特性

    本视频介绍了MPLAB® XC8 C编译器的架构特性。该编译器编译过程不同于传统的编译器,采用了一种称为"OCG(全知代码生成)"的技术。
    的头像 发表于 05-23 12:47 4801次阅读
    MPLAB® XC8 <b>C</b><b>编译器</b>的架构特性

    演示如何安装C编译器软件

    本讲是:C编译器软件安装演示视频。
    的头像 发表于 06-15 10:10 2920次阅读
    演示如何安装<b>C</b><b>编译器</b>软件

    关于C编译器软件安装演示介绍

    C编译器软件安装演示视频
    的头像 发表于 07-23 00:35 2462次阅读

    利用矢量硬件如何提高应用程序性能

    本次会议演示了识别和修改代码以利用矢量硬件的过程如何提高应用程序性能
    的头像 发表于 05-31 11:46 798次阅读

    如何使用英特尔Fortran编译器生成更快的应用程序

    Steve Lionel谈到英特尔Fortran编译器如何生成更快的应用程序。他使用Polyhedron的基准来独立突出卓越的性能
    的头像 发表于 11-06 06:39 1572次阅读

    如何利用C/C++编写应用程序加速内核运行

    SDAccel编译器支持OpenCL CCC ++,用于定义FPGA执行的内核功能。 了解如何利用用C / C ++编写的现有函数作为FPGA上运行的OpenCL应用程序加速内核。
    的头像 发表于 11-20 06:40 2260次阅读

    了解CPI对分析程序性能的意义

    本小节讲述为什么使用 CPI 分析程序性能的意义。如果已经非常了解 CPI 对分析程序性能的意义,可以跳过本小节的阅读。
    的头像 发表于 12-15 10:30 8294次阅读

    如何选择PIC单片机的C编译器

    PIC单片机的C编译器只有HI-TECH公司出品PICC编译器,和CCS公司的CCS编译器。还有PIC的生产商Microchip公司自行生产的只针对PIC18/PIC24/dsPIC/PIC32系列单片机的C语言编译器MCC(MCC18 / MCC30 / MCC32)。
    发表于 03-29 14:09 4185次阅读

    华为方舟编译器详解 到底有什么

    4月11日,华为春季发布会上,除了P30系列,另外一个词也在程序员届火了一把——华为方舟编译器。据介绍,华为方舟编译器可以让安卓性能突飞猛进。
    的头像 发表于 04-26 11:42 4.3w次阅读

    既然C编译器C语言写,那么第一个C编译器是怎样来的?

    既然C编译器C语言写的,那第一个C编译器是怎样来的?
    的头像 发表于 02-25 15:47 2289次阅读

    虚拟机:编译器C函数的名字修饰

    虚拟机:编译器C函数的名字修饰
    的头像 发表于 06-22 11:44 2051次阅读
    虚拟机:<b>编译器</b>对<b>C</b>函数的名字修饰

    华为方舟编译器正式支持C语言,将继续完全开源

    2019年8月底,华为方舟编译器(OpenArkCompiler)正式开源,迈出了跨越性的一步。一年多来,方舟编程体系陆续实现了编译器、引擎、调试的开源,其中编译器的重点功能主要集中在Java应用程序静态编译上。
    的头像 发表于 10-14 17:38 1553次阅读

    解答编译器是怎样运行的

    对于程序员来说编译器是非常熟悉的,每天都在用,但是当你在点击“Run”这个按钮或者执行编译命令时你知道编译器是怎样工作的吗?
    的头像 发表于 03-09 15:20 2042次阅读

    阿里云基础软件C/C++编译器的工作现状及挑战

    本文主要详细介绍了阿里云CC++编译器(GCC、LLVM)工作现状、主流编译器(GCC、LLVM)开源社区参与现状以及多架构(RISC-V)对数据中心的挑战。
    的头像 发表于 06-23 15:26 2163次阅读
    阿里云基础软件<b>C</b>/<b>C</b>++<b>编译器</b>的工作现状及挑战

    常见的C语言编译器是什么

    常见的C语言编译器是什么?大家一般都用的是什么软件呢?
    的头像 发表于 10-04 18:04 4829次阅读

    Verilog HDL 编译器指令说明

    编译时,特定的编译器指令在整个编译过程中有效(编译过程可跨越多个文件),直到遇到其它的不同编译程序指令。不完整的标准编译器指令如下: 下面分解一下,每个指令单独说明一下: ’define和’undef 1.’define指令 ’define指令用于文本替换,它很像C
    的头像 发表于 11-03 09:31 2137次阅读
    Verilog HDL <b>编译器</b>指令说明

    C/C++在线编译器的功能

    作为程序员,使用编译器是必备技能,但是从入门到放弃,基本上就是在开发环境安装、配置这一步。。。
    的头像 发表于 03-09 17:52 7431次阅读

    NVIDIA CUDA Toolkit用于创建高性能GPU加速应用程序

    通过 CUDA Toolkit,您可以在 GPU 加速的嵌入式系统、桌面工作站、企业数据中心、基于云的平台和 HPC 超级计算机上开发、优化和部署应用程序
    的头像 发表于 03-10 10:15 1426次阅读

    VScode编译器如何配置C/C++编译环境

    昨天有伙伴私信我,为什么我C语言写的hello world几行代码,在编译器里面报错了呢?
    的头像 发表于 03-16 08:38 3959次阅读

    在动态环境中使用CUDA图提高实际应用程序性能

    具有许多小 CUDA 内核的应用程序通常可以使用 CUDA 图进行加速,即使内核启动模式在整个应用程序中发生变化。鉴于这种动态环境,最佳方法取决于应用程序的具体情况。希望您能发现本文中描述的两个示例易于理解和实现。
    的头像 发表于 04-01 16:39 2981次阅读
    在动态环境中使用<b>CUDA</b>图提高实际<b>应用程序性能</b>

    如何使用CMake工具套件构建CUDA应用程序

    我希望这篇文章向您展示了 CMake 如何自然地支持构建 CUDA 应用程序。如果您是 CMake 的现有用户,请试用 CMake 3 . 9 并利用改进的 CUDA 支持。如果您不是 CMake 的现有用户,请试用 CMake 3 . 9 ,亲身体验一下它对于构建使用 CUDA 的跨平台项目有多好。
    的头像 发表于 04-01 17:42 2769次阅读
    如何使用CMake工具套件构建<b>CUDA</b><b>应用程序</b>

    最新版本CUDA 11 . 5工具包的基本新功能

    NVIDIA 宣布 CUDA 开发环境的最新版本 CUDA 11 . 5 。 CUDA 11 . 5 专注于增强您的 CUDA 应用程序的编程模型和性能CUDA 继续推动 GPU 加速的边界,并为 HPC 、可视化、
    的头像 发表于 04-02 16:48 1863次阅读
    最新版本<b>CUDA</b> <b>11</b> . 5工具包的基本新功能

    NVIDIA CUDA C ++编译器的新特性

    CUDA 11 . 5 C ++编译器解决了不断增长的客户请求。具体来说,如何减少 CUDA 应用程序构建时间。除了消除未使用的内核外, NVRTC 和 PTX 并发编译有助于解决这个关键问题 CUDA C ++应用程序
    的头像 发表于 04-06 11:59 1102次阅读
    NVIDIA <b>CUDA</b> <b>C</b> ++<b>编译器</b>的新特性

    使用CUDA并行化矩阵乘法加速Blender Python

      这篇文章描述了两种不同的加速矩阵乘法的方法。第一种方法使用 Numba 编译器来减少 Python 代码中与循环相关的开销。第二种方法使用 CUDA 并行化矩阵乘法。速度比较证明了 CUDA加速矩阵乘法方面的有效性。
    的头像 发表于 04-24 17:04 4207次阅读
    使用<b>CUDA</b>并行化矩阵乘法<b>加速</b>Blender Python

    NVIDIA CUDA11.2 C ++编译器提高应用性能

      使用 CUDA 11. 2 ,大多数内联函数都可以在 cuda-gdb 和 Nsight 调试的调用堆栈回溯中看到。您拥有性能优化代码路径的一致回溯,更重要的是,您可以更精确地确定错误或异常的调用路径,即使所有函数都是内联的。
    的头像 发表于 04-27 10:25 1031次阅读
    <b>用</b>NVIDIA <b>CUDA</b>11.2 <b>C</b> ++<b>编译器</b>提高应用<b>性能</b>

    OpenCV+CUDA编译实现YOLOv5能加速

    对比一下,加速效果真得是杠杠滴!所以值得编译OpenCV+CUDA支持,因为它不光加速深度学习模型推理,对传统图像处理均有加速
    的头像 发表于 07-18 10:27 1316次阅读
    OpenCV+<b>CUDA</b><b>编译</b>实现YOLOv5能<b>加速</b>

    几款C语言编译器推荐

    一些刚开始接触C语言编译的网友想下载一款C语言编译器来使用,不过,网络上有不少C语言编译器相关的软件,让人很难抉择。
    发表于 09-05 09:19 6980次阅读

    交叉编译器安装教程

    交叉编译器中“交叉”的意思就是在一个架构上编译另外一个架构的代码,相当于两种架构“交叉”起来了。Ubuntu 自带的 gcc 编译器是针对 X86 架构的,而我们现在要编译的是 ARM 架构的代码
    的头像 发表于 09-29 09:12 917次阅读

    使用NVIDIA数学库加速GPU应用程序

      加速 GPU 应用程序的主要方法有三种:编译器指令、编程语言和预编程库。编译器指令,例如 OpenACC a 允许您顺利地将代码移植到 GPU 以使用基于指令的编程模型进行加速。虽然它易于使用,但在某些情况下可能无法提供最佳性能
    的头像 发表于 10-10 15:11 779次阅读
    使用NVIDIA数学库<b>加速</b>GPU<b>应用程序</b>

    嵌入式开发中的C语言—编译器介绍

    嵌入式程序开发跟硬件密切相关,需要使用C语言来读写底层寄存、存取数据、控制硬件等,C语言和硬件之间由编译器来联系,一些C标准不支持的硬件特性操作,由编译器提供。
    的头像 发表于 02-25 16:48 509次阅读

    使用Keil C编译器处理DS5250

    本应用笔记介绍如何使用Keil μVision2工具套件为DS5240或DS5250高速安全微控制创建和编译C应用。还描述了使用 ROM 引导加载程序和微控制工具包将编译应用程序加载到微控制的外部加密 RAM 中的过程。
    的头像 发表于 03-01 17:10 306次阅读
    使用Keil <b>C</b><b>编译器</b>处理DS5250

    C/C++编译器的缺省字节对齐方式

    C/C++编译器的缺省字节对齐方式为自然对界。即在缺省情况下,编译器为每一个变量或是数据单元按其自然对界条件分配空间。
    的头像 发表于 04-15 11:24 115次阅读

    下载硬声App