小编Gud*_*ddu的帖子

如何在gcc中启用C++ 11?

我在Mac OSX Mountain Lion上使用http://hpc.sourceforge.net上的gcc 4.8.1 .我正在尝试编译一个使用该to_string函数的C++程序<string>.我-std=c++11每次都需要使用旗帜:

g++ -std=c++11 -o testcode1 code1.cpp
Run Code Online (Sandbox Code Playgroud)

有没有办法默认包含这个标志?

g++ c++11

109
推荐指数
3
解决办法
26万
查看次数

避免在 Mac-OSX 上的 mpirun 中接受传入网络连接对话框

我是 MPI 初学者。我正在尝试在运行 Mac_OSX Mountain Lion 的 macbook 上运行最简单的 MPI“hello world”代码。它只有 1 个处理器,但有 4 个核心。C++代码是这样的

#include <iostream>
#include "mpi.h"
using namespace std;

int main(int argc, char* argv[])
{
    int rank, size;
    MPI::Init();
    rank = MPI::COMM_WORLD.Get_rank();
    size = MPI::COMM_WORLD.Get_size();
    std::cout << "Hello, world!  I am " << rank << " of " << size << std::endl;
    cout << "size is " << size << endl;
    cout << "rank is " << rank << endl;
    MPI::Finalize();
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

然后我编译并运行代码

$ mpic++ …
Run Code Online (Sandbox Code Playgroud)

c++ openmpi osx-mountain-lion

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

如何更快地制作这个简单的fortran 90代码?

我试图比较一个简单代码的计算时间,使用Fortran 90和C++来计算整数的立方总和,因为我听说它们在类似的级别上很快.我使用gfortran和g ++(在Mac OSX上)来编译这些代码.

有人可以指出为什么Fortran 90代码比同等的C++代码(12秒)花费的时间(49秒)要多得多吗?我只知道C++是行专业,而Fortran是专栏专栏,但我认为这与这些代码无关.如何让这个fortran90代码更快?任何提示将不胜感激.谢谢.

Fortran代码和编译 gfortran -o bb1 code15.f90

program code15 
implicit none

double precision, dimension(:), allocatable :: a
integer (kind=8) :: n,i
real (kind=16) :: ssum
real :: ts1, ts2

call cpu_time(ts1)
n = 1600000000
allocate(a(n))
ssum=0.0

do i=1,n
    a(i)=i
    ssum=ssum+a(i)*a(i)*a(i)
end do

print *, 'final sum ', ssum
deallocate(a) 
call cpu_time(ts2)
print *,'the time taken is ',ts2-ts1

end program
Run Code Online (Sandbox Code Playgroud)

输出是

 final sum    1.63840000204800000399876515667619840E+0036
 the time taken is    48.6228256
Run Code Online (Sandbox Code Playgroud)

C++代码和编译 g++ -o bb1 code10.cpp

#include <iostream>
#include …
Run Code Online (Sandbox Code Playgroud)

c++ performance gfortran fortran90

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

为什么C++中的多维数组的这些计算速度不同?

这可能是一个重复的问题.所以,如果你愿意,请随时将其标记下来.在C++中,我了解到数组维度连续存储在内存中如何将3D数组存储在C中?所以我做了一个小实验,将自然数分配给大小为1600000000x1和1x1600000000的矩阵(请matsize根据您的记忆将代码更改为较小的值).下面的代码为矩阵a(其尺寸为1x1600000000)分配1到1600000000的自然数,并计算所有元素的立方体总和.相反的情况只是通过更改xdimmatsizeydim1 来反转矩阵的维度,并重新编译代码并再次运行它.矩阵是[xdim][ydim]

#include <iostream>
#include <time.h>
using namespace std;
int main()
{
long int matsize, i, j, xdim, ydim;
long double ss;
double** a;
double time1, time2, time3;
clock_t starttime = clock();    
matsize=1600000000;
xdim=1;
ydim=matsize;   
ss=0.0;    
a= new double *[xdim];
for(i=0;i<xdim;i++)
{
    a[i]= new double[ydim];
}

time1= (double)( clock() - starttime ) / (double)CLOCKS_PER_SEC;    
cout << "allocated. time taken for allocation was " << time1 <<" seconds. …
Run Code Online (Sandbox Code Playgroud)

c++ matrix multidimensional-array

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

如何在运行时将参数从输入文件传递到fortran 77 mpirun?

我是MPI和Fortran 77菜鸟.我有一个fortran 77代码FKRPRO.f,我想使用OpenMPI并行化.该代码需要大量参数,这些参数在运行时从单独的文件中输入.编译和运行就是这样的

gfortran -o FKRPRO FKRPRO.f
./FKRPRO < Modelfile.txt
Run Code Online (Sandbox Code Playgroud)

代码中的等价行(不是我的代码)是

      PARAMETER(LIN=5)
      INTEGER ERROR
      LOGICAL PRNTA
      PRNTA=.FALSE.
      READ(LIN,'(L3)') PRNTA
      READ(LIN,21) M1,M2
   21 FORMAT(11I5)
Run Code Online (Sandbox Code Playgroud)

等等.有人可以向我解释一下是什么READ(LIN,'(L3)') PRNTA意思.输入文件Modelfile.txt中的输入是这样的

.F.                                                                             
    0   64  
and so on..   
Run Code Online (Sandbox Code Playgroud)

我在代码中放了必要的MPI语句.

      INCLUDE 'MPIF.H'
...
      CALL MPI_INIT(ERROR)
      CALL MPI_COMM_SIZE(MPI_COMM_WORLD,NPROCS,ERROR)
      CALL MPI_COMM_RANK(MPI_COMM_WORLD,PRANK,ERROR)
...
      CALL MPI_TYPE_FREE(NEWMATRIX,ERROR)
      CALL MPI_FINALIZE(ERROR)
Run Code Online (Sandbox Code Playgroud)

所有进程都无法读取输入文件.我编译并运行这样的代码

mpif77 -o bc3 FKRPROG5.f
mpirun -np 4 bc3 < Modelfile.txt 
Run Code Online (Sandbox Code Playgroud)

这不起作用.我收到以下错误.只有第一个进程或等级0才能读取该文件.

At line 50 of file FKRPROG5.f (unit = 5, file = 'stdin')
Fortran runtime error: End of file …
Run Code Online (Sandbox Code Playgroud)

fortran fortran77 openmpi

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