Dodaj wpis w tym temacie
Spis tematów | Strona: 1 2 ... 550 551 Wyślij wiadomość do admina |
Przewiń wpisy ↓ | moje ... oprogramowanie |
2025-03-20 (14:13)![]() Data rejestracji: 2020-08-05 00:00:00 Ilość postów: 5813 ![]() | 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)![]() Data rejestracji: 2020-08-05 00:00:00 Ilość postów: 5813 ![]() | 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)![]() Data rejestracji: 2020-08-05 00:00:00 Ilość postów: 5813 ![]() | 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)![]() Data rejestracji: 2005-11-07 00:00:00 Ilość postów: 22649 ![]() | 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)![]() Data rejestracji: 2005-11-07 00:00:00 Ilość postów: 22649 ![]() | 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)![]() Data rejestracji: 2020-08-05 00:00:00 Ilość postów: 5813 ![]() | wpis nr 1 558 417 [ CZCIONKA MONOSPACE ] 64 bitowa kompilacja, większe możliwości, większa wydajność. |
2025-03-20 (14:51)![]() Data rejestracji: 2020-08-05 00:00:00 Ilość postów: 5813 ![]() | 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)![]() Data rejestracji: 2005-11-07 00:00:00 Ilość postów: 22649 ![]() | wpis nr 1 558 419 [ CZCIONKA MONOSPACE ] wpis nr 1 558 406 Tam jest coś nie tak ![]() |
2025-03-20 (15:16)![]() Data rejestracji: 2005-11-07 00:00:00 Ilość postów: 22649 ![]() | 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)![]() Data rejestracji: 2005-11-07 00:00:00 Ilość postów: 22649 ![]() | 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)![]() Data rejestracji: 2005-11-07 00:00:00 Ilość postów: 22649 ![]() | 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)![]() Data rejestracji: 2005-11-07 00:00:00 Ilość postów: 22649 ![]() | 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)![]() Data rejestracji: 2006-05-27 00:00:00 Ilość postów: 4976 ![]() | wpis nr 1 558 432 [ CZCIONKA MONOSPACE ] 777ch, chat to nie człowiek ![]() ![]() |
2025-03-20 (18:01)![]() Data rejestracji: 2016-05-12 00:00:00 Ilość postów: 8590 ![]() | 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)![]() Data rejestracji: 2017-03-29 00:00:00 Ilość postów: 8352 ![]() | 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)![]() Data rejestracji: 2015-12-08 00:00:00 Ilość postów: 283 ![]() | 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)![]() Data rejestracji: 2020-08-05 00:00:00 Ilość postów: 5813 ![]() | 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)![]() Data rejestracji: 2020-08-05 00:00:00 Ilość postów: 5813 ![]() | 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)![]() Data rejestracji: 2020-08-05 00:00:00 Ilość postów: 5813 ![]() | 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)![]() Data rejestracji: 2006-05-27 00:00:00 Ilość postów: 4976 ![]() | 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 lotto | Strona: 1 2 ... 550 551 Wyślij wiadomość do admina |