Boost.compute هي مكتبة GPU/حوسبة الحوسبة المتوازية لـ C ++ استنادًا إلى OpenCL.
المكتبة الأساسية عبارة عن غلاف رفيع C ++ فوق واجهة برمجة تطبيقات OpenCL ويوفر الوصول إلى أجهزة حساب وسياقات وقوائم قوائم الأوامر ومؤسسات الذاكرة.
علاوة على المكتبة الأساسية توجد واجهة عامة تشبه STL توفر خوارزميات مشتركة (EG transform() ، accumulate() ، sort() ) جنبًا إلى جنب مع الحاويات الشائعة (مثل vector<T> ، flat_set<T> ). كما أنه يتميز بعدد من الامتدادات بما في ذلك خوارزميات الحوسبة المتوازية (مثل EG exclusive_scan() ، و scatter() ، reduce() ) وعدد من المتكررين الهوى (على سبيل المثال transform_iterator<> ، permutation_iterator<> ، zip_iterator<> ).
الوثائق الكاملة متوفرة على http://boostorg.github.io/compute/.
يوضح المثال التالي كيفية فرز متجه العوامات على وحدة معالجة الرسومات:
# 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 هي مكتبة رأس فقط ، لذلك لا يلزم ارتباط. يمكن تجميع المثال أعلاه مع:
g++ -I/path/to/compute/include sort.cpp -lOpenCL
يمكن العثور على المزيد من الأمثلة في البرنامج التعليمي وتحت دليل الأمثلة.
يمكن نشر أسئلة حول المكتبة (كل من الاستخدام والتطوير) في القائمة البريدية.
يمكن الإبلاغ عن الأخطاء وطلبات الميزات من خلال تعقب المشكلات.
لا تتردد أيضًا في إرسال بريد إلكتروني لي مع أي مشاكل أو أسئلة أو ملاحظات.
يبحث مشروع Boost.compute حاليًا عن مطورين إضافيين لديهم اهتمام في الحوسبة الموازية.
يرجى إرسال بريد إلكتروني إلى Kyle Lutz ([email protected]) لمزيد من المعلومات.