Du bist nicht eingeloggt! Möglicherweise kannst du deswegen nicht alles sehen.
  (Noch kein mods.de-Account? / Passwort vergessen?)
Zur Übersichtsseite
Hallo anonymer User.
Bitte logge dich ein
oder registriere dich!
 Moderiert von: Irdorath, statixx, Teh Wizard of Aiz


 Thema: pOT-lnformatik, Mathematik, Physik XXI ( X-Ray-Edition )
« erste « vorherige 1 ... 18 19 20 21 [22] 23 24 25 26 ... 50 nächste » letzte »
erste ungelesene Seite | letzter Beitrag 
red

AUP Redh3ad 11.10.2009
Parameter ans Programm und dann

 
Code:
if "foo" in args:
    import foo
else:
    import bar


und falls du nicht für jedes weitere Replacement ein if dranhängen willst:
https://docs.python.org/3/library/importlib.html#importlib.import_module
24.10.2017 12:07:14  Zum letzten Beitrag
[ zitieren ] [ pm ] [ diesen post melden ]
Oli

AUP Oli 21.12.2018
Ich werd bekloppt. Ihr kennt ja bestimmt den einfachen Monte Carlo Algorithmus um Pi zu bestimmen. Ich habe den in Julia und in C++ geschrieben und ich kriege es auf Teufel komm raus nicht hin, auch nur annährend an die Performance von Julia zu kommen. Why?

Le C++ code
 
Code:
#include <iostream>
#include <random>

#define N_TOTAL 100000000

int main(int argc, char const *argv[]) {
    unsigned long n_inside(0);

    std::random_device rd;
    std::mt19937_64 generator(rd());
    std::uniform_real_distribution<double> distr;

    for(unsigned long i=0; i < N_TOTAL; ++i) {
        double x = distr(generator);
        double y = distr(generator);
        
        if(x*x + y*y < 1)
           n_inside++;
    }

    printf("%.10f\n", (double)n_inside / N_TOTAL * 4);
    return 0;
}


le Julia code
 
Code:
function compute_pi(N::Int)
    n_landed_in_circle = 0
    for i = 1:N
        x = rand()
        y = rand()

        if x*x + y*y < 1.0
            n_landed_in_circle += 1
        end
    end

    return n_landed_in_circle / N * 4.0    
end

println(compute_pi(100000000))


Le timings
 
Code:
 $ time ./pi_serial
3.1415853200
./pi_serial  3.78s user 0.01s system 99% cpu 3.794 total
 $ time julia pi_serial.julia
3.14154468
julia pi_serial.julia  1.43s user 0.05s system 99% cpu 1.490 total


Verhält sich mit plain C und rand() auch so. Ich bin relativ sicher, dass Julia intern auch double precision und den mersenne twister nutzt. Ist std::mt19937_64 so schlecht oder was geht hier vor?

/e: mit -O3 kompiliert, gcc 6.X. -Ofast und/oder clang machen nichts aus.
[Dieser Beitrag wurde 1 mal editiert; zum letzten Mal von Oli am 24.10.2017 14:52]
24.10.2017 14:51:06  Zum letzten Beitrag
[ zitieren ] [ pm ] [ diesen post melden ]
Oli

AUP Oli 21.12.2018
Na gut, habs, wenn ich die gleiche mersenne twister lib wie Julia nutze, http://www.math.sci.hiroshima-u.ac.jp/~m-mat/MT/SFMT/#dSFMT, dann bin ich um nen Faktor 3 schneller.

Ist ja schade, dass die c++ stl da so schlecht performed.
24.10.2017 15:04:05  Zum letzten Beitrag
[ zitieren ] [ pm ] [ diesen post melden ]
PutzFrau

Phoenix Female
Das ist die Strafe für diese Zeile:
 
Code:
#define N_TOTAL 100000000


24.10.2017 15:14:58  Zum letzten Beitrag
[ zitieren ] [ pm ] [ diesen post melden ]
Oli

AUP Oli 21.12.2018
zu c-ish oder hättest du lieber ein 1e8 gesehen? constexpr? argv[1]?
24.10.2017 15:18:12  Zum letzten Beitrag
[ zitieren ] [ pm ] [ diesen post melden ]
[CSF]Omega

Arctic
verschmitzt lachen
 
Code:
constexpr static const unsigned long N_TOTAL = 100000000ul;


was denn sonst?
[Dieser Beitrag wurde 1 mal editiert; zum letzten Mal von [CSF]Omega am 24.10.2017 15:21]
24.10.2017 15:21:21  Zum letzten Beitrag
[ zitieren ] [ pm ] [ diesen post melden ]
PutzFrau

Phoenix Female
Zu c-ish, und ja constexpr oder argv[1] wäre meine Wahl gewesen. :x
Ich bin da sehr penibel (auch wenn ich immer noch nur Java code traurig).

24.10.2017 15:23:44  Zum letzten Beitrag
[ zitieren ] [ pm ] [ diesen post melden ]
Oli

AUP Oli 21.12.2018
Bottom line: Julia ist schon eigentlich ganz schön krass. Kommt natürlich nicht an C/C++ ran, aber für so eine einfache JIT Sprache ist es klasse. Kann man bestimmt locker MATLAB mit ersetzen.
24.10.2017 15:26:27  Zum letzten Beitrag
[ zitieren ] [ pm ] [ diesen post melden ]
SwissBushIndian

AUP SwissBushIndian 07.11.2011
...
 
Zitat von PutzFrau

(auch wenn ich immer noch nur Java code traurig).



Auch da kann man ganz anständig programmieren wenn man es diametral anders macht als Oracle.
24.10.2017 15:29:50  Zum letzten Beitrag
[ zitieren ] [ pm ] [ diesen post melden ]
PutzFrau

Phoenix Female
@Oli: Schön, dass du Matlab erwähnst, diese Array 1er Sprachen Breites Grinsen

@SBI: Ja, das weiß ich schon, und ich würde sagen, mittlerweile bin ich ein durchaus kompetenter und effizienter Java Programmierer. Aber C++ mit Python ist halt echt schön. :x

24.10.2017 15:30:59  Zum letzten Beitrag
[ zitieren ] [ pm ] [ diesen post melden ]
Oli

AUP Oli 21.12.2018
 
Zitat von PutzFrau

@Oli: Schön, dass du Matlab erwähnst, diese Array 1er Sprachen Breites Grinsen


Du würdest lachen, wüsstest du, dass Julia auch 1 based ist.
24.10.2017 15:32:41  Zum letzten Beitrag
[ zitieren ] [ pm ] [ diesen post melden ]
PutzFrau

Phoenix Female
 
Zitat von Oli

 
Zitat von PutzFrau

@Oli: Schön, dass du Matlab erwähnst, diese Array 1er Sprachen Breites Grinsen


Du würdest lachen, wüsstest du, dass Julia auch 1 based ist.



Deswegen mein Kommentar. Immerhin ist Julia die bessere 1er Sprache!

24.10.2017 15:38:06  Zum letzten Beitrag
[ zitieren ] [ pm ] [ diesen post melden ]
Immortalized

AUP Immopimmel 07.06.2018
Matlab: wunderbar und fein
24.10.2017 16:57:02  Zum letzten Beitrag
[ zitieren ] [ pm ] [ diesen post melden ]
B0rG*

Gordon
Wäre der Julia code eventuell unerhört viel schneller wenn man ihn vektorisiert (evtl in chunks wenn der ram nicht reicht) formulieren würde? Kenne mich mit Julia nicht aus, aber ich nehme an Wechsel von interpretiertem Code zu Bibliothekscode sind wie in Python auch in Julia teuer?
24.10.2017 17:16:15  Zum letzten Beitrag
[ zitieren ] [ pm ] [ diesen post melden ]
Oli

AUP Oli 21.12.2018
Ist doch sau schnell. Da Julia ja eh JIT compiled wird glaube ich, dass vektorisieren nicht viel bringen würde.
24.10.2017 17:18:58  Zum letzten Beitrag
[ zitieren ] [ pm ] [ diesen post melden ]
csde_rats

AUP csde_rats 04.09.2021
Bei Julia wird immer nur von LLVM-JIT geredet, ob die Kiste überhaupt einen Interpreter-Fallback hat?
24.10.2017 17:19:36  Zum letzten Beitrag
[ zitieren ] [ pm ] [ diesen post melden ]
Xerxes-3.0

AUP Xerxes-3.0 07.09.2008
 
Zitat von Oli

Ist doch sau schnell. Da Julia ja eh JIT compiled wird glaube ich, dass vektorisieren nicht viel bringen würde.


Würdest du mal probieren, ob Julia schneller wird, wenn du die if-Abfrage durch ein
 
Code:
n_landed_in_circle += (x*x + y*y < 1.0)

ersetzt? Matlab hat sowas gefressen und war schneller. Breites Grinsen
Und beim Vektorisieren statt ner Schleife wars auch um ein Vielfaches schneller.
24.10.2017 18:38:55  Zum letzten Beitrag
[ zitieren ] [ pm ] [ diesen post melden ]
PutzFrau

Phoenix Female
Matlab != Julia und das ist auch der Grund, warum das Vektorisieren so viel bringt in Matlab/Python (kann durchaus drei Größenordnungen sein).

edit: + statt if könnte allerdings tatsächlich ein wenig helfen.

[Dieser Beitrag wurde 1 mal editiert; zum letzten Mal von PutzFrau am 24.10.2017 19:20]
24.10.2017 19:16:01  Zum letzten Beitrag
[ zitieren ] [ pm ] [ diesen post melden ]
csde_rats

AUP csde_rats 04.09.2021
GCC macht da sehr amüsanten Code raus:
if(x*x + y*y < 1)
           n_inside++;


1        lea     rax, [rbx+1]
2        vmovsd  xmm6, QWORD PTR .LC6[rip]
3        vmulsd  xmm1, xmm1, xmm1
4        vfmadd132sd     xmm0, xmm1, xmm0
5        vucomisd        xmm6, xmm0
6        cmova   rbx, rax


xmm1 ist offensichtlich y, xmm0 ist x. Beim Label LC6 liegt "1.0" (als zwei 32-Bit Werte):

.LC6:
        .long   0
        .long   1072693248


1) setzt rax = rbx (n_inside) + 1, für später.
2) holt uns also 1.0 ran,
3) ist y*y,
4) ist x*x + 3 (als FMA).
5) Vergleicht dann 4 mit unserer 1.0; das Ergebnis ist CF=0 und ZF=0 wenn xmm6 (1.0) größer als 4 ist.
6) ist ein conditional move, der rax nach rbx schreibt genau dann wenn CF=0 und ZF=0.
[Dieser Beitrag wurde 1 mal editiert; zum letzten Mal von csde_rats am 24.10.2017 19:57]
24.10.2017 19:55:41  Zum letzten Beitrag
[ zitieren ] [ pm ] [ diesen post melden ]
nobody

nobody
Julia ist schon ziemlich geil, einer unserer Techniker schwört drauf und macht echt cooles Zeug damit. Sind mir aber definitiv noch zu viele Breaking Changes von Release zu Release als dass ich im Alltag darauf umsteigen könnte.

--

Anderes Thema, tut mal was für die Umwelt und helft dem Ökokasper. Folgende Problematik: Ich steh an Punkt X in einem Mischwald und will wissen wie viel % Baumart A, wieviel % Baumart B in verschiedenen Himmelsrichtungen stehen (bis zu einer gewissen, noch nicht festgelegten Entfernung).
Bin mir noch nicht darüber im Klaren, in welcher Form die Kartierung vorliegt, aber ich nehme mal an ich kann einfach ein Rasterbild bekommen. Ob ich die Zählung direkt grafisch mache, oder das Raster vorher in eine Matrix umwandel ist mir wurst. Das bekomme ich hin. Grafisch wäre aber vielleicht geschickter, kann auch sein, dass ich 'ne Punktwolke kriege. peinlich/erstaunt

Ich hab mal 'ne Skizze gemacht:


Von Hand würde ich einfach in Photoshop rumschnippeln und mir Histogramme erstellen, aber das will ich gerne vermeiden, weil ich eventuell auch mit verschiedenen Entfernungen / Radii von dem Kreis arbeiten möchte. Wie kann ich möglichst automatisiert und mit frei wählbarem Radius die farbigen Kästen in jedem Kreisabschnitt zählen? Ich steh total auf dem Schlauch. Für rechteckige Segmente würd ich's ja noch irgendwie hingedengelt kriegen.

Jedes Stichwort, nach dem ich Stackexchange durchwühlen kann hilft. /e: Achso, ist vielleicht nicht ganz irrelevant: Ich "kann" halbwegs okay Python, Matlab, und wenn ihr mich ärgern wollt R. Ist in Mathematica vermutlich ein Oneliner, aber dafür haben wir keine Lizenz mehr. traurig
[Dieser Beitrag wurde 1 mal editiert; zum letzten Mal von nobody am 24.10.2017 22:40]
24.10.2017 22:39:37  Zum letzten Beitrag
[ zitieren ] [ pm ] [ diesen post melden ]
Rootsquash

Arctic
Ich sehe das Problem nicht, oder habe die Frage nicht kapiert: Du suchst eine Schleife, die alle Pixel eines Küchenstücks abläuft, oder, alternativ, eine Schleife, die alle Pixel durchläuft und guckt in welchem Küchenstück der Pixel liegt, damit der Baumart-Zähler des richtigen Küchenstücks hochgezählt wird? Wo ist das Problem?

Winkel zwischen Mittelpunkt und Pixel bestimmen -> du weißt in welchem Küchenstück der Pixel liegt. Dann noch kurz den Abstand überprüfen und wenn an dem Pixel ein Baum steht, den entsprechenden Zähler hochzählen.
24.10.2017 22:58:41  Zum letzten Beitrag
[ zitieren ] [ pm ] [ diesen post melden ]
Oli

AUP Oli 21.12.2018
 
Zitat von PutzFrau

Matlab != Julia und das ist auch der Grund, warum das Vektorisieren so viel bringt in Matlab/Python (kann durchaus drei Größenordnungen sein).

edit: + statt if könnte allerdings tatsächlich ein wenig helfen.




Vektorisieren in python (numpy) bedeutet einfach, dass die Schleife in C code ausgeführt wird, deshalb werden dafür auch numpy arrays benötigt. numpy.vectorize hingegen tut gar nichts, außer in Python über die Elemente zu loopen:
 
Code:
The vectorize function is provided primarily for convenience, not for performance. The implementation is essentially a for loop.


Ein anderes Thema ist Matlab. Matlab hat sein 2007 oder so komplette JIT Unterstützung. Wieso die Loops da immer noch so krankhaft langsam sind ist echt ein Mysterium. Aber Matlab ist ja auch eine Krücke.
25.10.2017 7:35:52  Zum letzten Beitrag
[ zitieren ] [ pm ] [ diesen post melden ]
nobody

nobody
 
Zitat von Rootsquash

Ich sehe das Problem nicht, oder habe die Frage nicht kapiert: Du suchst eine Schleife, die alle Pixel eines Küchenstücks abläuft, oder, alternativ, eine Schleife, die alle Pixel durchläuft und guckt in welchem Küchenstück der Pixel liegt, damit der Baumart-Zähler des richtigen Küchenstücks hochgezählt wird? Wo ist das Problem?

Winkel zwischen Mittelpunkt und Pixel bestimmen -> du weißt in welchem Küchenstück der Pixel liegt. Dann noch kurz den Abstand überprüfen und wenn an dem Pixel ein Baum steht, den entsprechenden Zähler hochzählen.



Fragestellung richtig erkannt. Das Problem liegt darin, dass ich nie richtig programmieren gelernt hab und gelegentlich sowohl mathematisch als auch kreativ etwas gehemmt bin. Augenzwinkern Dein Lösungsvorschlag klingt gut, danke!
25.10.2017 10:38:16  Zum letzten Beitrag
[ zitieren ] [ pm ] [ diesen post melden ]
Viva la Bluescreen

AUP Viva la Bluescreen 31.01.2008
Indirekte Programmierfrage:

Suche eine gehostete Datenbank die ich über z.B. REST abfragen und befüllen kann.
Es geht um reine Metadaten und einfache Struktur (vglb. mit Adressbuch) und wenige Datensätze (<10MB).

Ziel ist es die Datenbank via .NET und einer Website via JS zu nutzen, eine Authentifizierung ist also nötig.

Vorhanden ist ein gehosteter MySQL-Server aber wäre auch Anbietern nicht abgeneigt. Amazon DynamoDB wäre eine Option, ist aber bzgl. Authentifizierung auf einer Website nicht so angenehm.

Ich habe hiermit experimentiert bekomme aber den AUTH nicht hin: https://github.com/mevdschee/php-crud-api

Hat irgendwer noch eine Idee oder Erfahrung mit sowas?
25.10.2017 13:10:37  Zum letzten Beitrag
[ zitieren ] [ pm ] [ diesen post melden ]
csde_rats

AUP csde_rats 04.09.2021
verschmitzt lachen
LDAP
[Dieser Beitrag wurde 1 mal editiert; zum letzten Mal von csde_rats am 25.10.2017 13:15]
25.10.2017 13:12:51  Zum letzten Beitrag
[ zitieren ] [ pm ] [ diesen post melden ]
Oli

AUP Oli 21.12.2018
Hast du Vorerfahrungen in einer Programmiersprache? Weil, dann nimm einfach Framework X in dieser Sprache. Oder nimm eine DB, die Json speichern kann, und dann kannst du die REST PUTS direkt in die DB speichern.

Wenn du eh den Client code in JS schreibst, mach doch eine node.js Anwendung. Ich würde Django + DRF nehmen.
 
Zitat von csde_rats

LDAP


Wat. Bis er das aufgesetzt, die Konfigurations-Scheiße und Schemata verstanden und geschrieben hat, hat er seine REST Schnittstelle schon 5 mal mit MySQL implementiert.
[Dieser Beitrag wurde 1 mal editiert; zum letzten Mal von Oli am 25.10.2017 13:14]
25.10.2017 13:13:20  Zum letzten Beitrag
[ zitieren ] [ pm ] [ diesen post melden ]
Viva la Bluescreen

AUP Viva la Bluescreen 31.01.2008
Ich bin jetzt kein Vollwert Programmierer aber arbeite eben an etwas in .NET/C#. Theoretisch könnte ich das auch alles in einer lokalen Datenbank/Dateistorage abfackeln, Ziel ist es aber manche Informationen später auch via Website anzuzeigen. Daher die Idee direkt die wenigen Daten dort abzulegen. Meine Erfahrung in JS ist vermutlich in 2h zusammengefasst ;-).

Es muss halt eine gehostete Datenbank sein, ich hab keinen root-Server sondern nur einen Shared-Server mit MySQL und da ist man etwas limitiert. Amazon DynamoDB wäre praktisch wegen direktem JSON Storage und via .NET einfach anzubinden. Ist aber wohl via JS nicht so nett aufzurufen (finde nur Beispiele bei dem man noch nen Facebook-Auth braucht und das ist mir eigentlich alles zu viel).
25.10.2017 13:18:54  Zum letzten Beitrag
[ zitieren ] [ pm ] [ diesen post melden ]
Oli

AUP Oli 21.12.2018
Wenn du den Auth dynamisch handlen willst, musst du glaube ich eine Anwendung auf deinem Server bereit stellen. Wenn es an diesem PHP Projekt nur am Auth hapert; stell doch spezifischere Fragen, ggf. auch da im Bug tracker.
25.10.2017 13:24:03  Zum letzten Beitrag
[ zitieren ] [ pm ] [ diesen post melden ]
Viva la Bluescreen

AUP Viva la Bluescreen 31.01.2008
 
Zitat von Oli

Wenn du den Auth dynamisch handlen willst, musst du glaube ich eine Anwendung auf deinem Server bereit stellen. Wenn es an diesem PHP Projekt nur am Auth hapert; stell doch spezifischere Fragen, ggf. auch da im Bug tracker.



Ja das Projekt ist irgendwie etwas wirr und mein PHP zu schlecht. Mir würde was mit 2-3 Accounts reichen, nur einer davon Schreibend, der Rest lesend. Naiv wie ich war ging ich davon aus, dass es so Dienste wie Sand am Meer gibt, aber scheinbar nicht.
25.10.2017 14:24:28  Zum letzten Beitrag
[ zitieren ] [ pm ] [ diesen post melden ]
RichterSkala

AUP RichterSkala 31.12.2010
Hmm... wenn ich meine Binary Daten in nem ASCII Format ausgebe und den Text dann zippe, müsste dann in etwa die selbe Größe wie beim bloßen blob rauskommen? Stehe mal wieder vor dem Problem mir ein Dateiformat ausdenken zu müssen traurig
25.10.2017 14:53:47  Zum letzten Beitrag
[ zitieren ] [ pm ] [ diesen post melden ]
 Thema: pOT-lnformatik, Mathematik, Physik XXI ( X-Ray-Edition )
« erste « vorherige 1 ... 18 19 20 21 [22] 23 24 25 26 ... 50 nächste » letzte »

mods.de - Forum » Public Offtopic » 

Hop to:  

Mod-Aktionen:
18.06.2018 07:25:48 Sharku hat diesen Thread geschlossen.
04.05.2017 21:55:58 Sharku hat diesem Thread das ModTag 'pimp' angehängt.

| tech | impressum