Instalando a suite Free PGI no OS X (e mais um pouco)

Esta semana a Portland Group – empresa desenvolvera de compiladores fortran e C (e outros produtos), lançou uma versão gratuita de seus compiladores para o OS X (exceto o compilador C++). Infelizmente, uma versão gratuita ainda não parece estar disponível para o Linux ou Windows. A instalação é bastante simples e direta: basta abrir uma imagem DMG e arrastar o aplicativo para a pasta Applications do OS X. Mas acontece que a utilização dos compiladores fica restrita apenas ao Terminal.app! Isto significa dizer que, caso você utilize outro emulador de terminal, como o iTerm2.app, você simplesmente não consegue invocar os compiladores! Isto acontece porque para utilizar os compiladores, você não deve abrir o Terminal.app, mas você precisa clicar no ícone do programa instalado (Free PGI.app) e aí sim ele abre um terminal e então os compiladores podem ser utilizados. Mas que bobagem…

Continuar lendo

Erro: no such instruction: `vzeroupper’ do PGF90 12.8-1

Recentemente instalei a versão trial do compilador fortran do Portland Group (PGI) para compilar um pacote. No primeiro teste (com um programa Hello World), ocorreu o seguinte erro:

$ pgf90 teste.f90
NOTE: your trial license will expire in 14 days, 0.939 hours.
NOTE: your trial license will expire in 14 days, 0.939 hours.
teste.f90:74:no such instruction: `vzeroupper'
teste.f90:83:no such instruction: `vzeroupper'
teste.f90:90:no such instruction: `vzeroupper'
teste.f90:97:no such instruction: `vzeroupper'
teste.f90:101:no such instruction: `vzeroupper'
teste.f90:107:no such instruction: `vzeroupper'
teste.f90:234:no such instruction: `vzeroupper'

O que é muito estranho, pois o programa hello world contém apenas uma instrução para imprimir uma linha na tela. Dando uma olhada aqui e alí, encontrei a solução aqui, e a sugestão foi acrescentar a opção  “-tp=nehalem-64” na compilação:

$ pgf90 -tp=nehalem-64 teste.f90
NOTE: your trial license will expire in 14 days, 0.901 hours.
NOTE: your trial license will expire in 14 days, 0.901 hours.

Ou seja, o “a.out” (programa compilado) foi criado e funciona sem problemas. Este problema pode afetar máquinas Linux ou Mac OS X com processador Intel, especialmente com o chip SandyBridge. Meu Macbook Pro é de 2011 e tem processador Intel com chip Sandybridge e a Apple não atualizou (ainda…) o Xcode (que fornece acesso a algumas instruções básicas do processador) para suportar as instruções AVX presentes a partir dos chips SandyBridge (o que é ridículo, pois já temos os novos chips IvyBridge…). Então, esta solução força o compilador a interpretar o chip como um modelo mais antigo, ou mais ou menos isso 🙂

Referência:

http://www.pgroup.com/userforum/viewtopic.php?t=2794&sid=3fb09a8305d263e7694c5c20887035b8