Forum strony www.multipasko.pl [Regulamin]


Dodaj wpis w tym temacie
Spis tematów
Login:

Hasło:
Strona: 1 2 ... 550 551
Wyślij wiadomość do admina

Przewiń wpisy ↓

moje ... oprogramowanie

2025-03-20 (14:13)

status MultiTest
Data rejestracji: 2020-08-05 00:00:00
Ilość postów: 5813

16235
wpis nr 1 558 407
[ CZCIONKA MONOSPACE ]

To samo pytanie i różne odpowiedzi.
Kleszek zadaj to samo jeszcze raz i co otrzymasz ?
2025-03-20 (14:20)

status MultiTest
Data rejestracji: 2020-08-05 00:00:00
Ilość postów: 5813

16235
wpis nr 1 558 408
[ CZCIONKA MONOSPACE ]

Jest jeszcze problem oceny tego co dostajesz, bo w każdej opowiedzi mogą być zawarte bzdury,
wyrwane z kontekstu fragmenty cudzych kodów, albo niepasujące do używanej wersji delphi a czasem zupełnie wymyślone
Kolejne pytanie czy czat darmowy czy płatny.
Przecież ostrzegają na początku, że czat może popełniać błędy

A co zwerifikujesz, przecież to nie jest forum programistów.
2025-03-20 (14:23)

status MultiTest
Data rejestracji: 2020-08-05 00:00:00
Ilość postów: 5813

16235
wpis nr 1 558 410
[ CZCIONKA MONOSPACE ]

Pytanie dla Copilota:
Podaj przykład procedury obliczeń z użyciem kilku instrukcji iteracyjnych ,z zastosowaniem Multithreadingu w delphi object pascal, dla 32 wątków jednocześnie wykonujących proces obliczeń. Przykład procedury obliczeń , której wynik jest zawsze ten sam, a czas obliczeń jest różny w zależności od ilości rdzeni procesora. Przykładowa procedura działać musi niezależnie od ilości rdzeni.
=======================================================
Oto przykład procedury w Delphi Object Pascal, która wykorzystuje 32 wątki do obliczeń. Wynik procedury pozostaje taki sam, niezależnie od liczby rdzeni procesora, ale czas wykonania zależy od dostępnych zasobów sprzętowych. Procedura opiera się na technikach wielowątkowości z użyciem klasy TTask z System.Threading:

delphi
program MultiThreadExample;

uses
System.SysUtils, System.Threading;

const
ThreadCount = 32;

function ComputeTask(Index: Integer): Integer;
var
Sum, I: Integer;
begin
Sum := 0;
for I := 1 to 100000000 do
Sum := (Sum + Index) mod 1000; // Prosta iteracyjna operacja obliczeniowa
Result := Sum;
end;

procedure RunMultiThreadedComputation;
var
Results: array[0..ThreadCount - 1] of Integer;
Tasks: array[0..ThreadCount - 1] of ITask;
I: Integer;
FinalSum: Integer;
begin
// Tworzymy i uruchamiamy 32 wątki
for I := 0 to ThreadCount - 1 do
begin
Tasks[I] := TTask.Run(
procedure
begin
Results[I] := ComputeTask(I);
end
);
end;

// Oczekiwanie na zakończenie wszystkich wątków
TTask.WaitForAll(Tasks);

// Zbieranie wyników
FinalSum := 0;
for I := 0 to ThreadCount - 1 do
Inc(FinalSum, Results[I]);

Writeln('Final Sum: ', FinalSum);
end;

begin
try
Writeln('Starting multi-threaded computation...');
RunMultiThreadedComputation;
Writeln('Computation complete.');
except
on E: Exception do
Writeln(E.ClassName, ': ', E.Message);
end;
end.
Wyjaśnienie:
Iteracyjne obliczenia: Funkcja ComputeTask wykonuje iteracje, które realizują proste obliczenia. W tym przykładzie, obliczenia zawsze zwracają przewidywalny wynik dla tej samej liczby Index.

Wielowątkowość: TTask pozwala na równoległe wykonywanie kodu w niezależnych wątkach.

Niezależność od liczby rdzeni: Program uruchamia 32 wątki, niezależnie od liczby rdzeni procesora. Czas wykonania będzie różny w zależności od liczby rdzeni, ale wynik pozostanie spójny.

Synchronizacja: TTask.WaitForAll zapewnia, że wszystkie wątki zakończą swoje działanie przed kontynuacją programu.
2025-03-20 (14:36)

status 777ch
Data rejestracji: 2005-11-07 00:00:00
Ilość postów: 22649

1386
wpis nr 1 558 412
[ CZCIONKA MONOSPACE ]

MultiTest

No to będzie co sprawdzać na moich 16-rdzeniach.
Ale jak to czy tamto skompiluję.
Wydaje mi się jednak ,że bardziej skomplikowane
procesy obliczeń nie uzyskają jakiejś spektakularnej
różnicy w czasie.

Jedną z kompilacji ,-->procedura z netu
skompilowałem dla 32b a druga dla 64b

i jest różnica obliczeń na korzyść 64

oto obrazkowe porównanie



--- wpis edytowano 2025-03-20 14:36 ---

2025-03-20 (14:43)

status 777ch
Data rejestracji: 2005-11-07 00:00:00
Ilość postów: 22649

1386
wpis nr 1 558 416
[ CZCIONKA MONOSPACE ]

powyżej to kompilacje tego procesu:


unit Unit1;

interface

uses
Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls, system.threading, math;



type
TForm1 = class(TForm)

Memo1: TMemo;
Button1: TButton;
procedure Button1Click(Sender: TObject);
{ TMyThread is the class that will handle our background work }

private
{ Private declarations }
public
{ Public declarations }

end;





podziałLiczby= array[0..9] of integer;
zakresy= array[1..4] of record
dół, góra: int64
end;
wynik= array[0..9] of record
ileCyfr: integer;
liczba: int64
end;
TYPE

MyThread = class(TThread)
end;

{$R *.dfm}

var
Form1: TForm1;
hczas,hgodz,hmin,hsec,hmilsec:string;
ilerdzeni:integer;




implementation



function podzielNaZakresy(a,b: int64): zakresy;
//dzieli zakres pętli for dla rozłożenia na cztery rdzenie procesora
var
i, iloraz: int64;
wynik: zakresy;
begin
iloraz:= (b-a+1)div 4;
for i := 1 to 4 do
begin
wynik[i].dół:= (i-1)*iloraz+a;
if i<4
then
wynik[i].góra:= (i-1)*iloraz+a+iloraz-1
else
wynik[i].góra:= b;
end;
result:=wynik
end;

function rozłóżLiczbę(i: int64):podziałLiczby;
//liczy wystąpienia cyfr w liczbie
var
k,c : integer;
s: string;
temp: podziałLiczby;
begin
for k := 0 to 9 do
temp[k]:= 0;
s:=IntToStr(i);
for k:= 0 to 9 do
begin
c:= StrToInt(s[k+1]);
temp[c]:= temp[c]+1;
end;
result:= temp;
end;


procedure TForm1.Button1Click(Sender: TObject);
var
maks: wynik;
wynikiRdzeni: array[1..4] of wynik;
zakresyRdzeni: zakresy;
tasks: array of ITask;
i,k: int64;
hours, minutes, seconds, millisec: word;
start,koniec,timeDiff: tdatetime;
begin
//ilerdzeni:=MyThread.ProcessorCount.Size;
button1.Caption:='Liczba rdzeni: '+inttostr(MyThread.ProcessorCount.Size);
start:= now;
for i:=0 to 9 do
maks[i].ileCyfr:= 0;
for i := 1 to 4 do
for k := 0 to 9 do
wynikiRdzeni[i,k].ileCyfr:=0;
Setlength(tasks ,4);
zakresyRdzeni:= podzielNaZakresy(1000000000,1800000000);

tasks[0]:= TTask.Create (procedure ()
var
temp: podziałLiczby;
i,k: int64;
begin
For i:= zakresyRdzeni[1].dół to zakresyRdzeni[1].góra do
begin
if sqr(round(sqrt(i))) = i
then
begin
temp:= rozłóżLiczbę(i);
for k:= 0 to 9 do
if temp[k]> wynikiRdzeni[1,k].ileCyfr
then
begin
wynikiRdzeni[1,k].ileCyfr:= temp[k];
wynikiRdzeni[1,k].liczba:= i
end;
end;
end
end);
tasks[0].Start;

tasks[1]:= TTask.Create (procedure ()
var
temp: podziałLiczby;
i,k: int64;
begin
For i:= zakresyRdzeni[2].dół to zakresyRdzeni[2].góra do
begin
if sqr(round(sqrt(i))) = i
then
begin
temp:= rozłóżLiczbę(i);
for k:= 0 to 9 do
if temp[k]> wynikiRdzeni[2,k].ileCyfr
then
begin
wynikiRdzeni[2,k].ileCyfr:= temp[k];
wynikiRdzeni[2,k].liczba:= i
end;
end;
end
end);
tasks[1].Start;

tasks[2]:= TTask.Create (procedure ()
var
temp: podziałLiczby;
i,k: int64;
begin
For i:= zakresyRdzeni[3].dół to zakresyRdzeni[3].góra do
begin
if sqr(round(sqrt(i))) = i
then
begin
temp:= rozłóżLiczbę(i);
for k:= 0 to 9 do
if temp[k]> wynikiRdzeni[3,k].ileCyfr
then
begin
wynikiRdzeni[3,k].ileCyfr:= temp[k];
wynikiRdzeni[3,k].liczba:= i
end;
end;
end
end);
tasks[2].Start;

tasks[3]:= TTask.Create (procedure ()
var
temp: podziałLiczby;
i,k: int64;
begin
For i:= zakresyRdzeni[4].dół to zakresyRdzeni[4].góra do
begin
if sqr(round(sqrt(i))) = i
then
begin
temp:= rozłóżLiczbę(i);
for k:= 0 to 9 do
if temp[k]> wynikiRdzeni[4,k].ileCyfr
then
begin
wynikiRdzeni[4,k].ileCyfr:= temp[k];
wynikiRdzeni[4,k].liczba:= i
end;
end;
end
end);
tasks[3].Start;

TTask.WaitForAll(tasks);

//zbieramy dane z wątków razem
for i:= 0 to 9 do
for k:=1 to 4 do
if wynikiRdzeni[k,i].ileCyfr>maks[i].ileCyfr
then
begin
maks[i].ileCyfr:= wynikiRdzeni[k,i].ileCyfr;
maks[i].liczba:= wynikiRdzeni[k,i].liczba
end;

koniec:= now;
timeDiff:= koniec - start;
DecodeTime(timeDiff, hours, minutes, seconds, millisec);
memo1.Lines.Add('godziny='+IntToStr(hours));
memo1.Lines.Add('minuty='+IntToStr(minutes));
memo1.Lines.Add('sekundy='+IntToStr(seconds));
memo1.Lines.Add('milisekundy='+IntToStr(millisec));

if hours=0 then
hgodz:='00'
else
if (hours<10)and(hours>0) then
hgodz:= '0'+IntToStr(hours)
else
if hours>=10 then
hgodz:= IntToStr(hours);


if minutes=0 then
hmin:='00'
else
if (minutes<10)and(minutes>0) then
hmin:= '0'+IntToStr(minutes)
else
if minutes>=10 then
hmin:= IntToStr(minutes);

if seconds=0 then
hsec:='00'
else
if (seconds<10)and(seconds>0) then
hsec:= '0'+IntToStr(seconds)
else
if seconds>=10 then
hsec:= IntToStr(seconds);

if millisec=0 then
hmilsec:='000'
else
if (millisec<10)and(millisec>0) then
hmilsec:= '00'+IntToStr(millisec)
else
if (millisec<100)and(millisec>=10) then
hmilsec:= '0'+IntToStr(millisec)
else
if millisec>=100 then
hmilsec:= IntToStr(millisec);
memo1.Lines.Add('');
memo1.Lines.Add('elapsed time: '+ hgodz+' '+hmin+' '+hsec+' '+hmilsec);
memo1.Lines.Add('');
for k:= 0 to 9 do
if maks[k].ileCyfr > 0
then
memo1.Lines.Add('najwięcej cyfr dla '+IntToStr(k)+' wynosi '+
IntToStr(maks[k].ileCyfr)+' dla '+IntToStr(maks[k].liczba))
end;


end.


----------------------------------------
To opracowanie z jakiejś strony w necie
z drobną modyfikacją.
2025-03-20 (14:45)

status MultiTest
Data rejestracji: 2020-08-05 00:00:00
Ilość postów: 5813

16235
wpis nr 1 558 417
[ CZCIONKA MONOSPACE ]

64 bitowa kompilacja, większe możliwości, większa wydajność.
2025-03-20 (14:51)

status MultiTest
Data rejestracji: 2020-08-05 00:00:00
Ilość postów: 5813

16235
wpis nr 1 558 418
[ CZCIONKA MONOSPACE ]

ale, jeśli szukać efektywności to nie koniecznie pokrycie może być jedynym środkiem do celu, przecież może być tak, że pokrycie pokaże że jeszcze dużo brakuje, nawet gdy rzeczywista gwarancja będzie 100 %

--- wpis edytowano 2025-03-20 14:52 ---

2025-03-20 (15:14)

status 777ch
Data rejestracji: 2005-11-07 00:00:00
Ilość postów: 22649

1386
wpis nr 1 558 419
[ CZCIONKA MONOSPACE ]

wpis nr 1 558 406

Tam jest coś nie tak
2025-03-20 (15:16)

status 777ch
Data rejestracji: 2005-11-07 00:00:00
Ilość postów: 22649

1386
wpis nr 1 558 420
[ CZCIONKA MONOSPACE ]

MultiTest

Ale czasem wychodzi ,
że inne procedury oraz kompilacje 32b są szybsze.
Na razie nie wiem dlaczego tak jest.
2025-03-20 (15:26)

status 777ch
Data rejestracji: 2005-11-07 00:00:00
Ilość postów: 22649

1386
wpis nr 1 558 422
[ CZCIONKA MONOSPACE ]

MultiTest

ale, jeśli szukać efektywności to nie koniecznie pokrycie może być jedynym środkiem do celu, przecież może być tak, że pokrycie pokaże że jeszcze dużo brakuje, nawet gdy rzeczywista gwarancja będzie 100 %

albo gwarancja wynosi 100% albo nie wynosi 100%
oczywiście .... można pokusić się o stwierdzenie
że tak i tak zbudowany rozpis zdecydowanie daje WYNIK= cel= x/y
ale tak jak wspomniałem ,gwarancja 100% to termin konkretny.
2025-03-20 (15:29)

status 777ch
Data rejestracji: 2005-11-07 00:00:00
Ilość postów: 22649

1386
wpis nr 1 558 423
[ CZCIONKA MONOSPACE ]

Poproszę o inne przykłady
ale nie konsolowe ,
i sprawdzone [Multitest]
jeśli można ,
bo jak na razie te przykłady odrobinę mało ciekawe.
2025-03-20 (17:07)

status 777ch
Data rejestracji: 2005-11-07 00:00:00
Ilość postów: 22649

1386
wpis nr 1 558 430
[ CZCIONKA MONOSPACE ]

AI chat „wie”..tyle ile
jest jej udostępnione ,
nie potrafi myśleć jak człowiek,
składa jedynie
bardziej lub mniej „nieudolnie”
—> „kolaże” z „dostępnych zasobów” .
Tak to widzę.
2025-03-20 (17:27)

status kleszek
Data rejestracji: 2006-05-27 00:00:00
Ilość postów: 4976

2047
wpis nr 1 558 432
[ CZCIONKA MONOSPACE ]

777ch, chat to nie człowiek Jak zadasz mu pytanie, tak na nie odpowie. Im bardziej precyzyjne pytanie, tym lepsza odpowiedź. Często prosząc chat o napisanie jakiegoś makra w Vba otrzymywałem na początku makro niedziałające. Błędy typu brak użytej w makrze funcji itd. Po zgłoszeniu dla chata danego błędu, następuje błyskawiczna "naprawa" makra. Zdarzało mi się, że musiałem zgłaszać kilka razy błędy w jednym makrze, ale zawsze na końcu otrzymywałem to o co prosiłem. Chat to droga na skróty, droga czasem wyboista ale prowadząca do celu. Czasem trzeba chat-a odpowiednio prowadzić "na smyczy" aby uzyskać zamierzony cel
2025-03-20 (18:01)

status fair_play
Data rejestracji: 2016-05-12 00:00:00
Ilość postów: 8590

14865
wpis nr 1 558 434
[ CZCIONKA MONOSPACE ]


Kleszek>

Czy temu czatowi możesz zadawać pytania tylko z programowania, czy dowolne np. kto wygra wybory prezydenckie
2025-03-20 (18:40)

status Jacek_K1961
Data rejestracji: 2017-03-29 00:00:00
Ilość postów: 8352

15220
wpis nr 1 558 440
[ CZCIONKA MONOSPACE ]

fair_play
Kiedyś "gadałem z nią/nim" o nauce i medycynie ponad godzinę.
2025-03-20 (18:55)

status heme24
Data rejestracji: 2015-12-08 00:00:00
Ilość postów: 283

14639
wpis nr 1 558 442
[ CZCIONKA MONOSPACE ]

witam.
Kleszek pytanie zasadnicze czy wygenerowany przez chat kod robi to co chcemy? Ktoś obeznany z pythonem nie ma z tym problemu, ale laicy nie zweryfikują tego, ja miałem przypadki że kod robił nie wiadomo co a wykryłem to przypadkiem.
2025-03-20 (19:11)

status MultiTest
Data rejestracji: 2020-08-05 00:00:00
Ilość postów: 5813

16235
wpis nr 1 558 445
[ CZCIONKA MONOSPACE ]

"Poproszę o inne przykłady
ale nie konsolowe ,"

777ch
Czy chodzi o te przykłady od SI ?

A dlaczego nie konsolowe ?...


2025-03-20 (19:15)

status MultiTest
Data rejestracji: 2020-08-05 00:00:00
Ilość postów: 5813

16235
wpis nr 1 558 446
[ CZCIONKA MONOSPACE ]

AI chat „wie”..tyle ile
jest jej udostępnione ,
nie potrafi myśleć jak człowiek,
składa jedynie
bardziej lub mniej „nieudolnie”
—> „kolaże” z „dostępnych zasobów” .

777ch
Takie są też opinie większosci programistów.
2025-03-20 (19:37)

status MultiTest
Data rejestracji: 2020-08-05 00:00:00
Ilość postów: 5813

16235
wpis nr 1 558 453
[ CZCIONKA MONOSPACE ]

Odpowiedż Chata
===================================================
"Nieograniczony dostęp do wszystkich modeli rozumowania" może oznaczać, że na danym czacie masz możliwość korzystania z różnych sposobów analizowania, interpretowania i przetwarzania informacji.

Modele rozumowania – co to znaczy?
Modele rozumowania to różne sposoby przetwarzania informacji i wyciągania wniosków. Można je podzielić na kilka głównych kategorii:

Dedukcyjne rozumowanie – wnioski wynikają logicznie z założeń (np. jeśli wszystkie koty miauczą, a Filemon jest kotem, to Filemon miauczy).
Indukcyjne rozumowanie – wyciąganie ogólnych wniosków na podstawie ograniczonej liczby obserwacji (np. widziałem 10 białych łabędzi, więc wszystkie łabędzie mogą być białe).
Abdukcyjne rozumowanie – szukanie najbardziej prawdopodobnego wyjaśnienia dla zaobserwowanego zjawiska (np. pod samochodem jest kałuża, więc prawdopodobnie wyciekł olej).
Heurystyczne rozumowanie – stosowanie intuicyjnych skrótów myślowych i doświadczenia do szybkiego podejmowania decyzji.
Probabilistyczne rozumowanie – opieranie się na rachunku prawdopodobieństwa do przewidywania zdarzeń (np. jeśli prognoza pogody mówi o 80% szansy na deszcz, to prawdopodobnie będzie padać).
Sieci neuronowe i modele AI – korzystanie z algorytmów uczących się na danych, aby prognozować lub generować odpowiedzi.
W kontekście czatu może to oznaczać, że możesz zadawać pytania w różnych dziedzinach i w różny sposób – od ścisłych analiz logicznych, przez intuicyjne rozumowanie, aż po kreatywne i probabilistyczne podejście do problemu.
2025-03-20 (21:53)

status kleszek
Data rejestracji: 2006-05-27 00:00:00
Ilość postów: 4976

2047
wpis nr 1 558 493
[ CZCIONKA MONOSPACE ]

Kleszek>

Czy temu czatowi możesz zadawać pytania tylko z programowania, czy dowolne np. kto wygra wybory prezydenckie

Pytania można zadawać różne, mądre, niemądre itd. Nie wiem tylko jaką dostaniemy odpowiedź, nigdy nie zadawałem pytań tego typu.

Kleszek pytanie zasadnicze czy wygenerowany przez chat kod robi to co chcemy? Ktoś obeznany z pythonem nie ma z tym problemu, ale laicy nie zweryfikują tego, ja miałem przypadki że kod robił nie wiadomo co a wykryłem to przypadkiem.


Już pisałem, im bardziej precyzyjne pytanie, tym lepsza odpowiedź. Ja głównie prosiłem o pomoc w zakresie VBA. Kilka razy trzeba było doprecyzowac pytanie ale na koniec udawało mi się uzyskać to co chciałem. Szczególnie jestem pod wrażeniem opcji "głębokiego myślenia". Wtedy analiza problemu dla chata zajmuje więcej czasu. Chat naprawdę zagłębia się wtedy głęboko w temat, analizuje różne metody działania i wyszukuje najlepsze rozwiązanie. Działanie chatu w tym trybie widoczne jest w bocznym oknie przeglądarki i naprawdę robi to wrażenie. "Wadą" głębokiego wyszukiwaia jest to, że w trybie plus można skorzystać z tej opcji tylko 5 razy w miesiącu

cyt. "AI chat „wie”..tyle ile
jest jej udostępnione ,
nie potrafi myśleć jak człowiek,
składa jedynie
bardziej lub mniej „nieudolnie”
—> „kolaże” z „dostępnych zasobów” .

Chat to nic innego jak baza danych, gdzie po lepszym lub gorszym pytaniu, jest podawana lepsza lub gorsza odpowiedź.
| Dodaj wpis w tym temacie | Spis tematów | Wyniki lottoStrona: 1 2 ... 550 551
Wyślij wiadomość do admina