ActiveDelphi - Índice do Fórum ActiveDelphi
.: O site do programador Delphi! :.
 
 FAQFAQ   PesquisarPesquisar   MembrosMembros   GruposGrupos   RegistrarRegistrar 
 PerfilPerfil   Entrar e ver Mensagens ParticularesEntrar e ver Mensagens Particulares   EntrarEntrar 

i7 - Nucleos
Ir à página 1, 2  Próximo
 
Novo Tópico   Responder Mensagem    ActiveDelphi - Índice do Fórum -> Off-Topic
Exibir mensagem anterior :: Exibir próxima mensagem  
Autor Mensagem
shawdown
Profissional
Profissional


Registrado: Segunda-Feira, 1 de Outubro de 2007
Mensagens: 546
Localização: Goiania-GO

MensagemEnviada: Ter Jan 11, 2011 11:27 am    Assunto: i7 - Nucleos Responder com Citação

Ola pessoal alguem sabe se tem como na hora de compilar usar todos nucleos do meu PC?

To usando D7

mas na hora que mando compilar usa somente 1 nucleo. todos outros ficam em 0%.
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular MSN Messenger
faccruz
Colaborador
Colaborador


Registrado: Terça-Feira, 20 de Julho de 2010
Mensagens: 1563

MensagemEnviada: Ter Jan 11, 2011 11:29 am    Assunto: Responder com Citação

Posso estar enganado, mas quem se encarrega de distribuir os processos entre os nucleos é o próprio computador e não o sistema ou usuário
_________________
Facc System - Sistemas para Computador
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular Visitar a homepage do Usuário
shawdown
Profissional
Profissional


Registrado: Segunda-Feira, 1 de Outubro de 2007
Mensagens: 546
Localização: Goiania-GO

MensagemEnviada: Ter Jan 11, 2011 11:58 am    Assunto: Responder com Citação

faccruz escreveu:
Posso estar enganado, mas quem se encarrega de distribuir os processos entre os nucleos é o próprio computador e não o sistema ou usuário


Concordo contigo, hj utilizo p/ desenvolvimento no escritorio windows XP que creio não dar suporte a isto, essa pergunta e pq to querendo instalar o seven que creio suportar isso.

Alguem aqui desenvolve utilizando seven?
Caso sim quando manda compilar ele consegue utilizar todos nucleos?
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular MSN Messenger
rvercesi
Mestre
Mestre


Registrado: Segunda-Feira, 29 de Novembro de 2010
Mensagens: 912
Localização: Curitiba / PR

MensagemEnviada: Ter Jan 11, 2011 1:40 pm    Assunto: Responder com Citação

Uso o Win7 e os quatro nucleos do meu AMD X4 funcionam normalmente!

Pelo menos no desempenho aparece ele utilizando os 4 nucleos.

Mas, em casa tenho o WinXP com o mesmo processador e aparentemente todos os nucleos são usados!

É que o processamento na hora de compilar e linkeditar é pequeno! Não chega a causar grande movimento no desenpenho da CPU.
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular MSN Messenger
faccruz
Colaborador
Colaborador


Registrado: Terça-Feira, 20 de Julho de 2010
Mensagens: 1563

MensagemEnviada: Ter Jan 11, 2011 1:48 pm    Assunto: Responder com Citação

Eu utilizo um Dual Core com W7 e Delphi 2010, se compilo o programa, ele utiliza apenas um nucleo, porem se abro o photoshop (e peço pra fazer algum processo( e mando compilar, ele utiliza os 2 nucleos.
_________________
Facc System - Sistemas para Computador
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular Visitar a homepage do Usuário
weberdamasio
Experiente
Experiente


Registrado: Sábado, 19 de Julho de 2003
Mensagens: 420
Localização: Maringá - PR

MensagemEnviada: Ter Jan 11, 2011 4:29 pm    Assunto: Responder com Citação

A rotina de compilação é um único processo por isto que usa apenas um núcleo.

No Delphi, pelo menos até o D2010 (não sei o XE), a compilação é um processo apenas, então vai usar apenas um núcleo.
Nos seus aplicativos a forma de usar mais de um núcleo é trabalhar com diversas threads diferentes, se o SO der suporte suas threads podem vir a rodar em núcleos diferentes. Digo "pode" porque nunca fiz o teste.
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
shawdown
Profissional
Profissional


Registrado: Segunda-Feira, 1 de Outubro de 2007
Mensagens: 546
Localização: Goiania-GO

MensagemEnviada: Ter Jan 11, 2011 4:46 pm    Assunto: Responder com Citação

weberdamasio escreveu:
A rotina de compilação é um único processo por isto que usa apenas um núcleo.

No Delphi, pelo menos até o D2010 (não sei o XE), a compilação é um processo apenas, então vai usar apenas um núcleo.
Nos seus aplicativos a forma de usar mais de um núcleo é trabalhar com diversas threads diferentes, se o SO der suporte suas threads podem vir a rodar em núcleos diferentes. Digo "pode" porque nunca fiz o teste.




Então weber ai e o ponto que queria chegar.

Eu queria saber se o Windows Seven consegue linkar um unico processo a todos nucleos a pergunta e pq em minha casa um Dual Core compilou o acbr + rapido q um i7 no escritorio sem falar q a frequencia do PC la de casa e 2.2x e o daqui e 2.9x

Dai pintou a duvida se no Win7 a compilação pega todos nucleos..
pq para quem tem projetos grandes a compilação pode ser um problema.

Bom vou testar este final de semana ai posto o resultado.
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular MSN Messenger
weberdamasio
Experiente
Experiente


Registrado: Sábado, 19 de Julho de 2003
Mensagens: 420
Localização: Maringá - PR

MensagemEnviada: Qua Jan 12, 2011 10:24 am    Assunto: Responder com Citação

Acho que o windows não divide um único processo para vários núcleos. Não sei dizer se é possível ou não dividir um processo só acho que o windows não faz isto.

A vantagem de vários núcleos é que os processos possam rodar sem dependência de outras, veja que mesmo compilando um projeto grande seu windows e outros aplicativos não travam, a idéia é justamente esta.

Aplicativos de efeito 3D normalmente usam processos diferentes, jogos novos e software de desenho novos fazem uso disto. Veja que enquanto o Dephi funcione igual em um I7 e um DualCore um jogo é infinitamente mais veloz no I7.

Não entendo muito deste assunto, mas pelo pouco que li o caminho é separar os processos.
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
weberdamasio
Experiente
Experiente


Registrado: Sábado, 19 de Julho de 2003
Mensagens: 420
Localização: Maringá - PR

MensagemEnviada: Qua Jan 12, 2011 3:44 pm    Assunto: Responder com Citação

Fiz um teste simples usando Win XP e também Win 2003.
Ambos o sistema operacional gerencia corretamente as threads fazendo com que eu consiga usar 100% dos núcleos.
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
shawdown
Profissional
Profissional


Registrado: Segunda-Feira, 1 de Outubro de 2007
Mensagens: 546
Localização: Goiania-GO

MensagemEnviada: Qua Jan 12, 2011 4:07 pm    Assunto: Responder com Citação

weberdamasio escreveu:
Fiz um teste simples usando Win XP e também Win 2003.
Ambos o sistema operacional gerencia corretamente as threads fazendo com que eu consiga usar 100% dos núcleos.


qual versão do delphi vc esta utilizando Weber pq no XP com D7 ele utiliza somente 1 nucleo.
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular MSN Messenger
weberdamasio
Experiente
Experiente


Registrado: Sábado, 19 de Julho de 2003
Mensagens: 420
Localização: Maringá - PR

MensagemEnviada: Qua Jan 12, 2011 4:12 pm    Assunto: Responder com Citação

D2007.

PAS
Código:

unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;

type
  TMyThread = class(TThread)
    Stop: Boolean;
    procedure Execute; override;
  end;
  TForm1 = class(TForm)
    Button1: TButton;
    Button2: TButton;
    Button3: TButton;
    Button4: TButton;
    Button5: TButton;
    Button6: TButton;
    Button7: TButton;
    Button8: TButton;
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
    procedure Button4Click(Sender: TObject);
    procedure Button3Click(Sender: TObject);
    procedure Button6Click(Sender: TObject);
    procedure Button5Click(Sender: TObject);
    procedure Button7Click(Sender: TObject);
    procedure Button8Click(Sender: TObject);
    procedure FormCreate(Sender: TObject);
    procedure FormDestroy(Sender: TObject);
  private
    T1, T2, T3, T4: TMyThread;
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
begin
  T1.Stop := False;
  T1.Resume;
end;

{ MyThread }

procedure TMyThread.Execute;
begin
  inherited;
  while True do
    if Stop then
      Break;
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
  T2.Stop := False;
  T2.Resume;
end;

procedure TForm1.Button3Click(Sender: TObject);
begin
  T2.Stop := True;
end;

procedure TForm1.Button4Click(Sender: TObject);
begin
  T1.Stop := True;
end;

procedure TForm1.Button5Click(Sender: TObject);
begin
  T3.Stop := True;
end;

procedure TForm1.Button6Click(Sender: TObject);
begin
  T3.Stop := False;
  T3.Resume;
end;

procedure TForm1.Button7Click(Sender: TObject);
begin
  T4.Stop := True;
end;

procedure TForm1.Button8Click(Sender: TObject);
begin
  T4.Stop := False;
  T4.Resume;
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
  T1 := TMyThread.Create(True);
  T2 := TMyThread.Create(True);
  T3 := TMyThread.Create(True);
  T4 := TMyThread.Create(True);
end;

procedure TForm1.FormDestroy(Sender: TObject);
begin
  FreeAndNil(T1);
  FreeAndNil(T2);
  FreeAndNil(T3);
  FreeAndNil(T4);
end;

end.



DFM
Código:

object Form1: TForm1
  Left = 0
  Top = 0
  Caption = 'Form1'
  ClientHeight = 71
  ClientWidth = 336
  Color = clBtnFace
  Font.Charset = DEFAULT_CHARSET
  Font.Color = clWindowText
  Font.Height = -11
  Font.Name = 'Tahoma'
  Font.Style = []
  OldCreateOrder = False
  OnCreate = FormCreate
  OnDestroy = FormDestroy
  PixelsPerInch = 96
  TextHeight = 13
  object Button1: TButton
    Left = 8
    Top = 8
    Width = 75
    Height = 25
    Caption = 'Thread 1'
    TabOrder = 0
    OnClick = Button1Click
  end
  object Button2: TButton
    Left = 88
    Top = 8
    Width = 75
    Height = 25
    Caption = 'Thread 2'
    TabOrder = 1
    OnClick = Button2Click
  end
  object Button3: TButton
    Left = 88
    Top = 34
    Width = 75
    Height = 25
    Caption = 'Stop 2'
    TabOrder = 2
    OnClick = Button3Click
  end
  object Button4: TButton
    Left = 8
    Top = 34
    Width = 75
    Height = 25
    Caption = 'Stop 1'
    TabOrder = 3
    OnClick = Button4Click
  end
  object Button5: TButton
    Left = 168
    Top = 34
    Width = 75
    Height = 25
    Caption = 'Stop 3'
    TabOrder = 4
    OnClick = Button5Click
  end
  object Button6: TButton
    Left = 168
    Top = 8
    Width = 75
    Height = 25
    Caption = 'Thread 3'
    TabOrder = 5
    OnClick = Button6Click
  end
  object Button7: TButton
    Left = 248
    Top = 34
    Width = 75
    Height = 25
    Caption = 'Stop 4'
    TabOrder = 6
    OnClick = Button7Click
  end
  object Button8: TButton
    Left = 248
    Top = 8
    Width = 75
    Height = 25
    Caption = 'Thread 4'
    TabOrder = 7
    OnClick = Button8Click
  end
end
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
shawdown
Profissional
Profissional


Registrado: Segunda-Feira, 1 de Outubro de 2007
Mensagens: 546
Localização: Goiania-GO

MensagemEnviada: Qua Jan 12, 2011 4:25 pm    Assunto: Responder com Citação

Weber ou eu entendi errado seu codigo ou vc não entendeu a duvida principal do post.

Tipo sei que se fizer varias threads em um projeto do delphi vc vai conseguir atingir outros nucleos ate mesmo pq essa seria a logica, o problema consiste no seguinte quando vc tem um projeto muito grande ai vc da um ctrl+F9 p/ compilar o projeto esta ação utiliza somente 1 nucleo.

Acredito eu que a utilização de somente 1 nucleo e pq o proprio compilador do delphi não da suporte a isso.

Para ver o que estamos falando basta vc colocar um projeto "de preferencia grande" que demore alguns segundos p/ compilar e veja no gerenciador do windows que vai utilizar somente 1 nucleo.
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular MSN Messenger
weberdamasio
Experiente
Experiente


Registrado: Sábado, 19 de Julho de 2003
Mensagens: 420
Localização: Maringá - PR

MensagemEnviada: Qui Jan 13, 2011 6:52 am    Assunto: Responder com Citação

Eu entendi o post coloque o código apenas para provar a teoria.
Não é que o IDE não dê suporte a múltiplos núcleos é que o ato de compilar é um processo apenas, é como se fosse uma thread fazendo a compilação.
Se não me engano com Delphi XE é possível compilar em segundo plano (não tenho certeza). Compilando em segundo plano então você verá que o processo compilar vai usar um núcleo enquanto que a IDE irá utilizar outro núcleo.
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
shawdown
Profissional
Profissional


Registrado: Segunda-Feira, 1 de Outubro de 2007
Mensagens: 546
Localização: Goiania-GO

MensagemEnviada: Sex Jan 28, 2011 3:20 pm    Assunto: Responder com Citação

No Delphi XE alguem sabe me falar se o processo de compilação consegue utilizar + de 1 nucleo?
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular MSN Messenger
faccruz
Colaborador
Colaborador


Registrado: Terça-Feira, 20 de Julho de 2010
Mensagens: 1563

MensagemEnviada: Sex Jan 28, 2011 3:33 pm    Assunto: Responder com Citação

Acho que quem se encarrega de distribuir entre os nucleos é o proprio processador
_________________
Facc System - Sistemas para Computador
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular Visitar a homepage do Usuário
Mostrar os tópicos anteriores:   
Novo Tópico   Responder Mensagem    ActiveDelphi - Índice do Fórum -> Off-Topic Todos os horários são GMT - 3 Horas
Ir à página 1, 2  Próximo
Página 1 de 2

 
Ir para:  
Enviar Mensagens Novas: Proibido.
Responder Tópicos Proibido
Editar Mensagens: Proibido.
Excluir Mensagens: Proibido.
Votar em Enquetes: Proibido.


Powered by phpBB © 2001, 2005 phpBB Group
Traduzido por: Suporte phpBB