小编use*_*290的帖子

如何让nvcc CUDA编译器进行更多优化?

使用C或C++编译器时,如果我们通过-O3交换机,执行会变得更快.在CUDA中,有没有相同的东西?

我正在使用该命令编译我的代码nvcc filename.cu.之后我执行./a.out.

cuda nvcc compiler-options

11
推荐指数
2
解决办法
9290
查看次数

生成二进制序列

我想生成5 0s字符串的排列,然后是4 0和1的排列,然后是3 0s和2 1s的排列等?我的代码如下:

#include<stdio.h>
int main(){

int i,j,k,l,s[5];
for(i=0;i<5;i++)
  s[i]=0;
for(k=0;k<5;k++)
       printf("%d  ",s[k]);
   printf("\n");
printf("---------------------------------------------\n");

for(i=0;i<5;i++){
  for(j=0;j<5;j++)
    if(i==j)
      s[j]=1;

    else
      s[j]=0;
    for(k=0;k<5;k++)
       printf("%d  ",s[k]);
   printf("\n");
                 }
printf("---------------------------------------------\n");

for(i=0;i<5;i++){
  for(k=0;k<5;k++)
    s[k]=0;
  s[i]=1;
  for(j=i+1;j<5;j++){
    s[j]=1;
    for(k=0;k<5;k++)
       printf("%d  ",s[k]);
    printf("\n");
    for(k=j;k<5;k++)
       s[k]=0;
                    }

                 }

printf("---------------------------------------------\n");
for(i=0;i<5;i++){

  for(j=i+1;j<5;j++){
    for(k=0;k<5;k++)
       s[k]=0;
    s[i]=1;
    s[j]=1;
    for(l=j+1;l<5;l++){
        s[l]=1;
    for(k=0;k<5;k++)
       printf("%d  ",s[k]);
    printf("\n");
    for(k=l;k<5;k++)
       s[k]=0;
                      }
                    }

                 }


}
Run Code Online (Sandbox Code Playgroud)

所以输出是

0  0  0  0  0  
---------------------------------------------
1  0  0  0  0  
0  1  0  0  0  
0 …
Run Code Online (Sandbox Code Playgroud)

c

7
推荐指数
1
解决办法
1560
查看次数

减少格子

我有两个矩阵A和B,行数相同.考虑由B行生成的格子.我想减少B并且在减少期间相应地改变A. 也就是说,如果第i行和第j行B交换,则需要扫描A的第i行和第j行,类似地其他基本行操作.我怎么能这样做?

还有非常简单的C或C++ - LLL算法的实现

c c++ algorithm mathematical-lattices

3
推荐指数
1
解决办法
1624
查看次数

如何在C中生成多个文件

我想生成60个文件,program0.txt,..,program59.txt.我怎样才能做到这一点?

我的尝试:

FILE *fp[60];

for(i=0;i<60;i++){

   fp[i]=fopen("program.txt","w");

   fprintf(fp[i],"zeros=[");
}
Run Code Online (Sandbox Code Playgroud)

c file

1
推荐指数
1
解决办法
63
查看次数

C中的四维整数数组

我想使用4维数组.

int A[80][80][80][80];
Run Code Online (Sandbox Code Playgroud)

当我尝试使用它时,我得到分段错误(核心转储).例如:

for(i=0;i<80;i++)
 for(j=0;j<80;j++)
   for(k=0;k<80;k++)
    for(l=0;l<80;l++)
         A[i][j][k][l]=i+j+k+l;

printf("%d\n",A[0][1][2][3]);
Run Code Online (Sandbox Code Playgroud)

c

0
推荐指数
1
解决办法
104
查看次数

C中的Shift运算符

我有一个长度为64的二进制数组.我想在C中找到相应的整数.我编写了以下代码.

#include<stdio.h>
#include<math.h>
#include<stdlib.h>
#include<string.h>
main()
 {

      int A[64]={1, 1, 1, 1, 1,1, 1, 1, 1, 1,1, 1, 1, 1, 1,1, 1, 1, 1, 1, 1, 1, 1, 1, 1,1, 1, 1, 1, 1, 1, 1, 1, 1, 1,1, 1, 1, 1, 1, 1, 1, 1, 1, 1,1, 1, 1, 1, 1, 1, 1, 1, 1, 1,1, 1, 1, 1, 1, 1,1,1,1},i;


       long long  int B=0;

      for(i=0;i<64;i++)
             B=B+A[i]*pow(2,63-i);

      printf("B=%llu\n",B);

  } 
Run Code Online (Sandbox Code Playgroud)

结果还可以.但是代替pow功能我想要移位运算符(<<)来提高效率.我怎样才能做到这一点?

c

-2
推荐指数
1
解决办法
128
查看次数

标签 统计

c ×5

algorithm ×1

c++ ×1

compiler-options ×1

cuda ×1

file ×1

mathematical-lattices ×1

nvcc ×1