Форум: "Основная";
Текущий архив: 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