我有一个C程序,它有一个名为get_name的函数。此函数返回一个字符串(即char *),并根据字符串的大小更改参数size (传递给它):
char *get_name(int &size)
{
*size = strlen(name); // name is a C global variable declared as a char *
return name;
}
我已经创建了以下Fortran模块,以便能够调用C函数get_name
MODULE X
USE, INTRINSIC :: iso_c_binding, ONLY: c_intp
我写了这段代码:
program exponent
implicit none
real(8) :: sum
integer(8) :: i
integer :: limit
real :: start, end
sum = 0d0
limit = 10000000
call CPU_TIME(start)
do i=1, limit
sum = sum + exp(i*1.d0/limit)
end do
call CPU_TIME(end)
print *, sum
短版
我有CUDA代码,我需要在本地运行。因此,我试图在OpenMPI之后安装。当我尝试make我的代码时,我会收到,类似于描述的内容。我尝试用文档的建议修复重新安装OpenMPI,但现在我在安装过程中得到了以下错误:
Making all in tools/ompi_info
make[2]: Entering directory '/home/hatfull/Downloads/openmpi-2.1.1/ompi/tools/ompi_info'
CC ompi_info.o
CC param.o
CCLD ompi_info
我在网上做了一些搜索,但是我无法找到如何从linux编译一个简单的C++和Fortran代码。我需要变得复杂,但我只需要知道如何从一个简单的例子开始。
我的C++代码是:
#include <iostream>
using namespace std;
extern int Add( int *, int * );
extern int Multiply( int *, int * );
int main()
{
int a,b,c;
cout << "Enter 2 values: ";
cin >> a &
我正在尝试使用cmake-gui来制作一个makefile,将fortran和python链接在一起。当我配置和生成makefile时,一切都运行得很好。但在我获得了这个库并尝试在python中使用它之后。原来的问题是:
Traceback (most recent call last):
File "startDEMO.py", line 2, in <module>
import libdemo
ImportError: libifport.so.5: cannot open shared object file: No such file or direc
为什么以下代码在用ifort编译时会导致分段错误
! testtrb.f90
program testtrb
call tracebackqq() ! This is for ifort
!call backtrace() ! This is for gfortran
print '(/1A/)', 'Finish.'
end program testtrb
执行ifort testtrb.f90 ; ./a.out,我有
forrtl: severe (174): SIGSEGV, segmentation fault occur
我应该将linux一个c++代码与旧的fortran代码结合起来,其中fortan是主要代码。我不是这个领域的专家,我试着从简单的测试开始,但我仍然不能编译它。也许我很蠢,但我在任何地方都找不到一个有用的例子。我成功地编译了fortran和c,当链接可以由ifort完成时(以后需要使用intel编译器和实际的fortran代码)。但是,如果我对c++的理解是正确的,那么链接必须由c++编译器(g++)完成。
那么我在这里做错了什么:
我的FORTRAN测试代码"ftest.f":
PROGRAM MAIN
IMPLICIT NONE
INTEGER I
writ
当我将一些fortran代码移植到c上时,令我惊讶的是,使用ifort编译的fortran程序与用gcc编译的c程序之间的执行时间差异大部分来自于三角函数(sin、cos)的计算。这让我感到惊讶,因为我曾经相信这个所解释的,像正弦和余弦这样的功能是在微处理器内部的微代码中实现的。
为了更明确地发现问题,我在fortran中做了一个小测试程序。
program ftest
implicit none
real(8) :: x
integer :: i
x = 0d0
do i = 1, 10000000
x = cos (2d0 * x)
end do
wri
我正在尝试从Windows 10构建岩浆,但它不起作用。我从这里下载了MAGMA项目。我下载并安装了Intel的一个API编译器和MKL。作为命令行设置的一部分,我将执行以下步骤:
> call "C:\Program Files (x86)\Intel\oneAPI\setvars.bat"
> :: I do this extra because CMake complains that doesn't find the dpcpp and ifort compilers in the PATH.
> set "PATH=%PATH%;C:
我想在Windows下编译一个Fortran 90 (固定格式)库。但是,我不能理解prepocessor变量的错误。
Say the sample file is VF_TestPreprocessor.F:
program VF_TestPreprocessor
implicit Integer(A-Z)
Parameter (TestAlpha=22,TestBeta=TestGamma)
print *, TestBeta
end program VF_TestPreprocessor
在Linux下,我可以使用ifort V
program x
character(len=1024) :: foo
integer:: ret
foo = 'ls'
call system(foo, ret)
end program
此程序在ifort上使用SIGSEGV崩溃。
forrtl: severe (174): SIGSEGV, segmentation fault occurred
Image PC Routine Line Source
a.out