<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0">
<channel>
<title>Forum Pasja Informatyki - Najnowsze z tagiem referencje</title>
<link>https://forum.pasja-informatyki.pl/tag/referencje</link>
<description>Powered by Question2Answer</description>
<item>
<title>Numpy vs PyTorch - przekazywanie tablic, GPU</title>
<link>https://forum.pasja-informatyki.pl/598040/numpy-vs-pytorch-przekazywanie-tablic-gpu</link>
<description>Cześć, mam taki problem; moim zadaniem jest przeniesienie kodu z NumPy na PyTorch.&lt;br /&gt;
&lt;br /&gt;
w wersji NumPy jest podwójna pętla for, i w wewnętrznej pętli jest:&lt;br /&gt;
for i in rangę(x):&lt;br /&gt;
b = a&lt;br /&gt;
a = np.ones(C)&lt;br /&gt;
// jakieś obliczenia na nowym a&lt;br /&gt;
// jakieś porównanie miedzy b (&amp;quot;starym a&amp;quot;) i nowym a&lt;br /&gt;
&lt;br /&gt;
Gdy te sama pętle napisałem w torchu,&lt;br /&gt;
&lt;br /&gt;
po prostu piszac&lt;br /&gt;
&lt;br /&gt;
a = torch.ones(C)&lt;br /&gt;
to kod nagle zaczął działać nieakceptowanie wolno (jest to powiązane z tym, ze działa on na GPU, i kod cały czas alokuje i inicjalizuje te zmienna od nowa na GPU)&lt;br /&gt;
&lt;br /&gt;
początkowo rozwiązałem to w taki sposób, ze&lt;br /&gt;
przed pętla for stworzyłem zmienna a_pattern = torch.ones(C)&lt;br /&gt;
a w pętli for robiłem przypisanie a = a_pattern&lt;br /&gt;
I to działa bardzo szybko, bo zmienna jest inicjalizowana tylko raz, ale prowadzi do złych wyników, bo teraz b = a = a_pattern i b przyjmuje wartość a_pattern, &amp;nbsp;bo tensorki się przekazują przez referencje (jak chyba wszystko w Pythonie)&lt;br /&gt;
&lt;br /&gt;
Próbowałem funkcje .clone, .copy, .detach, &amp;nbsp;.empty i .fill, przepisywanie w pętli for zamiast całej zmiennej od razu, &amp;nbsp;- nic nie działa - wszystko albo działa wolno i daje dobry wynik (jak a = torch.ones()), albo działa szybko i daje zły wynik (jak a = a_pattern). Potrzebuje rozwiązania które działa szybko i dobrze. Kod jako calom jest przyspieszony w porównaniu do wersji numpy, wiec jak Wasze rozwiazanie będzie działać kilka % wolniej od wersji numpy to nie ma problemu, ale niestety w mojej sytuacji instrukcja a = torch.ones(C) to 99% czasu działania programu, co jest nie do przyjęcia.&lt;br /&gt;
&lt;br /&gt;
Przepraszam ze nie załączam kodu ale i tak go nie odpalicie bo to wiele plików i duży dataset; ale zdiagnozowałem ze problemem jest tylko i aż ta jedna instrukcja. &lt;br /&gt;
&lt;br /&gt;
Czy ktoś ma pomysł jak to rozwiązać? &lt;br /&gt;
&lt;br /&gt;
Jakby co: przeniesienie kodu na GPU działa, nvtop pokazuje, ze zarówno pamięć jak i mcc obliczeniowa GPU jest mocno utylizowana</description>
<category>Python</category>
<guid isPermaLink="true">https://forum.pasja-informatyki.pl/598040/numpy-vs-pytorch-przekazywanie-tablic-gpu</guid>
<pubDate>Thu, 13 Feb 2025 12:24:02 +0000</pubDate>
</item>
<item>
<title>Referencja, różny zapis funkcji</title>
<link>https://forum.pasja-informatyki.pl/416407/referencja-rozny-zapis-funkcji</link>
<description>

&lt;p&gt;Witam,&lt;/p&gt;



&lt;p&gt;Mam pytanie jak mógłbym zamienić taki zapis funkcji:&lt;/p&gt;



&lt;pre class=&quot;brush:cpp;&quot;&gt;
int &amp;amp;funkcja(int k)
{
  // (...);
}&lt;/pre&gt;



&lt;p&gt;W taką ( niestety ona nie działa &lt;img alt=&quot;sad&quot; src=&quot;https://forum.pasja-informatyki.pl/qa-plugin/ckeditor4/plugins/smiley/images/sad_smile.png&quot; style=&quot;height:23px; width:23px&quot; title=&quot;sad&quot;&gt;&amp;nbsp;):&lt;/p&gt;



&lt;pre class=&quot;brush:cpp;&quot;&gt;
auto &amp;amp;funkcja(int k) -&amp;gt; int
{
  // (...);
}&lt;/pre&gt;



&lt;p&gt;Czy jest taka zamiana w ogóle możliwa? (Jeśli usuniemy znak '&amp;amp;' to obie funkcje działają, lecz dlaczego ta druga nie działa ze znakiem ampersand'u?) [Dla uściślenia C++11].&lt;/p&gt;



&lt;p&gt;&amp;nbsp;&lt;/p&gt;



&lt;p&gt;Z góry dziękuję&amp;nbsp;&lt;img alt=&quot;smiley&quot; src=&quot;https://forum.pasja-informatyki.pl/qa-plugin/ckeditor4/plugins/smiley/images/regular_smile.png&quot; style=&quot;height:23px; width:23px&quot; title=&quot;smiley&quot;&gt;.&lt;/p&gt;</description>
<category>C i C++</category>
<guid isPermaLink="true">https://forum.pasja-informatyki.pl/416407/referencja-rozny-zapis-funkcji</guid>
<pubDate>Sun, 24 Feb 2019 20:33:02 +0000</pubDate>
</item>
<item>
<title>Referencje -  podstawowe pytania</title>
<link>https://forum.pasja-informatyki.pl/372253/referencje-podstawowe-pytania</link>
<description>

&lt;p&gt;Nie wiem, czy dobrze rozumiem podstawowe aspekty referencji, proszę, aby ktoś skomentował, czy w tych dwóch &quot;teoriach&quot; są błędy i poprawił je, jeśli tak jest.&lt;/p&gt;



&lt;p&gt;Dlaczego referencje nie mogę być zmieniane (Czy tak jest w każdym języku programowania?):&lt;/p&gt;



&lt;p&gt;&lt;span style=&quot;text-decoration: underline;&quot;&gt;Nazwa referencji symbolizuje pewien adres w pamięci pod którym &quot;siedzi&quot; dany obiekt. Jeśli zmienimy nazwę referencji to ona nie będzie już symbolizować tego samego adresu tylko inny, w którym nie ma tego samego obiektu, dlatego gdyby takie działanie było dozwolone konsekwencje tego byłyby nieprzewidywalne. &lt;/span&gt;&lt;/p&gt;



&lt;p&gt;A powód dla którego trzeba koniecznie inicjalizować referencję zaraz po deklaracji:&lt;/p&gt;



&lt;p&gt;&lt;span style=&quot;text-decoration: underline;&quot;&gt;Deklarując referencję tworzymy odnośnik do pewnego miejsca w pamięci. Jeśli nie powiemy programowi jasno jaki obiekt ma zostać przypisany do tego adresu a następnie będziemy kontynuować pisanie programu wówczas w to miejsce zostanie wpisany kolejno utworzony obiekt (jeśli miejsca w pamięci są zapełniane jedno po drugim - jest tak?) lub pozostanie w nim obiekt, który wcześniej się na nim znajdował.&lt;/span&gt;&lt;/p&gt;



&lt;p&gt;Przy okazji ciekawią mnie też odpowiedzi na pytania w nawiasach.&lt;/p&gt;</description>
<category>C i C++</category>
<guid isPermaLink="true">https://forum.pasja-informatyki.pl/372253/referencje-podstawowe-pytania</guid>
<pubDate>Fri, 10 Aug 2018 20:16:07 +0000</pubDate>
</item>
<item>
<title>Referencja struktury w funkcji (c++)</title>
<link>https://forum.pasja-informatyki.pl/336129/referencja-struktury-w-funkcji-c</link>
<description>

&lt;p&gt;Witam napisałem program nie jest on skomplikowany bo chodzi o wywołanie i tutaj leży problem wiem w którym miejscu i z czym jednak nie wiem jak go rozwiązać. Mianowicie chodzi tutaj o zmienna struktury mm (który nie jest zainicjalizowana). Po prostu nie wiem jak z tego wybrnąć.&lt;/p&gt;



&lt;pre class=&quot;brush:cpp;&quot;&gt;
#include &amp;lt;iostream&amp;gt;
struct Batonik
{
        char marka[40];
        double waga;
        int kalorie;
};

void fun (Batonik &amp;amp; ps, const char * naz = &quot;Millenium Munch&quot;, double masa = 2.85, int wart = 350);

int main()
{
        Batonik mm; //powinna byc zainicjalizowana!
        fun (mm);

        return 0;
}

void fun(Batonik *ps, char * naz, double masa, int wart)
{
        naz = ps-&amp;gt;marka;
        masa = ps-&amp;gt;waga;
        wart = ps-&amp;gt;kalorie;
        std::cout &amp;lt;&amp;lt; &quot;Nazwa: &quot;&amp;lt;&amp;lt; naz &amp;lt;&amp;lt; &quot;\nWaga: &quot; &amp;lt;&amp;lt; masa &amp;lt;&amp;lt; &quot;\nKalorie: &quot; &amp;lt;&amp;lt; wart &amp;lt;&amp;lt; std::endl;
}
&lt;/pre&gt;



&lt;p&gt;&amp;nbsp;&lt;/p&gt;</description>
<category>C i C++</category>
<guid isPermaLink="true">https://forum.pasja-informatyki.pl/336129/referencja-struktury-w-funkcji-c</guid>
<pubDate>Tue, 20 Mar 2018 19:51:22 +0000</pubDate>
</item>
<item>
<title>Referencja w funkcji C++</title>
<link>https://forum.pasja-informatyki.pl/317633/referencja-w-funkcji-c</link>
<description>

&lt;p&gt;Cześć,
&lt;br&gt;
Napisałem prosty program z dwiema funkcjami - ma on wczytywać znaki do tablicy a następnie je wypisywać ( dwie oddzielne funkcje). Niby prosta rzecz ale nie mogę pojąć jednej rzeczy - w funkcjach nie mogę dać &quot;&amp;amp;&quot; przy nazwie tablicy na której działam. Wiem że, żeby działać na &quot;oryginalnych&quot; zmiennych muszę dać ampersand. Tutaj jest na odwrót! Program działa tylko bez niego! Poniżej wklejam program z ampersandami ( nie działa), po ich usunięciu działa super. Dlaczego w tablicach nie daje się &quot;&amp;amp;&quot;?
&lt;br&gt;
Pozdrawiam!
&lt;br&gt;
&amp;nbsp;&lt;/p&gt;



&lt;pre class=&quot;brush:cpp;&quot;&gt;
#include &amp;lt;iostream&amp;gt;

using namespace std;
const int W=3;
const int K=2;

void wczytaj(char &amp;amp;n[W][K]){
    for(int i=0;i&amp;lt;W;i++){
        for(int j=0;j&amp;lt;K;j++){
            cin&amp;gt;&amp;gt;n[i][j];
        }
    }
}

void drukuj(char &amp;amp;n[W][K]){
    for(int i=0;i&amp;lt;W;i++){
        for(int j=0;j&amp;lt;K;j++){
            cout&amp;lt;&amp;lt;n[i][j]&amp;lt;&amp;lt;&quot;\t&quot;;
        }
        cout&amp;lt;&amp;lt;endl;
    }
}

int main()
{
    char a[W][K];
    char b[W][K];
    wczytaj(a);
    drukuj(a);
    wczytaj(b);
    drukuj(b);





    return 0;
}

&lt;/pre&gt;



&lt;p&gt;&amp;nbsp;&lt;/p&gt;</description>
<category>C i C++</category>
<guid isPermaLink="true">https://forum.pasja-informatyki.pl/317633/referencja-w-funkcji-c</guid>
<pubDate>Thu, 11 Jan 2018 00:53:35 +0000</pubDate>
</item>
<item>
<title>Zwracanie referencji</title>
<link>https://forum.pasja-informatyki.pl/132615/zwracanie-referencji</link>
<description>

&lt;pre class=&quot;brush:cpp;&quot;&gt;

#include &amp;lt;iostream&amp;gt;
using namespace std;
int &amp;amp;dodaj(int&amp;amp;,int&amp;amp;);
int main()
{
    int a = 5;
    int b = 5;
    cout&amp;lt;&amp;lt; dodaj(dodaj(a,b),b);
}
int &amp;amp;dodaj(int&amp;amp; a,int&amp;amp; b)
{
   return a+b;
}&lt;/pre&gt;



&lt;p&gt;&amp;nbsp;&lt;/p&gt;



&lt;p&gt;Dlaczego ten jakże prosty przykład nie chce się skompilować? Gdzie znajduje się błąd?&lt;/p&gt;



&lt;p&gt;&amp;nbsp;&lt;/p&gt;</description>
<category>C i C++</category>
<guid isPermaLink="true">https://forum.pasja-informatyki.pl/132615/zwracanie-referencji</guid>
<pubDate>Wed, 20 Apr 2016 22:01:19 +0000</pubDate>
</item>
<item>
<title>Przekazywanie referencyjne tablicy znaków (string)</title>
<link>https://forum.pasja-informatyki.pl/78605/przekazywanie-referencyjne-tablicy-znakow-string</link>
<description>

&lt;p&gt;&lt;strong&gt;Witam. Probelm, który opiszę napotkałem w języku Pawn. Jako, że jest on prawie identyczny jak C++, napisałem podbny kod w tym języku i okazało się, że w nim problem także występuje.
&lt;br&gt;

&lt;br&gt;
Otóż (nie wiem czy dobrze to nazywam) chciałbym aby funkcja za pomocą referencji zwróciła mi dwie wartości, np.:&lt;/strong&gt;
&lt;br&gt;
&amp;nbsp;&lt;/p&gt;



&lt;pre class=&quot;brush:cpp;&quot;&gt;
#include &amp;lt;iostream&amp;gt;
#include &amp;lt;string.h&amp;gt;

using namespace std;

void funkcja(int l1, int l2, int &amp;amp;suma, int &amp;amp;roznica)
{
	suma = l1+l2;
	roznica = l1-l2;
}

int main()
{
	system(&quot;cls&quot;);

	int sumka, rozni;
	
	funkcja(3, 4, sumka, rozni);
	
	cout&amp;lt;&amp;lt;&quot;suma &quot; &amp;lt;&amp;lt;sumka&amp;lt;&amp;lt;&quot; roznica: &quot; &amp;lt;&amp;lt;rozni;
	system(&quot;PAUSE&amp;gt;NULL&quot;);
	return 0;
	
}&lt;strong&gt;
&lt;/strong&gt;&lt;/pre&gt;



&lt;p&gt;&amp;nbsp;&lt;/p&gt;



&lt;p&gt;&lt;strong&gt;Do tej pory, wszystko działa poprawnie. Jednak jeśli chcę dodać jeszcze jedną zmienną, która do której zostani wpisany string, pojawia się już problem.&lt;/strong&gt;&lt;/p&gt;



&lt;pre class=&quot;brush:cpp;&quot;&gt;
#include &amp;lt;iostream&amp;gt;
#include &amp;lt;string.h&amp;gt;

using namespace std;

void funkcja(int l1, int l2, int &amp;amp;suma, int &amp;amp;roznica, string &amp;amp;jakistekst[30])
{
	suma = l1+l2;
	roznica = l1-l2;
	jakistekst = &quot;raz,dwa,trzy&quot;;
}

int main()
{
	system(&quot;cls&quot;);

	int sumka, rozni;
	string tekst[30];
	
	funkcja(3, 4, sumka, rozni, tekst);
	
	cout&amp;lt;&amp;lt;&quot;suma &quot; &amp;lt;&amp;lt;sumka&amp;lt;&amp;lt;&quot; roznica: &quot; &amp;lt;&amp;lt;rozni&amp;lt;&amp;lt; &quot; tekst: &quot; &amp;lt;&amp;lt; tekst;
	system(&quot;PAUSE&amp;gt;NULL&quot;);
	return 0;
	
}&lt;/pre&gt;



&lt;blockquote&gt;


&lt;pre class=&quot;brush:cpp;&quot;&gt;
Błędy:
7 C:\Dev-Cpp\Examples\Hello\Hello.cpp declaration of `jakistekst' as array of references&amp;nbsp;
&amp;nbsp;C:\Dev-Cpp\Examples\Hello\Hello.cpp In function `void funkcja(int, int, int&amp;amp;, int&amp;amp;)':&amp;nbsp;
10 C:\Dev-Cpp\Examples\Hello\Hello.cpp `jakistekst' undeclared (first use this function)&amp;nbsp;
&amp;nbsp; (Each undeclared identifier is reported only once for each function it appears in.)&amp;nbsp;
&amp;nbsp;C:\Dev-Cpp\Examples\Hello\Hello.cpp In function `int main()':&amp;nbsp;
7 C:\Dev-Cpp\Examples\Hello\Hello.cpp too many arguments to function `void funkcja(int, int, int&amp;amp;, int&amp;amp;)'&amp;nbsp;
20 C:\Dev-Cpp\Examples\Hello\Hello.cpp at this point in file&amp;nbsp;
&lt;/pre&gt;
&lt;/blockquote&gt;



&lt;p&gt;&lt;strong&gt;&lt;em&gt;Dodam jeszcze, że w języku Pawn, treść błędu to:&lt;/em&gt;&amp;nbsp;&lt;/strong&gt;&lt;/p&gt;



&lt;blockquote&gt;


&lt;p&gt;
&lt;br&gt;
variable cannot be both a reference and an array (variable &quot;dalszaczesc&quot;)&amp;nbsp;&lt;/p&gt;
&lt;/blockquote&gt;</description>
<category>C i C++</category>
<guid isPermaLink="true">https://forum.pasja-informatyki.pl/78605/przekazywanie-referencyjne-tablicy-znakow-string</guid>
<pubDate>Thu, 12 Nov 2015 00:52:46 +0000</pubDate>
</item>
<item>
<title>cpp referencja</title>
<link>https://forum.pasja-informatyki.pl/76794/cpp-referencja</link>
<description>

&lt;p&gt;Witam.&lt;/p&gt;



&lt;p&gt;Mam taki oto kod:&lt;/p&gt;



&lt;pre class=&quot;brush:as3;&quot;&gt;
wxArrayString str;
  
  //Get All Files under /usr/sip directory recursively
  wxDir::GetAllFiles(&quot;/usr/sip&quot;,&amp;amp;str,wxEmptyString,wxDIR_FILES | wxDIR_DIRS);
  
  for (unsigned int index=0;index &amp;lt; str.GetCount();index++)
  {
    cout&amp;lt;&amp;lt; str[index]&amp;lt;&amp;lt; endl;
  }&lt;/pre&gt;



&lt;p&gt;Mógłby mi ktoś wyjaśnić jaki cel ma użycie tutaj referencji &amp;amp;str&lt;/p&gt;



&lt;p&gt;Ten fragment kodu nie jest mojego autorstwa, staram się go zrozumieć&lt;/p&gt;



&lt;p&gt;?&lt;/p&gt;



&lt;p&gt;Link do całego art:&amp;nbsp;&lt;/p&gt;



&lt;p&gt;&lt;a href=&quot;http://www.codeprogress.com/cpp/libraries/wxwidgets/showWxExample.php?index=47&amp;amp;key=wxDirGetfileRecursively&quot; rel=&quot;nofollow&quot; target=&quot;_blank&quot;&gt;http://www.codeprogress.com/cpp/libraries/wxwidgets/showWxExample.php?index=47&amp;amp;key=wxDirGetfileRecursively&lt;/a&gt;&lt;/p&gt;</description>
<category>C i C++</category>
<guid isPermaLink="true">https://forum.pasja-informatyki.pl/76794/cpp-referencja</guid>
<pubDate>Sat, 07 Nov 2015 00:26:50 +0000</pubDate>
</item>
</channel>
</rss>