Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 31-10-2011
Anel Hernandez Anel Hernandez is offline
Miembro
 
Registrado: mar 2005
Posts: 94
Poder: 20
Anel Hernandez Va por buen camino
Mandar a ejecutar programas en micros diferentes?

Hola,

estoy mandando a ejecutar un programa de calculo compilado en Fortran de esta manera.

Código Delphi [-]
var
  Info:TShellExecuteInfo;
begin
  with Info do begin
   cbSize := SizeOf(ShellExecuteInfo);
   fMask := SEE_MASK_NOCLOSEPROCESS;
   Wnd := Handle;
   lpVerb := 'open';
   lpFile := PChar('C:\Archivos de programa\programa\programa.exe');
   lpParameters := PChar('D:\programa.inp');
   lpDirectory := PChar('D:\');
   nShow := SW_SHOW;
  end;
  ShellExecuteEx(@INFO);

trabaja perfectamente. Pero debo hacerlo en numerosas ocasiones y he comprobado que solo trabaja con uno de los microprocesadores (mi PC tiene 2). He visto que algunas GUI permiten mandar a correr programas simultaneamente en diferentes micros.

Como?

gracias

Última edición por Casimiro Notevi fecha: 31-10-2011 a las 20:33:19.
Responder Con Cita
  #2  
Antiguo 31-10-2011
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.042
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Haz una búsqueda por "Thread".

Por cierto, recuerda poner etiquetas al código, por ejemplo:




Verás que se muestra mucho mejor, te he modificado el que has puesto antes.
Responder Con Cita
  #3  
Antiguo 31-10-2011
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Poder: 36
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
Hola Anel.

Primeramente hay que asegurarse que el S.O. esté soportando su uso, en Windows:
  • Inicio -> Ejecutar -> MsConfig + Intro.
  • Pestaña arranque -> botón Opciones avanzadas -> Seleccionar número de procesadores (2/n) -> Aceptar -> Aceptar -> reiniciar.

También revisá estos enlaces:
Un saludo.
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....

Última edición por ecfisa fecha: 01-11-2011 a las 01:28:00. Razón: Corregir error de tipeo, soportado -> soportando
Responder Con Cita
  #4  
Antiguo 02-11-2011
Anel Hernandez Anel Hernandez is offline
Miembro
 
Registrado: mar 2005
Posts: 94
Poder: 20
Anel Hernandez Va por buen camino
Hola,

ya hice las comprobaciones recomendadas y lei los temas sugeridos. pero mi duda no es sobre la simultaneidad, es sobre como decirle a programa que ejecute programa1.inp en el micro1 (por llamarlo de alguna manera) y programa2.inp en el otro micro?

o windows lo distribuye a su conveniencia?

saludos y gracias
Responder Con Cita
  #5  
Antiguo 02-11-2011
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Poder: 36
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
Hola.

Según entiendo, es el planificador de trabajos (Job Scheduler) del S.O. quién decide a qué procesador asignar el proceso que tiene que ser ejecutado mediante el Dispatcher.

Al menos yo, no conozco procedimiento, función o código Delphi que pueda tomar o alterar esa decisión.

Un saludo.
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....
Responder Con Cita
  #6  
Antiguo 02-11-2011
Anel Hernandez Anel Hernandez is offline
Miembro
 
Registrado: mar 2005
Posts: 94
Poder: 20
Anel Hernandez Va por buen camino
ok, gracias.

con que funcion desde Delphi puedo saber la cantidad de nucleos que tiene el micro? alguna de la API? como puedo saber el numero de procesadores que tiene asignado windows? eso que verificamos arriba con el MsConfig?

gracias
Responder Con Cita
  #7  
Antiguo 02-11-2011
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Poder: 36
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
Hola Anel.

Para obtener los datos del procesador usando el registro de windows:
Código Delphi [-]
uses Registry;

function DatosProcesador: TStrings;
const
   CPUKEY = '\HARDWARE\DESCRIPTION\System\CentralProcessor';
var
  i: Integer;
  TS1: TStrings;
begin
  TS1:= TStringList.Create;
  try
    with TRegistry.Create do
    try
      RootKey:= HKEY_LOCAL_MACHINE;
      if OpenKey(CPUKEY, False) then
      begin
        GetKeyNames(TS1);
        Result:= TStringList.Create;
        for i:= 0 to TS1.Count -1 do
          if OpenKey(CPUKEY + '\' + TS1[i], False) then
          begin
            Result.Add('Núcleo: '+IntToStr(i));
            Result.Add('Nombre: '+ReadString('ProcessorNameString'));
            Result.Add('Identificador: '+ReadString('Identifier'));
            Result.Add('Fabricante: '+ReadString('VendorIdentifier'));
            Result.Add('Velocidad Mhz: '+IntToStr(ReadInteger('~Mhz')));
            Result.Add(' ');
          end;
      end;
    finally
      Free;
    end;
  finally
    TS1.Free;
  end;
end;

Llamada de ejemplo:
Código Delphi [-]
  ListBox1.Items:= DatosProcesador;

Un saludo.
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....
Responder Con Cita
  #8  
Antiguo 03-11-2011
Anel Hernandez Anel Hernandez is offline
Miembro
 
Registrado: mar 2005
Posts: 94
Poder: 20
Anel Hernandez Va por buen camino
Hola, gracias

Hice los cambios en el Msconfig sugeridos arriba y resulta que cuando mando 2 procesos con ese cambia el calculo demora el doble de lo que demoraba antes.

saludos
Responder Con Cita
  #9  
Antiguo 03-11-2011
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Poder: 36
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
Hola Anel.

Es un comportamiento bastante atípico...

Pero, al estar involucrado un lenguaje (Fortran) que desconozco por completo, sólo se me ocurre que consultes con el soporte del S.O.: support
Quizá allí, encuentres encuentres la explicación.

Un saludo.
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
ejecutar programas desde el explorer karocs .NET 3 10-12-2012 05:01:09
menu de mis programas diferentes ingabraham Varios 7 17-06-2011 15:15:01
Ejecutar programas diferentes en 2 monitores robertosc Varios 8 26-09-2008 17:59:32
ejecutar programas DOS artemisa Varios 6 04-05-2007 23:46:48
Ejecutar programas del Shell lbraun Lazarus, FreePascal, Kylix, etc. 0 05-07-2006 05:37:02


La franja horaria es GMT +2. Ahora son las 00:09:15.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi