Responder 
 
Avaliação do Tópico:
  • 0 Votos - 0 Média
  • 1
  • 2
  • 3
  • 4
  • 5
Erro no output de programa !!!
10/02/2012, 14:16
Resposta: #1
Erro no output de programa !!!
Boa tarde tenho um problema que gostaria de compartilhar com todos. Sou acadêmico e trabalho com um programa que tem como código fonte fortran 90. Este programa foi feito e compilado para rodar em máquinas com 32 bits os output do programa nestas configurações são confiáveis. Fizemos um upgrade e compramos máquinas mais potentes com barramentos de 64 bits, fiz todas as configurações necessárias instalei o debian 64 bits o compilador para o programa tudo certo. Teoricamente o programa está rodando tudo certo, porém quando vou comparar resultados específicos de um sistema, o output do programa novo não bate com o antigo. Quando fiz a compilação não alterei o código fonte. Creio que na hora da escrita no arquivo.dat esteja esquecendo algo devido ao fato do programa ser 32 bits e o PC 64 bits. Alguém pode ajudar !!!!

Desde já agradeço !!!!
Encontrar todas as respostas deste usuário
Citar esta mensagem em uma resposta
10/02/2012, 15:06
Resposta: #2
RE: Erro no output de programa !!!
Você vai ter que ser mais especifico em relação ao problema que você esta tendo pos como postou não vai ter como te ajudar por exemplo qual a diferencia entre o velho e novoe que resutados são estes

Jvianez
Todo Cristão é Livre use Linux e não seja Pirata.
Encontrar todas as respostas deste usuário
Citar esta mensagem em uma resposta
10/02/2012, 23:47
Resposta: #3
RE: Erro no output de programa !!!
Desculpe !!! Deixa eu ser mais específico. A saída do programa me dar uma tabela com vários números. Analiso um caso específico de sistema e ponho para rodar. O meu programa foi compilado numa máquina de 32 bits, nesta máquina (32bits) o output ( os números da minha tabela são confiáveis). Agora quero rodar o mesmo programa e o mesmo sistema, numa máquina de 64 bits, fiz todas as configurações, porém a saída do programa (output), ou seja a tabela, esta me mostrando todos os elementos zero. Que deveria dar o "mesmo" resultado da saída do PC de 32 bits. O código fonte do programa é fortran 90, não fiz nenhuma mudança no código. Espero ter esclarecido !!!! Agradeço a ajuda !!!
Encontrar todas as respostas deste usuário
Citar esta mensagem em uma resposta
11/02/2012, 02:11
Resposta: #4
RE: Erro no output de programa !!!
O programa é de código aberto?
Pode posta-lo?
Eu não entendo nada de Fortran, mas talvez um colega ajude você.

Não existe maneira de saber o que está errado sem ver o que você fez, e como fez, nem sequer o resultado do que fez, concorda?

Só um conselho, procure separar seu texto em blocos, isso ajuda muito na hora que outra pessoa ler e te ajuda tambem até na hora de escrever.

Só uma opinião.
Um abraço.

ANTES DE PERGUNTAR QUALQUER COISA -> http://www.istf.com.br/perguntas/
Visitar o website do usuário Encontrar todas as respostas deste usuário
Citar esta mensagem em uma resposta
12/02/2012, 08:33
Resposta: #5
RE: Erro no output de programa !!!
Obrigado pela dica. Infelizmente não posso ser mais específico e o programa não é de código aberto. Valeu !!!
Encontrar todas as respostas deste usuário
Citar esta mensagem em uma resposta
12/02/2012, 09:29
Resposta: #6
RE: Erro no output de programa !!!
Bom li pouco acho que sei aonde está o problema. Em programas em C por exemplo um inteiro comum não tem diferença de tamanho entre 32 e 64 bits.

Exemplo:
Código:
#include <stdio.h>

int main()
{
  printf("Tamanho do Inteiro: %d\n", sizeof(int)*8);
  return 0;
}
Citar:$ gcc -m32 c.c -o c
$ file c
c: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.18, not stripped
$ ./c
Tamanho do Inteiro: 32
$ gcc -m64 c.c -o c
$ file c
c: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.18, not stripped
$ ./c
Tamanho do Inteiro: 32
$

A coisa muda de figura com o long int:
Código:
#include <stdio.h>

int main()
{
  printf("Tamanho do Long Int: %d\n", sizeof(long int)*8);
  return 0;
}
Citar:$ gcc -m32 c.c -o c
$ ./c
Tamanho do Long Int: 32
$ gcc -m64 c.c -o c
$ ./c
Tamanho do Long Int: 64
$

E long long int?
Código:
#include <stdio.h>

int main()
{
  printf("Tamanho do Long Long Int: %d\n", sizeof(long long int)*8);
  return 0;
}
Citar:$ gcc -m32 c.c -o c
$ ./c
Tamanho do Long Long Int: 64
$ gcc -m64 c.c -o c
$ ./c
Tamanho do Long Long Int: 64
$

Algumas linguagens de programação como C oferecem tipos de dado de tamanho fixo que não mudam, mas note que nesses exemplos apesar de não ocorrem mudanças no int e no long long int não é seguro usa-los por que não da para predizer que sempre terão 32 e 64 bits, pode ser que em outras arquiteturas ocorram mudanças no tamanho(se não existir algum tipo de padronização de que int sempre tenha 32 bits).

Você pode tentar continuar compilando os programas para 32 bits e rodá-los em sistemas de 64 instalando as bibliotecas de 32 do debian(ia32-libs ia32-libs-gtk, não sei se elas atendem alguma necessidade especial de fortran), você pode tentar buscar algum parâmetro, se existir, no seu compilador para manter o tamanho dos tipos de dados que você está utilizando ou você pode consertar o código do programa para usar tipos de dados de tamanho fixo independente da arquitetura ou usar tipos de dados cujo tamanho pelo menos não varie entre 32 e 64 bits dos processadores AMD/Intel(um programador C por exemplo poderia nessa situação usar int e long long int e evitar long int).
Encontrar todas as respostas deste usuário
Citar esta mensagem em uma resposta
13/02/2012, 07:48
Resposta: #7
RE: Erro no output de programa !!!
Muito obrigado pela dica, vou estudar a sua resposta. Valeu mesmo e qualquer coisa entro em contato.
Encontrar todas as respostas deste usuário
Citar esta mensagem em uma resposta
Responder 


Ir ao Fórum:


Usuários visualizando este tópico: 1 Visitantes

Entre em Contato | Fórum Debian | Voltar ao Topo | Voltar ao Conteúdo | Modo Leve (Arquivo) | Feeds RSS