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 XIX ( zuviel Geld über? mehr Geräte kaufen! )
« erste « vorherige 1 ... 45 46 47 48 [49] 50 nächste » letzte »
erste ungelesene Seite | letzter Beitrag 
RichterSkala

AUP RichterSkala 31.12.2010
böse gucken
Wer hat eigentlich diese Web of Knowledge Scheiße geschrieben?

Jetzt schon zum xten mal passiert, dass man sich mal ein Ergebnis irgendwo als Tab hingeschoben hat und dann Tage später anschauen möchte - nur egal wo man drauf klickt (z.B. auf F*CKIN* Full Text From Publisher): Web of Knowledge stellt fest, dass die Session hier jetzt ja wohl abgelaufen sei und führt einen zur Startseite. Ergebnisse wech. WTF
03.05.2016 12:05:42  Zum letzten Beitrag
[ zitieren ] [ pm ] [ diesen post melden ]
horscht(i)

AUP horscht(i) 14.09.2014
böse gucken
 
Zitat von RichterSkala

fuck yeah, lasers

http://i.imgur.com/VrDtGJc.jpg


Thorlabs Abschwächer und Newport Mounts!?
Da kann ja nix rumkommen...wenigstens die HeNe Röhre selbst geblasen?
03.05.2016 13:51:07  Zum letzten Beitrag
[ zitieren ] [ pm ] [ diesen post melden ]
RichterSkala

AUP RichterSkala 31.12.2010
...
Hase, das ne Hohlfaser für SPM. Und die Abschwächer sind auf ner Webcam für selbstgebastelte pointing stabilisierung (die Lustigerweise immer noch besser funktioniert wie die kommerzielle...). Was du jetzt gegen die Newport Mounts hast weiß ich aber auch nicht?
03.05.2016 14:52:16  Zum letzten Beitrag
[ zitieren ] [ pm ] [ diesen post melden ]
MCignaz

Arctic
Java
Wie starte ich elegant nen Thread in Java? Hintergrund:

 
Code:
int funktionA(int b) {
  //do something
  return c;
}

int parallel(int d) {
  int e = new Thread(funktionA(d));
  return e;
}


Habe es mit nem Lambda versucht (irgendwas a la Runnable foo = () -> { funktionA(d); }; ), allerdings muss dann das e final sein und nen Wert returnen/zurueckschreiben aus dem Lambda hab ich dann auch nicht hinbekommen. Wie mache ich? Augenzwinkern
03.05.2016 22:50:58  Zum letzten Beitrag
[ zitieren ] [ pm ] [ diesen post melden ]
csde_rats

AUP csde_rats 04.09.2021
FutureTask?
03.05.2016 22:56:14  Zum letzten Beitrag
[ zitieren ] [ pm ] [ diesen post melden ]
MCignaz

Arctic
Das sieht ja ziemlich gut aus. Jetzt ist aber meine parallel-Funktion zusaetzlich noch static, was ich gern behalten wuerde. Ich muss dem FutureTask aber n Callable geben, wie stell ich das an, das ist mir noch nicht so klar.
03.05.2016 23:03:35  Zum letzten Beitrag
[ zitieren ] [ pm ] [ diesen post melden ]
Virtus

Arctic
 
Zitat von Wraith of Seth

Topologiedefinition.


Wer fordert, dass topologische Räume nichtleer sind, hat die Kontrolle über seine Mathematik verloren.
03.05.2016 23:05:42  Zum letzten Beitrag
[ zitieren ] [ pm ] [ diesen post melden ]
MCignaz

Arctic
Sieht dann jetzt so aus:

 
Code:
FutureTask<Integer> future1 = new FutureTask<>(new Callable<Integer>() {
  public Integer call() {
    return funktionA(input);
  }
});


Funktioniert. Falls das aber jemand noch schicker (Lambda?!) hinbekommt, wuerd ich es mir gern ansehen.
03.05.2016 23:25:18  Zum letzten Beitrag
[ zitieren ] [ pm ] [ diesen post melden ]
horscht(i)

AUP horscht(i) 14.09.2014
 
Zitat von RichterSkala

Hase, das ne Hohlfaser für SPM. Und die Abschwächer sind auf ner Webcam für selbstgebastelte pointing stabilisierung (die Lustigerweise immer noch besser funktioniert wie die kommerzielle...). Was du jetzt gegen die Newport Mounts hast weiß ich aber auch nicht?


Gar nix.
Dachte, du würdest da Thorlabs Zeug reinschrauben. Da friert ja im Labor die Hölle zu.
Die Webcam dient nur zur Pointing-Stabilisierung? Also keine Strahlprofilvermessung? Da hätte ich ein bisschen Schiss vor thermischen Linsen in den Abschwächern. Mit wie viel Leistung belastet du die?
Korrigierst du nur Winkel oder auch Offsets von der (theoretischen) optischen Achse deines Strahlengangs?
04.05.2016 0:00:07  Zum letzten Beitrag
[ zitieren ] [ pm ] [ diesen post melden ]
PutzFrau

Phoenix Female
 
Zitat von MCignaz

Sieht dann jetzt so aus:

 
Code:
FutureTask<Integer> future1 = new FutureTask<>(new Callable<Integer>() {
  public Integer call() {
    return funktionA(input);
  }
});


Funktioniert. Falls das aber jemand noch schicker (Lambda?!) hinbekommt, wuerd ich es mir gern ansehen.



 
Code:
FutureTask<Integer> future1 = new FutureTask<>(() -> funktionA(input));

?

04.05.2016 0:21:53  Zum letzten Beitrag
[ zitieren ] [ pm ] [ diesen post melden ]
RichterSkala

AUP RichterSkala 31.12.2010
 
Zitat von horscht(i)

Gar nix.
Dachte, du würdest da Thorlabs Zeug reinschrauben. Da friert ja im Labor die Hölle zu.
Die Webcam dient nur zur Pointing-Stabilisierung? Also keine Strahlprofilvermessung? Da hätte ich ein bisschen Schiss vor thermischen Linsen in den Abschwächern. Mit wie viel Leistung belastet du die?
Korrigierst du nur Winkel oder auch Offsets von der (theoretischen) optischen Achse deines Strahlengangs?


Die kriegen nen Reflex von ner Glasplatte ab, durch die etwa 3mJ durch geht, also vielleicht 1-3% davon? Nie gemessen Der Strahl ist fokusierend, ballert also schon gut auf den Chip, aber bisher hält er und bei der billig Webcam ist das egal. Die Webcam macht minimal auf Strahlprofil. Aber nur so weit, dass man sieht wenn der Strahl vorher irgendwo clipt. Das Lasersystem liefert aber eh ne beschissene Mode peinlich/erstaunt Ein Glück macht das die Glasfaser etwas sauber. Unser eigentlicher Beamprofiler hat bessere Abschwächer - aber der Chip ist dafür schon ganz schön krass durchlöchert Breites Grinsen


Das System stammt von meinem Vorgänger, der hatte das mal doppelt aufgebaut, um auch die Offsets korrigieren zu können, so wird das wohl hauptsächlich nur den Winkel korrigieren. Wir haben eigentlich ein teures System gekauft, dass schön beides mit PID, Piezo+Stepper und shot-to-shot macht, aber das Ding ist so over engineered, dass das noch keiner gut zum laufen bekommen hat.
[Dieser Beitrag wurde 1 mal editiert; zum letzten Mal von RichterSkala am 04.05.2016 2:15]
04.05.2016 2:11:18  Zum letzten Beitrag
[ zitieren ] [ pm ] [ diesen post melden ]
MCignaz

Arctic
 
Zitat von PutzFrau

 
Zitat von MCignaz

Sieht dann jetzt so aus:

 
Code:
FutureTask<Integer> future1 = new FutureTask<>(new Callable<Integer>() {
  public Integer call() {
    return funktionA(input);
  }
});


Funktioniert. Falls das aber jemand noch schicker (Lambda?!) hinbekommt, wuerd ich es mir gern ansehen.



 
Code:
FutureTask<Integer> future1 = new FutureTask<>(() -> funktionA(input));

?




Funzt, danke. Kannst du noch erklaeren, warum das funktioniert? Ich bin davon ausgegangen, dass ich FutureTask ein Objekt mitgeben muss, das Callable implementiert.

/Ich benutze jetzt ein Future, das ich dem ThreadPool submitte:
 
Code:
pool.submit( () -> funktionA(input) );


Nen ExecutorService brauche ich schon bei FutureTask, oder?
[Dieser Beitrag wurde 1 mal editiert; zum letzten Mal von MCignaz am 04.05.2016 8:54]
04.05.2016 8:33:10  Zum letzten Beitrag
[ zitieren ] [ pm ] [ diesen post melden ]
SwissBushIndian

AUP SwissBushIndian 07.11.2011
Das Lambda ist in diesem Fall Callable. Resulttype ist inferred.
[Dieser Beitrag wurde 1 mal editiert; zum letzten Mal von SwissBushIndian am 04.05.2016 8:39]
04.05.2016 8:37:39  Zum letzten Beitrag
[ zitieren ] [ pm ] [ diesen post melden ]
MCignaz

Arctic
Danke. Muss mir das wohl mal naeher ansehen. Augenzwinkern
04.05.2016 9:14:46  Zum letzten Beitrag
[ zitieren ] [ pm ] [ diesen post melden ]
MCignaz

Arctic
peinlich/erstaunt Ok, naechste Frage. Ich moechte eine ArrayList<ArrayList<T>>(n) haben. Wie initialisiert man das vernuenftig, sprich wie kann ich beim Initialisieren gleich n viele leere ArrayLists in meiner ArrayList haben. Da loopt man doch bestimmt nicht durch und macht add new ArrayList<T>(), oder?
04.05.2016 9:39:32  Zum letzten Beitrag
[ zitieren ] [ pm ] [ diesen post melden ]
csde_rats

AUP csde_rats 04.09.2021
Doch

Wenn ich Generics richtig im Kopf habe, wäre die saubere Deklaration sowas: List<List<Sonstwas>> var = new ArrayList<List<Sonstwas>>
[Dieser Beitrag wurde 1 mal editiert; zum letzten Mal von csde_rats am 04.05.2016 9:47]
04.05.2016 9:46:32  Zum letzten Beitrag
[ zitieren ] [ pm ] [ diesen post melden ]
MCignaz

Arctic
Und dann n mal add? Hmpf, nagut. Augenzwinkern
04.05.2016 9:49:21  Zum letzten Beitrag
[ zitieren ] [ pm ] [ diesen post melden ]
SwissBushIndian

AUP SwissBushIndian 07.11.2011
Die Frage ist auch, wofür du das brauchst? Bei Collections von Collection werde ich immer hellhörig.
04.05.2016 9:52:23  Zum letzten Beitrag
[ zitieren ] [ pm ] [ diesen post melden ]
gloerk

AUP gloerk 29.06.2008
 
Zitat von horscht(i)

 
Zitat von RichterSkala

Hase, das ne Hohlfaser für SPM. Und die Abschwächer sind auf ner Webcam für selbstgebastelte pointing stabilisierung (die Lustigerweise immer noch besser funktioniert wie die kommerzielle...). Was du jetzt gegen die Newport Mounts hast weiß ich aber auch nicht?


Gar nix.
Dachte, du würdest da Thorlabs Zeug reinschrauben. Da friert ja im Labor die Hölle zu.




Gibts da ein Problem? peinlich/erstaunt

Bin gerade auf deren Website und such Zeugs zusammen
04.05.2016 10:00:06  Zum letzten Beitrag
[ zitieren ] [ pm ] [ diesen post melden ]
MCignaz

Arctic
Ich bau fuer ne Uni-Aufgabe nen parallelen Mergesort mit variabel bestimmter Anzahl von Threads. Dazu splitte ich die urspruengliche Liste #Threads viele Listen auf. Die ganze Funktion schaut so aus:

 
Code:
public static <T extends Comparable<T>> ArrayList<T> parallelSort(ArrayList<T> input, int numberOfThreads) {
        if(input.size() <= 1) return input;

        ArrayList<ArrayList<T>> chunks = new ArrayList<>();
        for(int i = 0; i < numberOfThreads; ++i) chunks.add(new ArrayList<>());

        int position = 0;
        while (!input.isEmpty()) {
            chunks.get(position).add(input.remove(0));
            position = (position + 1) % numberOfThreads;
        }

        ExecutorService pool = Executors.newFixedThreadPool(numberOfThreads);
        ArrayList<Future<ArrayList<T>>> futures = new ArrayList<>();
        
        for(ArrayList<T> chunk : chunks) futures.add(pool.submit(() -> sort(chunk)));

        ArrayList<T> results = new ArrayList<>();

        for(Future<ArrayList<T>> future : futures) {
            try {
                results = merge(results, future.get());
            } catch (InterruptedException e) {
                e.printStackTrace();
            } catch (ExecutionException e) {
                e.printStackTrace();
            }
        }

        pool.shutdown();

        return results;
    }


Funktionieren tuts schonmal. Augenzwinkern
04.05.2016 10:01:58  Zum letzten Beitrag
[ zitieren ] [ pm ] [ diesen post melden ]
horscht(i)

AUP horscht(i) 14.09.2014
 
Zitat von gloerk

 
Zitat von horscht(i)

 
Zitat von RichterSkala

Hase, das ne Hohlfaser für SPM. Und die Abschwächer sind auf ner Webcam für selbstgebastelte pointing stabilisierung (die Lustigerweise immer noch besser funktioniert wie die kommerzielle...). Was du jetzt gegen die Newport Mounts hast weiß ich aber auch nicht?


Gar nix.
Dachte, du würdest da Thorlabs Zeug reinschrauben. Da friert ja im Labor die Hölle zu.




Gibts da ein Problem? peinlich/erstaunt

Bin gerade auf deren Website und such Zeugs zusammen


Nein, ich erzähle nur Blödsinn und witzel ein wenig rum.
Achte einfach drauf, ob wirklich alles zöllig oder wirklich alles metrisch bemast ist. Dann gehts gut.
04.05.2016 10:08:15  Zum letzten Beitrag
[ zitieren ] [ pm ] [ diesen post melden ]
RichterSkala

AUP RichterSkala 31.12.2010
Classic mistake. Breites Grinsen


Aber das Thorlabszeug ist manchmal billo. Oftmals auch gut (und man kriegt die Snacks dazu peinlich/erstaunt), aber manchmal auch billo.
04.05.2016 12:43:26  Zum letzten Beitrag
[ zitieren ] [ pm ] [ diesen post melden ]
MCignaz

Arctic
Ich teste den MergeSort gerade, bis zu nem 10.000-elementigen Array funktioniert der problemlos, aber 1.000.000 Elemente laeuft der unendlich, bei zwei Threads.

Liegts an der Heapsize?

/Ok wird doch fertig, dafür brauchts ewig, bis er das Sortieren beginnt. Dunno.
[Dieser Beitrag wurde 1 mal editiert; zum letzten Mal von MCignaz am 04.05.2016 13:40]
04.05.2016 12:50:17  Zum letzten Beitrag
[ zitieren ] [ pm ] [ diesen post melden ]
no.cigar

Arctic
...
Der muss halt erstmal den input in Teile hacken, was ja nicht nebenläufig passiert bei dir.

 
Code:
        while (!input.isEmpty()) {
            chunks.get(position).add(input.remove(0));
            position = (position + 1) % numberOfThreads;
        }


/edit:
Geht es hier darum Mergesort schneller zu machen oder darum ein nebenläufiges Mergesort zu implementieren?

/fakeedit:
Wer Nebenläufigkeit mit Java lehrt gehört gepaddelt.
[Dieser Beitrag wurde 2 mal editiert; zum letzten Mal von no.cigar am 04.05.2016 14:39]
04.05.2016 14:37:54  Zum letzten Beitrag
[ zitieren ] [ pm ] [ diesen post melden ]
B0rG*

Gordon
Ohne die genauen Java-APIs zu kennen, hat das von dir zitierte Codestück wahrscheinlich ohnehin quadratische Komplexität, da remove wahrscheinlich linear ist und linear oft aufgerufen wird. Damit wird der gesamte Algorithmus dominiert von dieser einen While-Schleife und die Parallelisierung bringt (asymptotisch) nichts.
04.05.2016 14:44:42  Zum letzten Beitrag
[ zitieren ] [ pm ] [ diesen post melden ]
MCignaz

Arctic
Ja, genau die Schleife hab ich auch als evil identifiziert, da muss ich nochmal ran.

Was mich allerdings noch etwas verwirrt, ist, dass wenn ich in ner For-Schleife den Algorithmus für aufsteigende Threadanzahlen aufrufe und die Zeit messe, ich nur Ergebnisse für ein und zwei Threads bekomme, alles andere ist 0. Wie kommt das?

/no.cigar: Nebenläufiges Mergesort mit beliebiger Anzahl von Threads.
[Dieser Beitrag wurde 1 mal editiert; zum letzten Mal von MCignaz am 04.05.2016 15:11]
04.05.2016 15:10:05  Zum letzten Beitrag
[ zitieren ] [ pm ] [ diesen post melden ]
no.cigar

Arctic
...
Dann lies dir nochmal genau durch wie der "divide"-Teil funktionieren sollte für diesen Algorithmus. (Hint: O=log(n))

Zum Testscenario:
Ich vermute mal das du durch Array.remove() deinen "input" leer machst, bin aber nicht so fit in den Java-Eigenheiten beim Arrayhandling.
04.05.2016 15:19:52  Zum letzten Beitrag
[ zitieren ] [ pm ] [ diesen post melden ]
PutzFrau

Phoenix Female
 
Zitat von MCignaz

 
Code:
        if(input.size() <= 1) return input;

        ArrayList<ArrayList<T>> chunks = new ArrayList<>();
        for(int i = 0; i < numberOfThreads; ++i) chunks.add(new ArrayList<>());

        int position = 0;
        while (!input.isEmpty()) {
            chunks.get(position).add(input.remove(0));
            position = (position + 1) % numberOfThreads;
        }




Warum löschst du überhaupt die Elemente aus dem input und fügst sie einzeln den einzelnen Listen hinzu? Mache dir eine Liste von Indizes, die Start und Ende der jeweiligen Teilliste indizieren oder eine Liste, die Views auf Teillisten enthält, e.g.

 
Code:
int size = input.size();
int chunkSize = size / numberOfThreads;
ArrayList<List<T>> chunks = new ArrayList<>();
for( int i = 0; i < size; i += chunkSize ) chunks.add( input.subList( i, Math.min( i + chunkSize, size ) );


Sowas in der Art. Habe es nicht getestet, da direkt ins Forum getippt, aber sollte klar sein.

[Dieser Beitrag wurde 1 mal editiert; zum letzten Mal von PutzFrau am 04.05.2016 16:09]
04.05.2016 15:27:02  Zum letzten Beitrag
[ zitieren ] [ pm ] [ diesen post melden ]
MCignaz

Arctic
Das dem Mergesort angehörende Divide geschieht in sort(). Ich hacke in parallelSort erstmal die Input-Liste in #Threads viele Stücke, und lass die Threads dann mit diesen Teilstücken nen normalen Mergesort machen. Am Ende merge ich alle sortierten Listen nochmal zusammen.

/Putze: Genau so hatte ich das vorher. Allerdings hatte ich dann das Problem, dass ich aufgrund der Integerdivision nicht alle Elemente erwischt habe (11 Elemente, 4 Threads, 3 Elemente fielen hinten runter). Dann dachte ich: Hauste den Rest am Anfang oder Ende an einen der Chunks dran, was dann aber dazu führte, dass eine Liste dann relativ lang werden konnte.
Dann fiel mir die jetzige Lösung ein, die das alles so schön gleichmäßig verteilt.
Aber seine Reaktion, als er von der quadratischen Laufzeit erfuhr, war unglaublich
[Dieser Beitrag wurde 1 mal editiert; zum letzten Mal von MCignaz am 04.05.2016 15:38]
04.05.2016 15:29:28  Zum letzten Beitrag
[ zitieren ] [ pm ] [ diesen post melden ]
no.cigar

Arctic
...
 
Zitat von MCignaz

Das dem Mergesort angehörende Divide geschieht in sort(). Ich hacke in parallelSort erstmal die Input-Liste in #Threads viele Stücke, und lass die Threads dann mit diesen Teilstücken nen normalen Mergesort machen. Am Ende merge ich alle sortierten Listen nochmal zusammen.


"in #Threads viele Stücke hacken" TeX: \in "Mergesort angehörende Divide"
04.05.2016 15:32:12  Zum letzten Beitrag
[ zitieren ] [ pm ] [ diesen post melden ]
 Thema: pOT-lnformatik, Mathematik, Physik XIX ( zuviel Geld über? mehr Geräte kaufen! )
« erste « vorherige 1 ... 45 46 47 48 [49] 50 nächste » letzte »

mods.de - Forum » Public Offtopic » 

Hop to:  

Mod-Aktionen:
10.05.2016 21:50:44 Atomsk hat diesen Thread geschlossen.
24.09.2015 11:50:28 Sharku hat diesem Thread das ModTag 'pimp' angehängt.

| tech | impressum