Boost.comPute ist eine GPU/Parallel-Computing-Bibliothek für C ++ basierend auf OpenCL.
Die Kernbibliothek ist ein dünner C ++ - Wrapper über der OpenCL -API und bietet Zugriff auf Rechengeräte, Kontexte, Befehlswarteschlangen und Speicherpuffer.
Oben in der Kernbibliothek befindet sich eine generische STL-ähnliche Schnittstelle, die gemeinsame Algorithmen (z. B. transform() , accumulate() , sort() ) zusammen mit gemeinsamen Behältern (z. B. vector<T> , flat_set<T> ) bietet. Es verfügt außerdem über eine Reihe von Erweiterungen, einschließlich paralleler Komputierungsalgorithmen (z. B. exclusive_scan() , scatter() , reduce() ) und eine Reihe von ausgefallenen Iteratoren (z. B. transform_iterator<> , permutation_iterator<> , zip_iterator<> ).
Die vollständige Dokumentation finden Sie unter http://boostorg.github.io/compute/.
Das folgende Beispiel zeigt, wie ein Vektor von Floats auf der GPU sortiert wird:
# include < vector >
# include < algorithm >
# include < boost/compute.hpp >
namespace compute = boost::compute;
int main ()
{
// get the default compute device
compute::device gpu = compute::system::default_device ();
// create a compute context and command queue
compute::context ctx (gpu);
compute::command_queue queue (ctx, gpu);
// generate random numbers on the host
std::vector< float > host_vector ( 1000000 );
std::generate (host_vector. begin (), host_vector. end (), rand );
// create vector on the device
compute::vector< float > device_vector ( 1000000 , ctx);
// copy data to the device
compute::copy (
host_vector. begin (), host_vector. end (), device_vector. begin (), queue
);
// sort data on the device
compute::sort (
device_vector. begin (), device_vector. end (), queue
);
// copy data back to the host
compute::copy (
device_vector. begin (), device_vector. end (), host_vector. begin (), queue
);
return 0 ;
}Boost.comPute ist eine Nur-Header-Bibliothek, daher ist keine Verknüpfung erforderlich. Das obige Beispiel kann zusammengestellt werden mit:
g++ -I/path/to/compute/include sort.cpp -lOpenCL
Weitere Beispiele finden Sie im Tutorial und im Beispielverzeichnis.
Fragen zur Bibliothek (sowohl die Verwendung als auch die Entwicklung) können in der Mailingliste veröffentlicht werden.
Fehler und Feature -Anfragen können über den Problemverfolger gemeldet werden.
Senden Sie mir auch eine E -Mail mit Problemen, Fragen oder Feedback.
Das Boost.comPute -Projekt sucht derzeit zusätzliche Entwickler mit Interesse am parallelen Computer.
Bitte senden Sie eine E -Mail an Kyle Lutz ([email protected]), um weitere Informationen zu erhalten.