Portabler paralleler Code?
-
Hallo,
ich verwende in meinem Code teilweise sowas in der Form (nur ein Beispiel, dass das keinen Sinn ergibt weiß ich):
#include <iostream> #include <ppl.h> int main() { concurrency::parallel_for(size_t(0), size_t(10), [](size_t i) { std::cout << i << '\n'; }); }Mein Problem ist jetzt, dass das ja nicht portabel ist, da es auf der Microsoft spezifischen library "ppl.h" basiert, die nur für Windows verfügbar ist.
Ich weiß dass es nocht die "thread building blocks" library gibt, welche portabel ist, allerdings hat die eine relativ restriktive Lizenz.
Ich brauche eigentlich nur eine parallel_for Schleife, sonst nichts. Gibt es das irgendwo portabel, effizient und frei verfügbar?
-
happystudent schrieb:
Ich brauche eigentlich nur eine parallel_for Schleife, sonst nichts.
Selber schreiben?
-
happystudent schrieb:
Ich weiß dass es nocht die "thread building blocks" library gibt, welche portabel ist, allerdings hat die eine relativ restriktive Lizenz.
Was meinst du mit retriktiv?
-
selfistheman schrieb:
Selber schreiben?
Ja, hab das bis jetzt halt immer nur benutzt und mir keine Gedanken gemacht wie das im Hintergrund läuft...
Ich würde das jetzt einfach so machen:
#include <iostream> int main() { #pragma omp parallel for for (int i = 0; i < 10; i++) { std::cout << i << '\n'; } }Aber ist das wirklich so einfach? Weil der <ppl.h> Code von MS ist schon sehr komplex und schwer zu durchschauen, daher bin ich mir jetzt unsicher ...
manni66 schrieb:
Was meinst du mit retriktiv?
Naja, soweit ich die Lizenz verstanden habe, darf man die nicht in proprietärer Software einsetzen.
-
happystudent schrieb:
manni66 schrieb:
Was meinst du mit retriktiv?
Naja, soweit ich die Lizenz verstanden habe, darf man die nicht in proprietärer Software einsetzen.
Doch darf man, da GPL mit runtime exception.
-
manni66 schrieb:
Doch darf man, da GPL mit runtime exception.
Hm achso, dann hab ich das tatsächlich falsch verstanden... Ok, dann werd ich wohl TBB nehmen, Danke
