Boost.
Perpustakaan inti adalah pembungkus C ++ tipis di atas API Opencl dan menyediakan akses ke perangkat komputasi, konteks, antrian perintah dan buffer memori.
Di atas perpustakaan inti adalah antarmuka generik, seperti STL yang menyediakan algoritma umum (misalnya transform() , accumulate() , sort() ) bersama dengan wadah umum (misalnya vector<T> , flat_set<T> ). Ini juga dilengkapi sejumlah ekstensi termasuk algoritma pembunuhan paralel (misalnya exclusive_scan() , scatter() , reduce() ) dan sejumlah iterator mewah (misalnya transform_iterator<> , permutation_iterator<> , zip_iterator<> ).
Dokumentasi lengkap tersedia di http://boostorg.github.io/compute/.
Contoh berikut menunjukkan cara mengurutkan vektor pelampung di GPU:
# 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. Contoh di atas dapat dikompilasi dengan:
g++ -I/path/to/compute/include sort.cpp -lOpenCL
Lebih banyak contoh dapat ditemukan di tutorial dan di bawah Direktori Contoh.
Pertanyaan tentang perpustakaan (penggunaan dan pengembangan) dapat diposting ke milis.
Bug dan permintaan fitur dapat dilaporkan melalui pelacak masalah.
Juga jangan ragu untuk mengirimi saya email dengan masalah, pertanyaan, atau umpan balik.
Proyek Boost. Saat ini sedang mencari pengembang tambahan dengan minat dalam komputasi paralel.
Silakan kirim email ke Kyle Lutz ([email protected]) untuk informasi lebih lanjut.