GNU Fortran体系结构依赖编译器选项

时间:2016-03-18 12:20:16

标签: performance compilation fortran gnu

是否有GNU Fortran编译器(v5.3.0)选项来调整特定架构的代码?我对英特尔酷睿i7特别感兴趣。我在GNU Fortran 5.3.0 Option Summary的官方选项摘要中找不到与代码调整相关的任何内容。我记得过去曾经有一个选项-march=...。谢谢。

修改

我找到了cat /proc/cpuinfo的处理器架构,并访问了Intel CPU Specifications website,发现我有Sandy Bridge CPU。在我的例子中,正确的GNU选项是-march=sandybridge

3 个答案:

答案 0 :(得分:2)

i7不是架构,SandyBridge,IvyBridge,Haswell以及类似的Intel CPU架构。所有这些架构都可以销售i3,i5,i7或Xeon。

您可以拥有两个i7 CPU,一个较旧,另一个较新,可以使用不同的架构。

在GCC(C,C ++,Fortran的整个套件......)中有选项-march-mtune(参见https://gcc.gnu.org/onlinedocs/gcc/x86-Options.html#x86-Options)使用march编译代码将仅在指定的体系结构上运行且更新。对于mtune,它将在较旧的版本上运行,但会以某种方式针对指定的版本进行优化。

您可以使用native,编译器将使用当前CPU的架构。或者,您可以手动指定一些体系结构,例如-march=haswell-march=ivybridge-march=core-avx-i

请注意,您需要最新版本的编译器来优化新的CPU架构。

答案 1 :(得分:1)

我认为-march = native不起作用?

编辑:用gcc 5.3尝试了hello world,它确实用选项编译,但不知道,如果它改进了。

答案 2 :(得分:1)

您要查找的所有信息都在 if($_SERVER['REQUEST_METHOD']=='POST'){ $name = trim($_POST['name']); $contact= trim($_POST['contact']); $email = trim($_POST['email']); if(!empty($name) && !empty($contact) && !empty($email)){ try { $conn = new PDO("mysql::host='localhost';dbname=majorproject;",'root',''); //for error reporting and throwing exceptions $conn->setAttribute(PDO::ATTR_ERRMODE,PDO::ERRMODE_EXCEPTION); $stmt = $conn->prepare("insert into #_customerdata(customername,customercontact,customeremail) values(:name,:contact,:email)"); $stmt->bindParam(':name',$name,PDO::PARAM_STR); $stmt->bindParam(':contact',$contact,PDO::PARAM_INT); $stmt->bindParam(':email',$email,PDO::PARAM_STR); if($stmt->execute()){ header('location: ../customersignup.php?status=success'); } else{ header('location: ../customersignup.php?status=failed'); } } catch (PDOException $e) { echo 'CONNECTION NOT ESTABLISHED '.$e; } } } 的手册页中,而不在gcc的手册页中:

gfortran