Exibir mensagem anterior :: Exibir próxima mensagem |
Autor |
Mensagem |
shawdown Profissional

Registrado: Segunda-Feira, 1 de Outubro de 2007 Mensagens: 546 Localização: Goiania-GO
|
Enviada: Ter Jan 11, 2011 11:27 am Assunto: i7 - Nucleos |
|
|
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 |
|
 |
faccruz Colaborador

Registrado: Terça-Feira, 20 de Julho de 2010 Mensagens: 1563
|
Enviada: Ter Jan 11, 2011 11:29 am Assunto: |
|
|
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 |
|
 |
shawdown Profissional

Registrado: Segunda-Feira, 1 de Outubro de 2007 Mensagens: 546 Localização: Goiania-GO
|
Enviada: Ter Jan 11, 2011 11:58 am Assunto: |
|
|
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 |
|
 |
rvercesi Mestre


Registrado: Segunda-Feira, 29 de Novembro de 2010 Mensagens: 912 Localização: Curitiba / PR
|
Enviada: Ter Jan 11, 2011 1:40 pm Assunto: |
|
|
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 |
|
 |
faccruz Colaborador

Registrado: Terça-Feira, 20 de Julho de 2010 Mensagens: 1563
|
Enviada: Ter Jan 11, 2011 1:48 pm Assunto: |
|
|
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 |
|
 |
weberdamasio Experiente


Registrado: Sábado, 19 de Julho de 2003 Mensagens: 420 Localização: Maringá - PR
|
Enviada: Ter Jan 11, 2011 4:29 pm Assunto: |
|
|
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 |
|
 |
shawdown Profissional

Registrado: Segunda-Feira, 1 de Outubro de 2007 Mensagens: 546 Localização: Goiania-GO
|
Enviada: Ter Jan 11, 2011 4:46 pm Assunto: |
|
|
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 |
|
 |
weberdamasio Experiente


Registrado: Sábado, 19 de Julho de 2003 Mensagens: 420 Localização: Maringá - PR
|
Enviada: Qua Jan 12, 2011 10:24 am Assunto: |
|
|
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 |
|
 |
weberdamasio Experiente


Registrado: Sábado, 19 de Julho de 2003 Mensagens: 420 Localização: Maringá - PR
|
Enviada: Qua Jan 12, 2011 3:44 pm Assunto: |
|
|
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 |
|
 |
shawdown Profissional

Registrado: Segunda-Feira, 1 de Outubro de 2007 Mensagens: 546 Localização: Goiania-GO
|
Enviada: Qua Jan 12, 2011 4:07 pm Assunto: |
|
|
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 |
|
 |
weberdamasio Experiente


Registrado: Sábado, 19 de Julho de 2003 Mensagens: 420 Localização: Maringá - PR
|
Enviada: Qua Jan 12, 2011 4:12 pm Assunto: |
|
|
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 |
|
 |
shawdown Profissional

Registrado: Segunda-Feira, 1 de Outubro de 2007 Mensagens: 546 Localização: Goiania-GO
|
Enviada: Qua Jan 12, 2011 4:25 pm Assunto: |
|
|
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 |
|
 |
weberdamasio Experiente


Registrado: Sábado, 19 de Julho de 2003 Mensagens: 420 Localização: Maringá - PR
|
Enviada: Qui Jan 13, 2011 6:52 am Assunto: |
|
|
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 |
|
 |
shawdown Profissional

Registrado: Segunda-Feira, 1 de Outubro de 2007 Mensagens: 546 Localização: Goiania-GO
|
Enviada: Sex Jan 28, 2011 3:20 pm Assunto: |
|
|
No Delphi XE alguem sabe me falar se o processo de compilação consegue utilizar + de 1 nucleo? |
|
Voltar ao Topo |
|
 |
faccruz Colaborador

Registrado: Terça-Feira, 20 de Julho de 2010 Mensagens: 1563
|
Enviada: Sex Jan 28, 2011 3:33 pm Assunto: |
|
|
Acho que quem se encarrega de distribuir entre os nucleos é o proprio processador _________________ Facc System - Sistemas para Computador |
|
Voltar ao Topo |
|
 |
|