Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2004.02.06;
Скачать: [xml.tar.bz2];

Вниз

Потоки   Найти похожие ветки 

 
Blade   (2004-01-28 12:31) [0]

Здравствуйте Мастера
У меня такой вопрос почему я немогу создать больше 2020 потоков
Но мен нужно больше гораздо больше вот код:
unit NeroDB;

interface
Uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, ExtCtrls, StdCtrls, Buttons,TNeron;

Const
NameBase ="Base.nrb";
Version = "Nero Data Base Version 0.0.1";
MAX_LENGTH = 65535;

type
TNeronTreadCreate = class(TObject)
WORK_LENGTH :integer;
TreadArray: array of TNeronBase;
Procedure CheckAbilityNeron(Value:integer; var Work_Length:integer);
Procedure CreateStructureNeron(Amount:integer; var Satus:word);
end;

implementation
uses FileStream,Desktop;

procedure WriteStringFile(__F: TFileStream; __String: string);
var _StrLen: Integer;
begin
_StrLen := Length(__String);
__F.WriteBuffer(_StrLen, SizeOf(Integer));
__F.WriteBuffer(__String[1], _StrLen);
end;

//-----------------------------------------------------------------
//В данной процедуре происходит проверка памяти и способность нейросетью развернуть количество нейронов.
Procedure TNeronTreadCreate.CheckAbilityNeron(Value:integer; var Work_Length:integer);
Var i:integer;
DateTime : TDateTime;

begin
value:=MAX_LENGTH;
SetLength(TreadArray,value);
Command.ComBox.Lines.Add(Version);
try
Command.ComBox.Lines.Add("Запуск системы.... ");
Command.ComBox.Lines.Add(TimeToStr(Time));
Command.ComBox.Lines.Add("Исследование памяти.....");
sleep(1000);
For i:=0 to value-1 do
if TreadArray[i]=nil then begin
TreadArray[i]:=TNeronBase.Create(True);
TreadArray[i].Caption:=Format("Поток %d %s",[i,TreadArray[i].ClassName]);
TreadArray[i].Number:=i;
end;
except
value:=i;
if value<100 then begin
Command.ComBox.Lines.Add("Данная система нестабильна!");
Command.ComBox.Lines.Add("Нехватает виртуальной памяти для разворачивания неросети.");
Decsktop.Close;
end;
Command.ComBox.Lines.Add("Для данной системы возможно "+IntToStr(value)+" нейронов/кадр");

for i:=0 to value-1 do begin
TreadArray[i].Free;
end;
end;
Command.ComBox.Lines.Add("Опрос системы....");
end;
//-----------------------------------------------------------------

Procedure TNeronTreadCreate.CreateStructureNeron(Amount:integer; var Satus:word);
begin

end;


 
Digitman   (2004-01-28 12:44) [1]

а где у тебя анализ причин возникающего исключения ?

сразу - хрясь ! - и на тебе, юзер, мол, что-то там нестабильно или чего-то там не хватает ...


 
Smithson   (2004-01-28 12:54) [2]

2020 - это очень много. В системе будет работать только диспетчер задач. Зачем столько?


 
Romkin   (2004-01-28 12:59) [3]

А фиг его знает. Я знаю только, что по-умолчанию на каждый поток выделаятся стек размером в 1 мегабайт. А для данных в процессе доступно 2 гига. Я вообще удивляюсь, что столько их удалось создать...


 
AKul   (2004-01-28 13:12) [4]


> Blade © (28.01.04 12:31)
> У меня такой вопрос почему я немогу создать больше 2020
> потоков
> Но мен нужно больше гораздо больше


Предположим, что система сможет разместить информацию о каждом потоке внутри себя. Но где она разместит его данные в адресном пространстве процесса? А ведь для каждого потока необходимо выделить хотя бы стек ( под каждый поток) в адресном пространстве процесса (нижних 2 ГБ)?
А в этих 2 ГБ уже есть образ EXE-файла + образы всех загруженных DLL + ..... и т.д.

Зачем Вам столько потоков? Если Вы считаете, что все потоки выполняются параллельно (все нейроны Вашей нейросети будут вычисляться одновременно), то Вы ошибаетесь. Их выполнение можно назвать псевдопараллельным (между ними происходит переключение через малые промежутки времени). Потоки могут выполняться параллельно только на нескольких процессорах (и то параллельно смогут выполняться столько потоков, сколько процессоров).

На мой взгляд, Вам необходимо изменить способ вычислений Вашей нейросети, например, создать 1 поток (2,3, но не 1000), в котором и обрабатывать все нейроны, представленные в виде массива, списка, ....


 
TUser   (2004-01-28 13:17) [5]

Не, ваще, для каждого нейрона - отдельный поток, - это не жирно ли? Да и с синхронизацией работы такого большого количества потоков возникнут проблемы, типа того, что результат работы сети будет зависеть от того, в каком порядке нейроны сработали, т.е. от виндуса. Не - надо на каждом шаге работы сети пройтись по всем нейронам, померить сигналы, которые к ним приходят, посчитать выход.



Страницы: 1 вся ветка

Форум: "Основная";
Текущий архив: 2004.02.06;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.46 MB
Время: 0.03 c
11-16201
Nomadic
2003-05-21 14:18
2004.02.06
Нет иконки в заголовке формы под KOL 1.73


1-16374
Pasha_
2004-01-23 22:34
2004.02.06
Class TPanel not found


4-16815
Segreen
2003-11-27 18:16
2004.02.06
Контрол с фокусом...


14-16698
Fants
2004-01-16 11:08
2004.02.06
Перенос Delphi c одного Win2000 на другой win2000


1-16381
Goida
2004-01-23 18:27
2004.02.06
Мучим Word дальше





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский