導航:首頁 > 源碼編譯 > cmd怎麼編譯fortran

cmd怎麼編譯fortran

發布時間:2023-09-09 19:36:52

① 如何在命令行中使用intel c++編譯器,並使用openmp和mkl來編譯自己的程序,並運算

1、icc

Intel C/C++編譯器接受遵守ANSI C/C++ , ISO C/C++ standards,GNU inline ASM for IA-32 architecture標準的輸入。與linux下常用的gcc兼容並支持更大的C語言擴展,包括源文件、命令行參數、目標文件。不支持gcc的inline方式的匯編。例,f.c

#include<stdio.h>

int main(int argc, char* argv[]){

printf("Hello\n");

return 0;

}

編譯:icc -c f.cpp -o f.o

鏈接:icc f.o -o f

運行:./f

注意,編譯與鏈接都由icc來完成,icc常用命令行參數:

-o 輸出文件命名

-I include路徑

-L lib路徑

-l 包含的lib名

-c 僅生成目標文件(*.o),不鏈接

-On n=0,1,2,3 編譯器優化選項,n=0關閉編譯器優化,n=3使用最激進的優化

-c99[-] 打開/關閉 c99規范的支持

詳細的請參照icc的manpage.

2、ifort

Intel Fortran編譯器支持F77/90/95標准並與CFV(Compaq Visual Fortran)兼容。例,f.f90

program f

print *, "Hello"

stop

end

編譯:ifort -c f.f90 -o f.o

鏈接:ifort f.o -o f

運行:./f

編譯與連接同樣由ifort來完成,ifort常用命令行參數:

-o 輸出文件命名

-I include路徑

-L lib路徑

-l 包含的lib名

-c 僅生成目標文件(*.o),不鏈接

-On n=0,1,2,3 編譯器優化選項,n=0關閉編譯器優化,n=3使用最激進的優化

-std90 使用F90標准編譯

-std95 使用F 95標准編譯

-f77rtl 編譯使用F77運行方式的代碼(用於解決特殊問題)

These options optimize application performance for a particular Intel? processor or family of processors. The compiler generates code that takes advantage of features of the specified processor.

Option

Description
tpp5 or G5 Optimizes for Intel? Pentium? and Pentium? with MMX? technology processors.
tpp6 or G6 Optimizes for Intel? Pentium? Pro, Pentium? II and Pentium? III processors.
tpp7 or G7 Optimizes for Intel? Pentium? 4, Intel? Xeon?, Intel? Pentium? M processors, and Intel? Pentium? 4 processors with Streaming SIMD Extensions 3 (SSE3) instruction support.
On Intel? EM64T systems, only option tpp7 (Linux) or G7 (Windows) is valid.

About tpp:

http://www.ncsa.illinois.e/UserInfo/Resources/Software/Intel/Compilers/9.0/main_for/mergedProjects/copts_for/common_options/option_tpp567_g567.htm

https://wiki.ke.e/display/SCSC/Compilers+and+Libraries

Intel Fortran Compiler Options: http://geco.mines.e/guide/ifort.html

Intel(R) Fortran Compiler Options: http://www.rcac.pure.e/userinfo/resources/common/compile/compilers/intel/man/ifort.txt

ifort編譯器提供了非常多的優化參數

$ ifort --help | more 查看就可以
也可以定位到某個參數

$ifort --help | grep -5 '-mkl'
-5表示顯示查找到的行及下面5行的內容。

3、Intel MKL數學庫針對Intel系列處理器進行了專門的優化,主要包含的庫有:

基本線形代數運算(BLAS)

向量與向量、向量與矩陣、矩陣與矩陣的運算

稀疏線形代數運算

快速傅立葉變換(單精度/雙精度)

LAPACK(求解線形方程組、最小方差、特徵值、Sylvester方程等)

向量數學庫(VML)

向量統計學庫(VSL)

高級離散傅立葉變換

編譯:

icc multi.c -I/opt/intel/mkl/include –L/intel/mkl/lib –lmpi_ipf –o multi

4、MPI程序編譯

消息傳遞介面(MPI)並行程序設計模型程序的編譯命令。例,f.c

include<stdio.h>

#include<mpi.h>

main(argc,argv)

int argc;

char *argv[];

{

char name[BUFSIZ];

int length;

MPI_Init(&argc,&argv);

MPI_Get_processor_name(name, &length);

printf("%s: hello world\n", name);

MPI_Finalize();

}

編譯與連接均使用mpicc,參數與mpicc中定義的編譯器相同,這里與icc相同。

mpicc –c hello.c –o hello.o

mpicc hello.o –o hello

運行使用mpirun 命令,將運行需要的節點定義在文件中並在-machinfile中制定。

文件: nodelist

node1

node1

node2

node3

運行:

$mpirun –machefile nodelist –np 4 ./hello

node1: hello world

node1: hello world

node2: hello world

node3: hello world

5、32位向64位的移植

32位程序到64位移植中應注意的常見問題:

數據截斷:

由於long類型變數的運算(賦值、比較、移位等)產生。long定義在x86上為32bits,而在ia64上為64bits.容易在與int型變數運算時出現異常。

處理方法:盡量避免不同類型變數間的運算,避免將長度較長的變數賦值到較短的變數中,統一變數長度可以解決這個問題。簡單的對於32位轉移到64位可以將所有long定義轉換為int定義。

② mingw w64 編譯Fortran 遇到問題,求助

應該是先安裝MSYS,再安裝mingw,在mingw文件夾裡面應該有個bin文件夾,留意一下該文件夾裡面「應該」有gcc.exe的應用程序,假設該bin文件夾的全稱路徑是X:\..\mingw\bin,那麼將它添加將它添加到環境變數裡面。上面是配置環境,下面是編譯運行一個C程序:在比如新建"D:\main.c"文件,裡面寫main(){printf("Hello!\n");},保存;然後打開cmd控制台,執行:gccD:\main.c-oD:\main.exe這個時候D盤會生成名為main的應用程序,控制台繼續執行:D:\main.exe就運行了,應該顯示出Hello!了

python 中使用 FORTRAN 怎麼搭

f2py是numpy自帶的一個工具,只要安裝了numpy,一般都會安裝f2py.exe和f2py.py兩個文件.

f2py.exe適合在命令行中使用,而f2py.py則一般在Python代碼中使用.

廢話少說, 先建立一個testfortran.f90的文件如下:

[plain] view plain
!SUBROUTINE
SUBROUTINE ADDSUB(A,B,C,D)
IMPLICIT NONE
DOUBLE PRECISION A,B,C,D
!f2py intent(in) :: A,B
!f2py intent(out) :: C,D
C = A + B
D = A - B
print*, "ADDSUB From Fortran!"
print*, "ADD=",C
print*, "SUB=",D
RETURN
END

注意這兩行的代碼:

[plain] view plain
!f2py intent(in) :: A,B
!f2py intent(out) :: C,D

對於Fortran只是注釋,但對於f2py卻很重要,相當於"簽名".

注意簽名的注釋前面不能有空格!

當然也可以寫成如下的形式:

[plain] view plain
Cf2py intent(in) :: A,B
Cf2py intent(out) :: C,D
下面開始編譯Fortran代碼為python模塊,打開CMD窗口,輸入如下命令:

[plain] view plain
f2py -m testfortran -c testfortran.f90
會在當前目錄下生成testfortran.pyd的文件.

下面就可以再python中使用這個模塊了:

[python] view plain
In [1]: import testfortran

In [2]: print testfortran.__doc__
This mole 'testfortran' is auto-generated with f2py (version:2).
Functions:
c,d = addsub(a,b)
.

In [3]: x=testfortran.addsub(4,9)
ADDSUB From Fortran!
ADD= 13.000
SUB= -5.000
In [4]: x
Out[4]: (13.0, -5.0)

In [5]:

④ 如何在windows中編寫R程序包

在Windows環境下如何編寫R程序包,即生成供linux環境編譯運行的tar.gz文件,也生成供windows下使用的.zip文件呢?其實並不復雜,只要下載一些工具軟體,按照相應的步驟填寫相應的「表格」,繼而運行一些簡單的指令,就可以生成R的程序包了。

編寫R程序包通常包括以下幾步:

(1) 工具軟體Rtools的安裝和備選軟體的安裝。
(2) r腳本的准備,也就是用來生成程序包的函數腳本。
(3) 利用R中自帶的package.skeleton()函數,生成製作包所需要的Description 文件和幫助文件幫助文件.rd。
(4) 編輯該函數生成的Description 文件和幫助文件.rd
(5) 在windows cmd的命令行中輸入相應的命令,生成zip文件或者.tar.gz

下面我們來一起建立只有一個函數的R程序包,來詳細說明:

一 工具軟體安裝和配置
製作r包的工具軟體包括Rtools,HTML編譯器,MikTeX 或Cte等(備選軟體不一定要安裝):

1 工具軟體安裝
(1)Rtools(製作R包的主要工具)
Rtools是在windows下製作R包的一系列工具,其中包括
1) CYGWIN 在Windows下模擬UNIX環境
2) MinGW編譯器,可用來編譯C和Fortran語言。
3) Perl
下載地址: http://www.murdoch-sutherland.com/Rtools/

(2) 微軟HTML編譯器(備選):

用來從源文件生成HTML格式的幫助文件
下載地址:http://go.microsoft.com/fwlink/?LinkId=14188

(3) MikTeX 或CteX(備選)
用來生成pdf格式的幫助文件
下載地址:http://www.miktex.org/ www.ctex.org/
分別按照要求安裝好。

2 設置文件啟動路徑:
我的電腦>屬性>高級>環境變數>系統變數 PATH一項,點擊「編輯」,檢查是否具有以下路徑,如果沒有,需要手工添加:
c:\Rtools\bin;c:\Rtools\perl\bin;c:\Rtools\MinGW\bin; C:\CTEX\MiKTeX\miktex\bin;C:\CTEX\CTeX\ctex\bin;C:\CTEX\CTeX\cct\bin;C:\CTEX\CTeX\ty\bin;C:\CTEX\Ghostscript\gs8.64\bin;C:\CTEX\GSview\gsview;C:\CTEX\WinEdt;C:\Program Files\R\R-2.9.0\bin\;
設置啟動路徑的目的是在cmd命令行可以直接調用相應的exe文件。

如果只是簡單製作一個個人使用的包,只需將c:\Rtools\bin;c:\Rtools\perl\bin;c:\Rtools\MinGW\bin; 添加到系統路徑即可

二 R腳本的准備
假如現在我們已經有了一個編好的R函數,用來給出回歸的精確結果,存成了r腳本的格式,文件名為linmod.r
其內容如下所示,那麼該如何製作R程序包呢?

linmod<- function(x, y)
{
## compute QR-decomposition of x
qx <- qr(x)
## compute (x'x)^(-1) x'y
coef <- solve.qr(qx, y)
## degrees of freedom and standard deviation of resials
df <- nrow(x)-ncol(x)
sigma2 <- sum((y - x%*%coef)^2)/df
## compute sigma^2 * (x'x)^-1
vcov <- sigma2 * chol2inv(qx$qr)
colnames(vcov) <- rownames(vcov) <- colnames(x)
list(coefficients = coef,
vcov = vcov,
sigma = sqrt(sigma2),
df = df)
}

三 R包框架的准備
1 生成准備文件
登陸R :開始>所有程序>R>R.2.9.0
(1)清除內存中的對象:
rm(list=ls())
(2)設定工作目錄,這里設定為 c:/pa
setwd("c:/pa")
(3)將製作包的源文件 linmod.r拷貝到c:/pa/文件夾下,
之後輸入:
package.skeleton(name="linmod",code_files="c:/pa/linmod.r")

此時,R控制台中顯示
Creating directories ...
Creating DESCRIPTION ...
Creating Read-and-delete-me ...
Saving functions and data ...
Making help files ...
Done.
Further steps are described in './linmod/Read-and-delete-me'.
>

可以看到c:/pa文件夾下新出現了一個linmod文件夾
該文件夾下的內容就是R包的框架,包括data文件夾,man文件夾,只要按要求將其填寫完整,再進行相應的編譯即可。
首先查看Read-and-delete-me文件
文件內容如下:

* Edit the help file skeletons in 'man', possibly combining help
files for multiple functions.
* Put any C/C++/Fortran code in 'src'.
* If you have compiled code, add a .First.lib() function in 'R' to
load the shared library.
* Run R CMD build to build the package tarball.
* Run R CMD check to check the package tarball.
Read "Writing R Extensions" for more information.

大致意思如下:
可以man文件夾下編輯幫助文件
C/C++/Fortran 的源代碼應該放入src文件夾下
需要在登錄時載入包
可以運行R CMD建立和檢查相應的包
查看更多信息,應該閱讀Writing R Extensions

2 編輯Description文件和rd文件
(1) Description文件的編輯
按照提示,填好各項

Package: linmod
Type: Package
Title: test for linear regression
Version: 1.0
Date: 2009-07-20
Author: helixcn
Maintainer: helixcn <[email protected]>
Description: To give the exactly results of linear regression.
License: GNU 2 or later
LazyLoad: yes

(2)man文件夾中.rd文件編輯
man文件夾中包含兩個文件 linmod.Rd和linmod-package.Rd,分別是對linmod()函數和linmod包的介紹,下面逐項填寫:

1) linmod.Rd
\name{linmod}
\Rdversion{1.1}
\alias{linmod}
%- Also NEED an '\alias' for EACH other topic documented here.
\title{
linear regression
}
\description{
to give the more exactly results of linear regression
}
\usage{
linmod(x, y)
}
%- maybe also 'usage' for other objects documented here.
\arguments{
\item{x}{
a numeric design matrix for the model
}
\item{y}{
a numeric vector of responses
}
}
\details{
%% ~~ If necessary, more details than the description above ~~
}
\value{

%% ~Describe the value returned
%% If it is a LIST, use
%% \item{comp1 }{Description of 'comp1'}
%% \item{comp2 }{Description of 'comp2'}
%% ...
}
\references{
Friedrich Leisch,2008 Creating R Packages: A Tutorial
}
\author{
helixcn
}
\note{
Please read Friedrich Leisch,2008
}
%% ~Make other sections like Warning with \section{Warning }{....} ~

\seealso{
%% ~~objects to See Also as \code{\link{help}}, ~~~
}
\examples{
##---- Should be DIRECTLY executable !! ----
##-- ==> Define data, use random,
##-- or do help(data=index) for the standard data sets.
## The function is currently defined as
function (x, y)
{
qx <- qr(x)
coef <- solve.qr(qx, y)
df <- nrow(x) - ncol(x)
sigma2 <- sum((y - x \%*\% coef)^2)/df
vcov <- sigma2 * chol2inv(qx$qr)
colnames(vcov) <- rownames(vcov) <- colnames(x)
list(coefficients = coef, vcov = vcov, sigma = sqrt(sigma2),
df = df)
}
}
% Add one or more standard keywords, see file 'KEYWORDS' in the
% R documentation directory.
\keyword{ ~kwd1 }
\keyword{ ~kwd2 }% __ONLY ONE__ keyword per line

2)linmod-package.Rd
\name{linmod-package}
\Rdversion{1.1}
\alias{linmod-package}
\alias{linmod}
\docType{package}
\title{Linear Regression Modification}
\description{to Give the more exactly output of linear regression rather than R default}
\details{
\tabular{ll}{
Package: \tab linmod\cr
Type: \tab Package\cr
Version: \tab 1.0\cr
Date: \tab 2009-07-20\cr
License: \tab GNU 2.0 or later\cr
LazyLoad: \tab yes\cr
}
~~The aim of the package was to give the more exactly output of linear regression~~ linmod~~
}
\author{helixcn
Maintainer: helixcn <[email protected]>}
\references{
Friedrich Leisch,2008,Creating R Packages: A Tutorial
}
\seealso{lm}
\examples{
data(cats, package="MASS")
mod1 <- linmod(Hwt~Bwt*Sex, data=cats)
mod1
summary(mod1)
}

四 通過cmd創建R包

開始>運行>cmd
鍵入 cd c:\pa\ 將工作目錄轉移到c:/pa下

鍵入 Rcmd build --binary linmod 製作window zip包
鍵入 Rcmd build linmod 製作linux平台下可運行的tar.gz包
命令運行完之後可以發現,在c:/pa/文件夾下分別生成了linmod.zip和linmod.tar.gz壓縮包。

注意R CMD 系列命令是在windows控制台下運行,而非R控制台

參考網址
[1]http://www.robjhyndman.com/researchtips/building-r-packages-for-windows/
[2]http://cran.r-project.org/doc/contrib/Leisch-CreatingPackages.pdf
[3]http://faculty.chicagobooth.e/peter.rossi/research/bayes%20book/bayesm/Making%20R%20Packages%20Under%20Windows.pdf
[4]http://www.biostat.uni-hannover.de/teaching/fallstudien/schaarschmidt2.pdf

閱讀全文

與cmd怎麼編譯fortran相關的資料

熱點內容
php卡死源碼 瀏覽:574
time庫中的clock函數python 瀏覽:989
cad視覺移動命令怎麼打開 瀏覽:821
安卓java調用python 瀏覽:395
java標准時間 瀏覽:137
華為伺服器湖北渠道商雲主機 瀏覽:30
韓式面部護理解壓視頻 瀏覽:301
pdf換成jpg圖片 瀏覽:897
dh加密演算法 瀏覽:107
安卓手機如何隱藏微信信息提示 瀏覽:632
nodejs解壓縮 瀏覽:262
直流雙轉子壓縮機 瀏覽:952
pythonxmlstring 瀏覽:822
用私鑰加密之後可以用公鑰解密 瀏覽:788
ug如何啟動伺服器 瀏覽:444
csgo防抖動命令 瀏覽:960
如何弄到手機app頁面的源碼 瀏覽:441
androidwindows7破解版 瀏覽:363
解壓視頻動畫怎麼拍 瀏覽:748
連漲啟動源碼 瀏覽:163