使用C或C++编译器时,如果我们通过-O3
交换机,执行会变得更快.在CUDA中,有没有相同的东西?
我正在使用该命令编译我的代码nvcc filename.cu
.之后我执行./a.out
.
我想生成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) 我有两个矩阵A和B,行数相同.考虑由B行生成的格子.我想减少B并且在减少期间相应地改变A. 也就是说,如果第i行和第j行B交换,则需要扫描A的第i行和第j行,类似地其他基本行操作.我怎么能这样做?
还有非常简单的C或C++ - LLL算法的实现?
我想生成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) 我想使用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) 我有一个长度为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功能我想要移位运算符(<<)来提高效率.我怎样才能做到这一点?