zoukankan      html  css  js  c++  java
  • 【并行计算-CUDA开发】#pragma unroll伪编译指令的使用

    #pragma宏命令主要是改变编译器的编译行为,其他的参数网上资料比较多,我只想简单说下#pragma unroll的用法,因为网上的资料比较少,而且说的比较笼统,请看下面的一段代码

    int main()

    {

    int a[100];

    #pragma unroll 4

    for(int i=0;i<100;i++)

    {

    a[i]=i;

    }

     

    return 0;

    }

     

    循环是一个程序运行时间的主要展现形式,通过使用#pragma unroll命令,编译器在进行编译时,遇到该命令就会对循环进行展开,比如对一些循环次数比较少的循环

    for(int i=0;i<4;i++)

    cout<<"hello world"<<endl;

    可以展开为

    cout<<"hello world"<<endl;

    cout<<"hello world"<<endl;

    cout<<"hello world"<<endl;

    cout<<"hello world"<<endl;

    这样程序的运行效率会更好,当然,现在大多数编译器都会自动这样优化,而通过使用#pragma unroll命令就可以控制编译器的对循环的展开程度。还是回到最开始那个程序,他的循环展开形式为:

    for(int i=0;i<100;i+=4)

    a[i]=i;

    a[i+1]=i+1;

    a[i+2]=i+2;

    a[i+3]=i+3;

  • 相关阅读:
    攻防世界 resver catch-me
    elf.h
    攻防世界 reverse 进阶 notsequence
    攻防世界 reverse 进阶 easyre-153
    攻防世界 reverse 进阶 APK-逆向2
    寒假训练 roarctf_2019_realloc_magic(1/250)
    寒假任务
    Main_arena与non_main_arena
    wdb2018_guess
    :: namespace using作用
  • 原文地址:https://www.cnblogs.com/huty/p/8517821.html
Copyright © 2011-2022 走看看