{"id":1493,"date":"2021-11-25T03:06:32","date_gmt":"2021-11-24T18:06:32","guid":{"rendered":"https:\/\/www.xlsoft.com\/jp\/blog\/intel\/?p=1493"},"modified":"2022-02-25T10:30:41","modified_gmt":"2022-02-25T01:30:41","slug":"migrate_to_c_from_opencl","status":"publish","type":"post","link":"https:\/\/www.xlsoft.com\/jp\/blog\/intel\/2021\/11\/25\/migrate_to_c_from_opencl\/","title":{"rendered":"GPU-Quicksort \uff5eOpenCL* \u304b\u3089\u30c7\u30fc\u30bf\u4e26\u5217 C++ \u3078\u306e\u79fb\u884c\uff5e"},"content":{"rendered":"<p><span style=\"font-family: arial, helvetica, sans-serif;\">\u30c7\u30fc\u30bf\u4e26\u5217 C++ (DPC++) \u306f\u3001 Khronos SYCL* \u6a19\u6e96\u30d9\u30fc\u30b9\u306e\u30d8\u30c6\u30ed\u30b8\u30cb\u30a2\u30b9\u3067\u79fb\u690d\u6027\u306e\u9ad8\u3044\u30d7\u30ed\u30b0\u30e9\u30df\u30f3\u30b0<\/span><span style=\"font-family: arial, helvetica, sans-serif;\">\u8a00\u8a9e\u3067\u3059\u3002 \u3053\u306e\u30b7\u30f3\u30b0\u30eb\u30bd\u30fc\u30b9\u30fb\u30d7\u30ed\u30b0\u30e9\u30df\u30f3\u30b0\u8a00\u8a9e\u306f\u3001 CPU\u3001 \u7d71\u5408 \/ \u30c7\u30a3\u30b9\u30af\u30ea\u30fc\u30c8 GPU\u3001 FPGA\u3001 \u305d\u306e\u4ed6\u306e<\/span><span style=\"font-family: arial, helvetica, sans-serif;\">\u30a2\u30af\u30bb\u30e9\u30ec\u30fc\u30bf\u30fc\u306a\u3069\u3001 \u3055\u307e\u3056\u307e\u306a\u30d7\u30e9\u30c3\u30c8\u30d5\u30a9\u30fc\u30e0\u3092\u30bf\u30fc\u30b2\u30c3\u30c8\u306b\u3059\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002 \u3053\u3053\u3067\u306f\u3001 DPC++ \u3067<\/span><span style=\"font-family: arial, helvetica, sans-serif;\">\u4f55\u304c\u3067\u304d\u308b\u306e\u304b\u7406\u89e3\u3059\u308b\u305f\u3081\u3001 \u91cd\u8981\u306a OpenCL* \u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u3067\u3042\u308b GPU-Quicksort \u3092 DPC++ \u306b\u79fb\u884c<\/span><span style=\"font-family: arial, helvetica, sans-serif;\">\u3057\u307e\u3059\u3002 \u76ee\u6a19\u306f\u3001 OpenCL* \u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u306e\u6027\u80fd\u3092\u8d85\u3048\u308b\u3053\u3068\u3067\u3059\u3002 OpenCL* C \u3067\u6c4e\u7528\u30a2\u30eb\u30b4\u30ea\u30ba\u30e0\u3092\u8a18<\/span><span style=\"font-family: arial, helvetica, sans-serif;\">\u8ff0\u3059\u308b\u3053\u3068\u306f\u975e\u5e38\u306b\u56f0\u96e3\u3067\u3042\u308a\u3001 \u7570\u306a\u308b\u30c7\u30fc\u30bf\u578b\u3092\u6271\u3046\u30bd\u30fc\u30c8\u306e\u3088\u3046\u306a\u30a2\u30eb\u30b4\u30ea\u30ba\u30e0\u306e\u5b9f\u88c5\u3067\u306f\u3001 \u3053\u308c\u304c\u6df1\u523b<\/span><span style=\"font-family: arial, helvetica, sans-serif;\">\u306a\u554f\u984c\u3068\u306a\u308a\u307e\u3059\u3002 OpenCL* \u3067\u8a18\u8ff0\u3055\u308c\u305f\u30aa\u30ea\u30b8\u30ca\u30eb\u306e GPU-Quicksort \u306f\u3001 \u7b26\u53f7\u306a\u3057\u6574\u6570\u3092\u30bd\u30fc\u30c8\u3057\u307e\u3059\u3002<\/span><\/p>\n<p><span style=\"font-family: arial, helvetica, sans-serif;\">\u3053\u3053\u3067\u306f\u3001 DPC++ \u3067\u30c6\u30f3\u30d7\u30ec\u30fc\u30c8\u3092\u4f7f\u7528\u3057\u3066\u3001 \u8907\u6570\u306e\u30c7\u30fc\u30bf\u578b\u306b\u5bfe\u5fdc\u3057\u305f GPU-Quicksort \u3092\u5b9f\u88c5\u3059\u308b\u65b9\u6cd5<\/span><span style=\"font-family: arial, helvetica, sans-serif;\">\u3092\u793a\u3057\u307e\u3059\u3002 \u305d\u3057\u3066\u3001 DPC++ \u304c\u79fb\u690d\u6027\u306b\u512a\u308c\u3066\u3044\u308b\u3053\u3068\u3092\u793a\u3059\u305f\u3081\u3001 GPU-Quicksort \u3092 Windows* \u3068 RHEL<\/span><span style=\"font-family: arial, helvetica, sans-serif;\">\u306b\u79fb\u690d\u3057\u307e\u3059\u3002<\/span><\/p>\n<h2><span style=\"font-family: arial, helvetica, sans-serif;\">GPU-Quicksort \u3068\u306f<\/span><\/h2>\n<p><span style=\"font-family: arial, helvetica, sans-serif;\">GPU-Quicksort \u306f\u3001 \u9ad8\u5ea6\u306b\u4e26\u5217\u5316\u3055\u308c\u305f\u30de\u30eb\u30c1\u30b3\u30a2 \u30fb \u30b0\u30e9\u30d5\u30a3\u30c3\u30af\u30b9\u30fb\u30d7\u30ed\u30bb\u30c3\u30b5\u30fc\u5411\u3051\u306b\u8a2d\u8a08\u3055\u308c\u305f\u3001 \u30cf\u30a4\u30d1\u30d5\u30a9\u30fc\u30de\u30f3\u30b9\u306a\u30bd\u30fc\u30c8\u30fb\u30a2\u30eb\u30b4\u30ea\u30ba\u30e0\u3067\u3059\u3002 2009 \u5e74\u306b\u3001\u5f53\u6642\u30b9\u30a6\u30a7\u30fc\u30c7\u30f3\u306e\u30c1\u30e3\u30eb\u30de\u30fc\u30b9\u5de5\u79d1\u5927\u5b66\u306e\u5b66\u751f\u3067\u3042\u3063\u305f Daniel Cederman \u6c0f\u3068 Phillippas Tsigas \u6559\u6388\u306b\u3088\u3063\u3066\u958b\u767a\u3055\u308c\u307e\u3057\u305f\u3002 \u5143\u3005 CUDA* \u3067\u5b9f\u88c5\u3055\u308c\u3066\u3044\u307e\u3057\u305f\u304c\u3001 2014 \u5e74\u306b\u7b46\u8005\u304c\u30a4\u30f3\u30c6\u30eb<sup>\u00ae<\/sup> \u30a4\u30f3\u30c6\u30b0\u30ec\u30fc\u30c6\u30c3\u30c9 \u30fb\u30d7\u30ed\u30bb\u30c3\u30b5\u30fc \u30fb \u30b0\u30e9\u30d5\u30a3\u30c3\u30af\u30b9\u4e0a\u3067\u30cf\u30a4\u30d1\u30d5\u30a9\u30fc\u30de\u30f3\u30b9\u3092\u5b9f\u8a3c\u3057\u3001 \u5165\u308c\u5b50\u306e\u4e26\u5217\u51e6\u7406\u3068\u30ef\u30fc\u30af\u30b0\u30eb\u30fc\u30d7 \u30fb\u30b9\u30ad\u30e3\u30f3\u95a2\u6570\u3092\u4f7f\u7528\u3059\u308b\u305f\u3081 OpenCL* 1.2 \u3068 OpenCL*2.0 \u3067\u5b9f\u88c5\u3057\u76f4\u3057\u3001 \u30a4\u30f3\u30c6\u30eb\u306e OpenCL* \u30c9\u30e9\u30a4\u30d0\u30fc\u3067\u5b8c\u5168\u306b\u5b9f\u88c5\u3055\u308c\u307e\u3057\u305f\u3002 \u3053\u3053\u3067\u306f\u3001 GPU-Quicksort \u306eOpenCL* 1.2 \u5b9f\u88c5\u3092 DPC++ \u306b\u79fb\u884c\u3057\u3066\u3001 \u7b26\u53f7\u306a\u3057\u6574\u6570\u3060\u3051\u3067\u306a\u304f\u3001 \u5358\u7cbe\u5ea6\u3084\u500d\u7cbe\u5ea6\u306e\u6d6e\u52d5\u5c0f\u6570\u70b9\u3082\u30bd\u30fc\u30c8\u3067\u304d\u308b\u3088\u3046\u306b\u5b9f\u88c5\u3092\u6c4e\u7528\u5316\u3057\u307e\u3059\u3002<\/span><\/p>\n<h2><span style=\"font-family: arial, helvetica, sans-serif;\">OpenCL* \u3068\u306f<\/span><\/h2>\n<p><span style=\"font-family: arial, helvetica, sans-serif;\">OpenCL* 1.2 \u5b9f\u88c5\u3092\u30d9\u30fc\u30b9\u306b\u4f5c\u696d\u3092\u958b\u59cb\u3057\u307e\u3059\u3002 \u30a4\u30f3\u30c6\u30eb\u306f\u3001 \u30d8\u30c6\u30ed\u30b8\u30cb\u30a2\u30b9\u4e26\u5217\u30b7\u30b9\u30c6\u30e0\u3092\u30d7\u30ed\u30b0\u30e9\u30df\u30f3\u30b0\u3059\u308b\u305f\u3081\u306e Khronos \u6a19\u6e96\u898f\u683c\u3067\u3042\u308b OpenCL* \u3092\u3001 \u3055\u307e\u3056\u307e\u306a\u30aa\u30da\u30ec\u30fc\u30c6\u30a3\u30f3\u30b0 \u30fb \u30b7\u30b9\u30c6\u30e0\u3068\u30d7\u30e9\u30c3\u30c8\u30d5\u30a9\u30fc\u30e0\u3067\u5b8c\u5168\u306b\u30b5\u30dd\u30fc\u30c8\u3057\u3066\u3044\u307e\u3059\u3002 OpenCL* \u306f\u4ee5\u4e0b\u3067\u69cb\u6210\u3055\u308c\u307e\u3059\u3002<\/span><\/p>\n<ul style=\"list-style-type: disc;\">\n<li><span style=\"font-family: arial, helvetica, sans-serif;\">\u30e9\u30f3\u30bf\u30a4\u30e0<\/span><\/li>\n<li><span style=\"font-family: arial, helvetica, sans-serif;\">\u30db\u30b9\u30c8 API <\/span><\/li>\n<li><span style=\"font-family: arial, helvetica, sans-serif;\">\u30c7\u30d0\u30a4\u30b9 C \u30d9\u30fc\u30b9\u306e\u30d7\u30ed\u30b0\u30e9\u30df\u30f3\u30b0\u8a00\u8a9e\u3067\u3042\u308b OpenCL* C<\/span><\/li>\n<\/ul>\n<p><span style=\"font-family: arial, helvetica, sans-serif;\">\u3053\u308c\u306f OpenCL* \u306e\u5229\u70b9\u3067\u3082\u3042\u308a\u3001 \u5236\u9650\u3067\u3082\u3042\u308a\u307e\u3059\u3002 \u5229\u70b9\u306f\u3001 \u30cf\u30a4\u30d1\u30d5\u30a9\u30fc\u30de\u30f3\u30b9\u3067\u79fb\u690d\u6027\u306e\u9ad8\u3044\u30d8\u30c6\u30ed\u30b8<\/span><span style=\"font-family: arial, helvetica, sans-serif;\">\u30cb\u30a2\u30b9\u4e26\u5217\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u3092\u8a18\u8ff0\u3067\u304d\u308b\u3053\u3068\u3067\u3059\u3002 \u4e3b\u306a\u5236\u9650\u306f\u3001 \u30db\u30b9\u30c8\u5074\u3068\u30c7\u30d0\u30a4\u30b9\u5074\u3067\u5225\u3005\u306e\u30b3\u30fc\u30c9\u3092\u8a18\u8ff0<\/span><span style=\"font-family: arial, helvetica, sans-serif;\">\u3057\u3066\u30c7\u30d0\u30c3\u30b0\u3059\u308b\u5fc5\u8981\u304c\u3042\u308b\u3053\u3068\u3001 \u304a\u3088\u3073\u30d7\u30ed\u30b0\u30e9\u30de\u30fc\u306b\u99b4\u67d3\u307f\u306e\u3042\u308b\u30c6\u30f3\u30d7\u30ec\u30fc\u30c8\u3084\u305d\u306e\u4ed6\u306e C++ \u6a5f\u80fd\u3092\u5229<\/span><span style=\"font-family: arial, helvetica, sans-serif;\">\u7528\u3067\u304d\u306a\u3044\u305f\u3081\u3001 \u6c4e\u7528\u30e9\u30a4\u30d6\u30e9\u30ea\u30fc\u306e\u8a18\u8ff0\u304c\u56f0\u96e3\u306a\u3053\u3068\u3067\u3059\u3002<\/span><\/p>\n<h2><span style=\"font-family: arial, helvetica, sans-serif;\">\u30c7\u30fc\u30bf\u4e26\u5217 C++ \u3068\u306f<\/span><\/h2>\n<p><span style=\"font-family: arial, helvetica, sans-serif;\">\u30c7\u30fc\u30bf\u4e26\u5217 C++ (DPC++) \u306f\u3001 Khronos SYCL* \u3092\u62e1\u5f35\u3057\u305f\u30a4\u30f3\u30c6\u30eb\u306e\u5b9f\u88c5\u3067\u3059\u3002 SYCL* \u6a19\u6e96\u306f\u3001 \u4e0a\u8a18\u306eOpenCL* \u306e\u5236\u9650\u306b\u5bfe\u5fdc\u3059\u308b\u3088\u3046\u306b\u8a2d\u8a08\u3055\u308c\u3066\u3044\u307e\u3059\u3002 DPC++ \u306f\u6b21\u306e\u6a5f\u80fd\u3092\u63d0\u4f9b\u3057\u307e\u3059\u3002<\/span><\/p>\n<ul style=\"list-style-type: disc;\">\n<li><span style=\"font-family: arial, helvetica, sans-serif;\">\u30b7\u30f3\u30b0\u30eb\u30bd\u30fc\u30b9\u306e\u30d7\u30ed\u30b0\u30e9\u30df\u30f3\u30b0 \u30fb \u30e2\u30c7\u30eb\u3002 \u30db\u30b9\u30c8\u3068\u30c7\u30d0\u30a4\u30b9\u3092\u540c\u3058\u30b3\u30fc\u30c9\u30d9\u30fc\u30b9\u3067\u30d7\u30ed\u30b0\u30e9\u30df\u30f3\u30b0\u3067\u304d\u307e\u3059\u3002<\/span><\/li>\n<li><span style=\"font-family: arial, helvetica, sans-serif;\">C++ \u30c6\u30f3\u30d7\u30ec\u30fc\u30c8\u3068\u30c6\u30f3\u30d7\u30ec\u30fc\u30c8 \u30fb\u30e1\u30bf\u30d7\u30ed\u30b0\u30e9\u30df\u30f3\u30b0\u3002 \u79fb\u690d\u6027\u3092\u640d\u306a\u3046\u3053\u3068\u306a\u304f\u3001 \u30d1\u30d5\u30a9\u30fc\u30de\u30f3\u30b9\u3078\u306e\u5f71\u97ff\u3092<\/span><span style=\"font-family: arial, helvetica, sans-serif;\">\u6700\u5c0f\u9650\u306b\u6291\u3048\u3066\u3001 \u30c7\u30d0\u30a4\u30b9\u4e0a\u3067\u3053\u308c\u3089\u3092\u6d3b\u7528\u3067\u304d\u307e\u3059\u3002<\/span><\/li>\n<\/ul>\n<p><span style=\"font-family: arial, helvetica, sans-serif;\">DPC++ \u3067\u306f\u3001 \u30d7\u30ed\u30b0\u30e9\u30de\u30fc\u306f CPU\u3001 GPU\u3001 \u304a\u3088\u3073 FPGA \u3092\u30bf\u30fc\u30b2\u30c3\u30c8\u306b\u3057\u3066\u3001 \u30a2\u30af\u30bb\u30e9\u30ec\u30fc\u30bf\u30fc\u56fa\u6709\u306e\u30c1\u30e5\u30fc<\/span><span style=\"font-family: arial, helvetica, sans-serif;\">\u30cb\u30f3\u30b0\u3092\u884c\u3046\u3053\u3068\u304c\u3067\u304d\u3001 OpenCL* \u3088\u308a\u3082\u78ba\u5b9f\u306b\u6539\u5584\u3055\u308c\u3066\u3044\u307e\u3059\u3002 \u307e\u305f\u3001 \u30a4\u30f3\u30c6\u30eb<sup>\u00ae<\/sup> VTune&#x2122; \u30d7\u30ed\u30d5\u30a1\u30a4<\/span><span style=\"font-family: arial, helvetica, sans-serif;\">\u30e9\u30fc\u3084\u30a4\u30f3\u30c6\u30eb<sup>\u00ae<\/sup> Advisor \u306a\u3069\u306e\u30a4\u30f3\u30c6\u30eb<sup>\u00ae<\/sup> \u30bd\u30d5\u30c8\u30a6\u30a7\u30a2 \u30fb \u30c4\u30fc\u30eb\u3068\u3001 GDB \u3067\u30b5\u30dd\u30fc\u30c8\u3055\u308c\u3066\u3044\u307e\u3059\u3002 \u3053\u3053\u3067\u306f\u3001<\/span><span style=\"font-family: arial, helvetica, sans-serif;\">DPC++ \u306e\u7279\u306b\u30c6\u30f3\u30d7\u30ec\u30fc\u30c8\u6a5f\u80fd\u3092\u6d3b\u7528\u3057\u307e\u3059\u3002<\/span><\/p>\n<h2><span style=\"font-family: arial, helvetica, sans-serif;\">\u958b\u59cb\u70b9 : 2014 \u5e74\u306e Windows* \u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3<\/span><\/h2>\n<p><span style=\"font-family: arial, helvetica, sans-serif;\">\u300cOpenCL* 2.0 \u306e GPU-Quicksort: \u5165\u308c\u5b50\u306e\u4e26\u5217\u51e6\u7406\u3068\u30ef\u30fc\u30af\u30b0\u30eb\u30fc\u30d7 \u30fb \u30b9\u30ad\u30e3\u30f3\u95a2\u6570\u300d\u306b\u3042\u308b\u3001OpenCL* 1.2 \u3067\u5b9f\u88c5\u3055\u308c\u305f GPU-Quicksort \u3092\u958b\u59cb\u70b9\u3068\u3057\u3066\u4f7f\u7528\u3057\u307e\u3059\u3002\u3053\u306e\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u306f\u3001Windows*\u5411\u3051\u306b\u8a18\u8ff0\u3055\u308c\u3066\u3044\u308b\u305f\u3081\u3001 \u4f5c\u696d\u3092\u59cb\u3081\u308b\u524d\u306b\u3001\u6642\u9593\u3092\u6e2c\u5b9a\u3059\u308b\u30af\u30ed\u30b9\u30d7\u30e9\u30c3\u30c8\u30d5\u30a9\u30fc\u30e0 \u30fb\u30b3\u30fc\u30c9\u3092\u8ffd\u52a0\u3057\u3001\u30a2\u30e9\u30a4\u30e1\u30f3\u30c8\u3055\u308c\u305f\u30e1\u30e2\u30ea\u30fc\u306e\u5272\u308a\u5f53\u3066 \/ \u89e3\u653e\u3092 Windows* \u306e <em>_alligned_malloc\/_aligned_free\u00a0<\/em>\u304b\u3089\u00a0<em>aligned_alloc\/free\u00a0<\/em>\u306b\u5909\u66f4\u3057\u3066\u3001Ubuntu 18.04 \u306b\u79fb\u884c\u3057\u307e\u3057\u305f\u3002<\/span><\/p>\n<p><span style=\"font-family: arial, helvetica, sans-serif;\">GPU-Quicksort \u30a2\u30fc\u30ad\u30c6\u30af\u30c1\u30e3\u30fc\u306b\u3064\u3044\u3066\u7c21\u5358\u306b\u898b\u3066\u307f\u307e\u3057\u3087\u3046\u3002 2 \u3064\u306e\u30ab\u30fc\u30cd\u30eb\u3067\u69cb\u6210\u3055\u308c\u307e\u3059\u3002<\/span><\/p>\n<p><span style=\"font-family: arial, helvetica, sans-serif;\">1. <em>gqsort_kernel<\/em><\/span><br \/>\n<span style=\"font-family: arial, helvetica, sans-serif;\">2. <em>lqsort_kernel<\/em><\/span><\/p>\n<p><span style=\"font-family: arial, helvetica, sans-serif;\">OpenCL* 1.2 \u3067\u8a18\u8ff0\u3055\u308c\u305f\u3053\u308c\u3089\u306e\u30ab\u30fc\u30cd\u30eb\u306f\u3001 \u30c7\u30a3\u30b9\u30d1\u30c3\u30c1\u30e3\u30fc \u30fb \u30b3\u30fc\u30c9\u306b\u3088\u3063\u3066\u7d50\u5408\u3055\u308c\u3001 \u5165\u529b\u304c\u00a0<\/span><span style=\"font-family: arial, helvetica, sans-serif;\"><em>lqsort_kernel<\/em> \u3067\u30bd\u30fc\u30c8\u3067\u304d\u308b\u5c0f\u3055\u306a\u30c1\u30e3\u30f3\u30af\u306b\u5206\u5272\u3055\u308c\u308b\u307e\u3067\u7e70\u308a\u8fd4\u3057 <em>gqsort_kernel<\/em> \u3092\u547c\u3073\u51fa\u3057<\/span><br \/>\n<span style=\"font-family: arial, helvetica, sans-serif;\">\u307e\u3059\u3002 \u30e6\u30fc\u30b6\u30fc\u306f\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u3067\u4ee5\u4e0b\u3092\u6307\u5b9a\u3067\u304d\u307e\u3059\u3002<\/span><\/p>\n<ul style=\"list-style-type: disc;\">\n<li><span style=\"font-family: arial, helvetica, sans-serif;\">\u6e2c\u5b9a\u306e\u305f\u3081\u30bd\u30fc\u30c8\u3092\u5b9f\u884c\u3059\u308b\u56de\u6570\u3002<\/span><\/li>\n<li><span style=\"font-family: arial, helvetica, sans-serif;\">\u30ab\u30fc\u30cd\u30eb\u3092\u5b9f\u884c\u3059\u308b\u30d9\u30f3\u30c0\u30fc\u3068\u30c7\u30d0\u30a4\u30b9\u3002<\/span><\/li>\n<li><span style=\"font-family: arial, helvetica, sans-serif;\">\u30ab\u30fc\u30cd\u30eb\u3092\u5b9f\u884c\u3059\u308b\u30d9\u30f3\u30c0\u30fc\u3068\u30c7\u30d0\u30a4\u30b9\u3002<\/span><\/li>\n<li><span style=\"font-family: arial, helvetica, sans-serif;\">\u5165\u529b\u306e\u30b5\u30a4\u30ba\u3002<\/span><\/li>\n<li><span style=\"font-family: arial, helvetica, sans-serif;\">\u00a0\u30c7\u30d0\u30a4\u30b9\u306e\u8a73\u7d30\u3092\u8868\u793a\u3059\u308b\u304b\u3069\u3046\u304b\u3002<\/span><\/li>\n<\/ul>\n<p><span style=\"font-family: arial, helvetica, sans-serif;\">\u3053\u306e\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u306f\u3001\u5178\u578b\u7684\u306a OpenCL* \u30a2\u30fc\u30ad\u30c6\u30af\u30c1\u30e3\u30fc\u306b\u5f93\u3063\u3066\u3001OpenCL* \u30d7\u30e9\u30c3\u30c8\u30d5\u30a9\u30fc\u30e0\u3068\u30c7\u30d0<\/span><span style=\"font-family: arial, helvetica, sans-serif;\">\u30a4\u30b9\u3092\u521d\u671f\u5316\u3057\u3001\u30b3\u30fc\u30c9\u3092\u30d3\u30eb\u30c9\u3059\u308b\u30e6\u30fc\u30c6\u30a3\u30ea\u30c6\u30a3\u30fc\u3092\u30b5\u30dd\u30fc\u30c8\u3057\u307e\u3059\u3002 OpenCL* \u30ab\u30fc\u30cd\u30eb\u3068\u30b5\u30dd\u30fc\u30c8\u95a2\u6570\u306f\u3001<\/span><span style=\"font-family: arial, helvetica, sans-serif;\">\u30e6\u30fc\u30b6\u30fc\u5f15\u6570\u3092\u53d7\u3051\u53d6\u308b\u30e1\u30a4\u30f3 \u30fb\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u3068\u306f\u5225\u306e\u30d5\u30a1\u30a4\u30eb\u306b\u3042\u308a\u3001 \u30d7\u30e9\u30c3\u30c8\u30d5\u30a9\u30fc\u30e0\u3068\u30c7\u30d0\u30a4\u30b9\u3092\u521d\u671f<\/span><span style=\"font-family: arial, helvetica, sans-serif;\">\u5316\u3057\u3001\u30ab\u30fc\u30cd\u30eb\u3092\u30d3\u30eb\u30c9\u3057\u3001 \u30e1\u30e2\u30ea\u30fc\u3092\u9069\u5207\u306b\u5272\u308a\u5f53\u3066\u3001 \u30d0\u30c3\u30d5\u30a1\u30fc\u3092\u4f5c\u6210\u3057\u3066\u30ab\u30fc\u30cd\u30eb\u5f15\u6570\u306b\u30d0\u30a4\u30f3\u30c9\u3057\u3001\u30c7\u30a3<\/span><span style=\"font-family: arial, helvetica, sans-serif;\">\u30b9\u30d1\u30c3\u30c1\u30e3\u30fc\u95a2\u6570\u3092\u8d77\u52d5\u3057\u307e\u3059\u3002<\/span><\/p>\n<h2><span style=\"font-family: arial, helvetica, sans-serif;\">\u30c7\u30fc\u30bf\u4e26\u5217 C++\/OpenCL* \u306e\u76f8\u4e92\u904b\u7528\u6027 : \u30d7\u30e9\u30c3\u30c8\u30d5\u30a9\u30fc\u30e0\u306e\u521d\u671f\u5316<\/span><\/h2>\n<p><span style=\"font-family: arial, helvetica, sans-serif;\">\u6700\u521d\u306b\u3001 \u30a4\u30f3\u30c6\u30eb<sup>\u00ae<\/sup> oneAPI \u30d9\u30fc\u30b9\u30fb \u30c4\u30fc\u30eb\u30ad\u30c3\u30c8\u3092\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u3057\u307e\u3059\u3002 \u3053\u308c\u306b\u306f\u3001 \u30a4\u30f3\u30c6\u30eb<sup>\u00ae<\/sup> oneAPI\u00a0<\/span><span style=\"font-family: arial, helvetica, sans-serif;\">DPC++ \u30b3\u30f3\u30d1\u30a4\u30e9\u30fc\u304c\u542b\u307e\u308c\u307e\u3059\u3002 <em>CL\/sycl.hpp<\/em> \u30d8\u30c3\u30c0\u30fc\u3092\u30a4\u30f3\u30af\u30eb\u30fc\u30c9\u3057\u3066\u3001 DPC++ \u306e\u5197\u9577\u6027\u3092<\/span><span style=\"font-family: arial, helvetica, sans-serif;\">\u907f\u3051\u308b\u305f\u3081\u540d\u524d\u7a7a\u9593 cl::sycl \u3092\u4f7f\u7528\u3057\u3066 DPC++ \u3078\u306e\u79fb\u884c\u3092\u958b\u59cb\u3057\u307e\u3059\u3002<\/span><\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-1504\" src=\"https:\/\/www.xlsoft.com\/jp\/blog\/intel\/wp-content\/uploads\/sites\/5\/2021\/11\/intel_blog1.png\" alt=\"\" width=\"999\" height=\"141\" srcset=\"https:\/\/www.xlsoft.com\/jp\/blog\/intel\/wp-content\/uploads\/sites\/5\/2021\/11\/intel_blog1.png 999w, https:\/\/www.xlsoft.com\/jp\/blog\/intel\/wp-content\/uploads\/sites\/5\/2021\/11\/intel_blog1-300x42.png 300w, https:\/\/www.xlsoft.com\/jp\/blog\/intel\/wp-content\/uploads\/sites\/5\/2021\/11\/intel_blog1-768x108.png 768w\" sizes=\"auto, (max-width: 999px) 100vw, 999px\" \/><\/p>\n<p><span style=\"font-family: arial, helvetica, sans-serif;\">\u30d7\u30e9\u30c3\u30c8\u30d5\u30a9\u30fc\u30e0\u3001\u30c7\u30d0\u30a4\u30b9\u3001\u30b3\u30f3\u30c6\u30ad\u30b9\u30c8\u3001\u304a\u3088\u3073\u30ad\u30e5\u30fc\u306f\u3001OpenCL* \u3067\u306f\u306a\u304f\u3001\u7c21\u6f54\u306a DPC++ \u3067\u521d\u671f\u5316\u3057\u307e\u3059\u3002<\/span><\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-1505\" src=\"https:\/\/www.xlsoft.com\/jp\/blog\/intel\/wp-content\/uploads\/sites\/5\/2021\/11\/intel_blog2.png\" alt=\"\" width=\"999\" height=\"426\" srcset=\"https:\/\/www.xlsoft.com\/jp\/blog\/intel\/wp-content\/uploads\/sites\/5\/2021\/11\/intel_blog2.png 999w, https:\/\/www.xlsoft.com\/jp\/blog\/intel\/wp-content\/uploads\/sites\/5\/2021\/11\/intel_blog2-300x128.png 300w, https:\/\/www.xlsoft.com\/jp\/blog\/intel\/wp-content\/uploads\/sites\/5\/2021\/11\/intel_blog2-768x327.png 768w\" sizes=\"auto, (max-width: 999px) 100vw, 999px\" \/><\/p>\n<p><span style=\"font-family: arial, helvetica, sans-serif;\">\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u306e\u6b8b\u308a\u306e\u90e8\u5206\u306f OpenCL* \u30d9\u30fc\u30b9\u3067\u3042\u308b\u305f\u3081\u3001 OpenCL* \u30b3\u30f3\u30c6\u30ad\u30b9\u30c8\u3001 \u30c7\u30d0\u30a4\u30b9\u3001 \u304a\u3088\u3073\u30ad\u30e5\u30fc<\/span><span style=\"font-family: arial, helvetica, sans-serif;\">\u3092\u53d6\u5f97\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002<\/span><\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-1523\" src=\"https:\/\/www.xlsoft.com\/jp\/blog\/intel\/wp-content\/uploads\/sites\/5\/2021\/11\/intel_blog3.png\" alt=\"\" width=\"1002\" height=\"147\" srcset=\"https:\/\/www.xlsoft.com\/jp\/blog\/intel\/wp-content\/uploads\/sites\/5\/2021\/11\/intel_blog3.png 1002w, https:\/\/www.xlsoft.com\/jp\/blog\/intel\/wp-content\/uploads\/sites\/5\/2021\/11\/intel_blog3-300x44.png 300w, https:\/\/www.xlsoft.com\/jp\/blog\/intel\/wp-content\/uploads\/sites\/5\/2021\/11\/intel_blog3-768x113.png 768w\" sizes=\"auto, (max-width: 1002px) 100vw, 1002px\" \/><\/p>\n<p><span style=\"font-family: arial, helvetica, sans-serif;\">\u3053\u308c\u304c\u6700\u521d\u306e\u53cd\u5fa9\u3067\u3059\u3002 \u30a4\u30f3\u30c6\u30eb<sup>\u00ae<\/sup> DPC++ \u30b3\u30f3\u30d1\u30a4\u30e9\u30fc\u3067\u8a2d\u5b9a\u3057\u3066\u30b3\u30f3\u30d1\u30a4\u30eb\u3057\u3001 \u5b9f\u884c\u3057\u307e\u3059\u3002<\/span><\/p>\n<h2><span style=\"font-family: arial, helvetica, sans-serif;\">\u30c7\u30fc\u30bf\u4e26\u5217 C++: \u30a4\u30f3\u30c6\u30eb\u306e GPU \u306e\u9078\u629e<\/span><\/h2>\n<p><span style=\"font-family: arial, helvetica, sans-serif;\">\u6700\u521d\u306e\u53cd\u5fa9\u306e\u6b20\u70b9\u306f\u3001 \u5e38\u306b\u30c7\u30d5\u30a9\u30eb\u30c8\u306e\u30c7\u30d0\u30a4\u30b9\u3092\u9078\u629e\u3059\u308b\u3053\u3068\u3067\u3059\u3002 \u9078\u629e\u3055\u308c\u308b\u30c7\u30d0\u30a4\u30b9\u306f\u3001 \u30a4\u30f3\u30c6\u30eb\u306e GPU \u3067\u3042\u308b\u3068\u306f\u9650\u308a\u307e\u305b\u3093\u3002 \u30a4\u30f3\u30c6\u30eb\u306e GPU \u3092\u6307\u5b9a\u3059\u308b\u306b\u306f\u3001 \u30ab\u30b9\u30bf\u30e0 \u30fb \u30c7\u30d0\u30a4\u30b9 \u30fb \u30bb\u30ec\u30af\u30bf\u30fc\u3092\u8a18\u8ff0\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002<\/span><\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-1506\" src=\"https:\/\/www.xlsoft.com\/jp\/blog\/intel\/wp-content\/uploads\/sites\/5\/2021\/11\/intel_blog4.png\" alt=\"\" width=\"1003\" height=\"408\" srcset=\"https:\/\/www.xlsoft.com\/jp\/blog\/intel\/wp-content\/uploads\/sites\/5\/2021\/11\/intel_blog4.png 1003w, https:\/\/www.xlsoft.com\/jp\/blog\/intel\/wp-content\/uploads\/sites\/5\/2021\/11\/intel_blog4-300x122.png 300w, https:\/\/www.xlsoft.com\/jp\/blog\/intel\/wp-content\/uploads\/sites\/5\/2021\/11\/intel_blog4-768x312.png 768w\" sizes=\"auto, (max-width: 1003px) 100vw, 1003px\" \/><\/p>\n<p><span style=\"font-family: arial, helvetica, sans-serif;\">\u30e6\u30fc\u30b6\u30fc\u304c\u8981\u6c42\u3057\u305f\u5834\u5408\u3001 intel_gpu_selector \u3092\u4f7f\u7528\u3057\u3066\u30a4\u30f3\u30c6\u30eb\u306e GPU \u3092\u9078\u629e\u3057\u307e\u3059\u3002<\/span><\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-1524\" src=\"https:\/\/www.xlsoft.com\/jp\/blog\/intel\/wp-content\/uploads\/sites\/5\/2021\/11\/intel_blog5.png\" alt=\"\" width=\"999\" height=\"576\" srcset=\"https:\/\/www.xlsoft.com\/jp\/blog\/intel\/wp-content\/uploads\/sites\/5\/2021\/11\/intel_blog5.png 999w, https:\/\/www.xlsoft.com\/jp\/blog\/intel\/wp-content\/uploads\/sites\/5\/2021\/11\/intel_blog5-300x173.png 300w, https:\/\/www.xlsoft.com\/jp\/blog\/intel\/wp-content\/uploads\/sites\/5\/2021\/11\/intel_blog5-768x443.png 768w\" sizes=\"auto, (max-width: 999px) 100vw, 999px\" \/><\/p>\n<h2><span style=\"font-family: arial, helvetica, sans-serif;\">\u30c7\u30fc\u30bf\u4e26\u5217 C++: \u30ab\u30fc\u30cd\u30eb\u5f15\u6570\u306e\u8a2d\u5b9a\u3068\u30ab\u30fc\u30cd\u30eb\u306e\u8d77\u52d5<\/span><\/h2>\n<p><span style=\"font-family: arial, helvetica, sans-serif;\">\u7b2c 3 \u53cd\u5fa9\u3067\u306f\u3001 DPC++ \u3092\u4f7f\u7528\u3057\u3066\u30ab\u30fc\u30cd\u30eb\u5f15\u6570\u3092\u8a2d\u5b9a\u3057\u3001 \u30ab\u30fc\u30cd\u30eb\u3092\u8d77\u52d5\u3057\u307e\u3059\u3002 \u30d7\u30ed\u30b0\u30e9\u30e0\u306e\u30d3\u30eb\u30c9\u3068\u30ab\u30fc<\/span><span style=\"font-family: arial, helvetica, sans-serif;\">\u30cd\u30eb\u306e\u53d6\u5f97\u306f\u3001 OpenCL* \u3067\u884c\u3044\u307e\u3059\u3002 <em>cl::sycl::kernel<\/em> \u30aa\u30d6\u30b8\u30a7\u30af\u30c8\u3092\u4f7f\u7528\u3057\u3066\u30aa\u30ea\u30b8\u30ca\u30eb\u306e OpenCL*\u00a0<\/span><span style=\"font-family: arial, helvetica, sans-serif;\">\u30ab\u30fc\u30cd\u30eb\u3092\u30e9\u30c3\u30d7\u3057\u307e\u3059\u3002 \u6b21\u306b\u4f8b\u3092\u793a\u3057\u307e\u3059\u3002<\/span><\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-1507\" src=\"https:\/\/www.xlsoft.com\/jp\/blog\/intel\/wp-content\/uploads\/sites\/5\/2021\/11\/intel_blog6.png\" alt=\"\" width=\"997\" height=\"97\" srcset=\"https:\/\/www.xlsoft.com\/jp\/blog\/intel\/wp-content\/uploads\/sites\/5\/2021\/11\/intel_blog6.png 997w, https:\/\/www.xlsoft.com\/jp\/blog\/intel\/wp-content\/uploads\/sites\/5\/2021\/11\/intel_blog6-300x29.png 300w, https:\/\/www.xlsoft.com\/jp\/blog\/intel\/wp-content\/uploads\/sites\/5\/2021\/11\/intel_blog6-768x75.png 768w\" sizes=\"auto, (max-width: 997px) 100vw, 997px\" \/><\/p>\n<p><span style=\"font-family: arial, helvetica, sans-serif;\"><em>clSetKernelArg<\/em> \u30e1 \u30bd \u30c3\u30c9 \u3092 DPC++ \u306e <em>set_arg<\/em> \u30e1 \u30bd \u30c3\u30c9 \u306b\u3001<em>clEnqueueNDRange<\/em> \u547c\u3073\u51fa\u3057\u3092<\/span><br \/>\n<span style=\"font-family: arial, helvetica, sans-serif;\">parallel_for \u547c\u3073\u51fa\u3057\u306b\u305d\u308c\u305e\u308c\u7f6e\u304d\u63db\u3048\u307e\u3059\u3002 \u4ee5\u4e0b\u306e\u4f8b\u306f\u3001<em>gqsort_kernel<\/em> \u3067\u3059\u304c\u3001<em> lqsort_<\/em><\/span><br \/>\n<span style=\"font-family: arial, helvetica, sans-serif;\"><em>kernel<\/em> \u306e\u5909\u66f4\u3082\u975e\u5e38\u306b\u4f3c\u3066\u3044\u307e\u3059\u3002<\/span><\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-1525\" src=\"https:\/\/www.xlsoft.com\/jp\/blog\/intel\/wp-content\/uploads\/sites\/5\/2021\/11\/intel_blog7.png\" alt=\"\" width=\"1003\" height=\"384\" srcset=\"https:\/\/www.xlsoft.com\/jp\/blog\/intel\/wp-content\/uploads\/sites\/5\/2021\/11\/intel_blog7.png 1003w, https:\/\/www.xlsoft.com\/jp\/blog\/intel\/wp-content\/uploads\/sites\/5\/2021\/11\/intel_blog7-300x115.png 300w, https:\/\/www.xlsoft.com\/jp\/blog\/intel\/wp-content\/uploads\/sites\/5\/2021\/11\/intel_blog7-768x294.png 768w\" sizes=\"auto, (max-width: 1003px) 100vw, 1003px\" \/><\/p>\n<p><span style=\"font-family: arial, helvetica, sans-serif;\">\u4ee5\u4e0b\u306e\u3088\u3046\u306b\u3001 1 \u56de\u306e <em>set_args<\/em> \u547c\u3073\u51fa\u3057\u3067\u3059\u3079\u3066\u306e\u30ab\u30fc\u30cd\u30eb\u5f15\u6570\u3092\u8a2d\u5b9a\u3059\u308b\u3053\u3068\u3082\u3067\u304d\u307e\u3059\u3002<\/span><\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-1508\" src=\"https:\/\/www.xlsoft.com\/jp\/blog\/intel\/wp-content\/uploads\/sites\/5\/2021\/11\/intel_blog8.png\" alt=\"\" width=\"1000\" height=\"93\" srcset=\"https:\/\/www.xlsoft.com\/jp\/blog\/intel\/wp-content\/uploads\/sites\/5\/2021\/11\/intel_blog8.png 1000w, https:\/\/www.xlsoft.com\/jp\/blog\/intel\/wp-content\/uploads\/sites\/5\/2021\/11\/intel_blog8-300x28.png 300w, https:\/\/www.xlsoft.com\/jp\/blog\/intel\/wp-content\/uploads\/sites\/5\/2021\/11\/intel_blog8-768x71.png 768w\" sizes=\"auto, (max-width: 1000px) 100vw, 1000px\" \/><\/p>\n<p><span style=\"font-family: arial, helvetica, sans-serif;\"><em>parallel_for<\/em> \u3082\u6b21\u306e\u3088\u3046\u306b\u7c21\u6f54\u306b\u6307\u5b9a\u3059\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002<\/span><\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-1526\" src=\"https:\/\/www.xlsoft.com\/jp\/blog\/intel\/wp-content\/uploads\/sites\/5\/2021\/11\/intel_blog9.png\" alt=\"\" width=\"1000\" height=\"121\" srcset=\"https:\/\/www.xlsoft.com\/jp\/blog\/intel\/wp-content\/uploads\/sites\/5\/2021\/11\/intel_blog9.png 1000w, https:\/\/www.xlsoft.com\/jp\/blog\/intel\/wp-content\/uploads\/sites\/5\/2021\/11\/intel_blog9-300x36.png 300w, https:\/\/www.xlsoft.com\/jp\/blog\/intel\/wp-content\/uploads\/sites\/5\/2021\/11\/intel_blog9-768x93.png 768w\" sizes=\"auto, (max-width: 1000px) 100vw, 1000px\" \/><\/p>\n<h2><span style=\"font-family: arial, helvetica, sans-serif;\">\u30c7\u30fc\u30bf\u4e26\u5217 C++: \u30d0\u30c3\u30d5\u30a1\u30fc\u306e\u4f5c\u6210\u3068\u30a2\u30af\u30bb\u30b9\u30e2\u30fc\u30c9\u306e\u8a2d\u5b9a<\/span><\/h2>\n<p><span style=\"font-family: arial, helvetica, sans-serif;\">OpenCL* \u30d0\u30c3\u30d5\u30a1\u30fc\u3092 DPC++ \u30d0\u30c3\u30d5\u30a1\u30fc\u306b\u5909\u63db\u3057\u307e\u3059 (\u6700\u521d\u306e 2 \u3064\u306f\u3001 \u30a2\u30e9\u30a4\u30e1\u30f3\u30c8\u3055\u308c\u305f\u5272\u308a\u5f53\u3066\u3067\u95a2\u6570\u306b\u53c2\u7167\u6e21\u3057\u3055\u308c\u308b\u30e1\u30e2\u30ea\u30fc\u3092\u30e9\u30c3\u30d7\u3057\u3066\u304a\u308a\u3001 \u6b8b\u308a\u306e 3 \u3064\u306f STL \u30d9\u30af\u30c8\u30eb\u304b\u3089\u4f5c\u6210\u3055\u308c\u307e\u3059)\u3002 \u53c2\u7167\u6e21\u3057\u306e\u30d0\u30c3\u30d5\u30a1\u30fc\u306f\u3001 <em>get_access<\/em> \u30e1\u30f3\u30d0\u30fc\u95a2\u6570\u306e\u524d\u306b <em>template<\/em> \u30ad\u30fc\u30ef\u30fc\u30c9\u3092\u4f7f\u7528\u3057\u307e\u3059\u3002 \u5fc5\u8981\u306a\u30a2\u30af\u30bb\u30b9(\u8aad\u307f\u53d6\u308a\u3001 \u66f8\u304d\u8fbc\u307f\u3001 \u3042\u308b\u3044\u306f\u4e21\u65b9) \u306b\u5fdc\u3058\u3066\u3001 \u30d0\u30c3\u30d5\u30a1\u30fc\u306e\u30a2\u30af\u30bb\u30b9\u30e2\u30fc\u30c9\u306f\u7570\u306a\u308a\u307e\u3059\u3002 \u30ab\u30fc\u30cd\u30eb\u5f15\u6570\u3068\u3057\u3066\u30d0\u30c3\u30d5\u30a1\u30fc\u3092\u76f4\u63a5\u6e21\u3059\u306e\u3067\u306f\u306a\u304f\u3001 \u30d0\u30c3\u30d5\u30a1\u30fc\u3078\u306e\u30a2\u30af\u30bb\u30b5\u30fc\u3092\u6e21\u3057\u307e\u3059\u3002<\/span><\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-1509\" src=\"https:\/\/www.xlsoft.com\/jp\/blog\/intel\/wp-content\/uploads\/sites\/5\/2021\/11\/intel_blog10.png\" alt=\"\" width=\"994\" height=\"577\" srcset=\"https:\/\/www.xlsoft.com\/jp\/blog\/intel\/wp-content\/uploads\/sites\/5\/2021\/11\/intel_blog10.png 994w, https:\/\/www.xlsoft.com\/jp\/blog\/intel\/wp-content\/uploads\/sites\/5\/2021\/11\/intel_blog10-300x174.png 300w, https:\/\/www.xlsoft.com\/jp\/blog\/intel\/wp-content\/uploads\/sites\/5\/2021\/11\/intel_blog10-768x446.png 768w\" sizes=\"auto, (max-width: 994px) 100vw, 994px\" \/><\/p>\n<h2><span style=\"font-family: arial, helvetica, sans-serif;\">\u30c7\u30fc\u30bf\u4e26\u5217 C++: \u30d7\u30e9\u30c3\u30c8\u30d5\u30a9\u30fc\u30e0\u3068\u30c7\u30d0\u30a4\u30b9\u306e\u30d7\u30ed\u30d1\u30c6\u30a3\u30fc\u306e\u7167\u4f1a<\/span><\/h2>\n<p><span style=\"font-family: arial, helvetica, sans-serif;\">OpenCL* \u3067\u306f\u3001<em>clGetPlatformInfo<\/em> \u30e1\u30bd\u30c3\u30c9\u3068 <em>clGetDeviceInfo<\/em> \u30e1\u30bd\u30c3\u30c9\u3092\u4f7f\u7528\u3057\u3066\u30d7\u30e9\u30c3\u30c8\u30d5\u30a9\u30fc<\/span><br \/>\n<span style=\"font-family: arial, helvetica, sans-serif;\">\u30e0\u3068\u30c7\u30d0\u30a4\u30b9\u306e\u30d7\u30ed\u30d1\u30c6\u30a3\u30fc\u3092\u7167\u4f1a\u3057\u307e\u3059\u3002 \u3053\u308c\u3089\u306e\u60c5\u5831\u306e\u7167\u4f1a\u306b\u306f\u3001 <em>get_info&lt;&gt;<\/em> \u30e1\u30bd\u30c3\u30c9\u3092\u4f7f\u7528\u3057\u307e\u3059\u3002\u6b21\u306b\u4f8b\u3092\u793a\u3057\u307e\u3059\u3002<\/span><\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-1527\" src=\"https:\/\/www.xlsoft.com\/jp\/blog\/intel\/wp-content\/uploads\/sites\/5\/2021\/11\/intel_blog11.png\" alt=\"\" width=\"1005\" height=\"76\" srcset=\"https:\/\/www.xlsoft.com\/jp\/blog\/intel\/wp-content\/uploads\/sites\/5\/2021\/11\/intel_blog11.png 1005w, https:\/\/www.xlsoft.com\/jp\/blog\/intel\/wp-content\/uploads\/sites\/5\/2021\/11\/intel_blog11-300x23.png 300w, https:\/\/www.xlsoft.com\/jp\/blog\/intel\/wp-content\/uploads\/sites\/5\/2021\/11\/intel_blog11-768x58.png 768w\" sizes=\"auto, (max-width: 1005px) 100vw, 1005px\" \/><\/p>\n<p><span style=\"font-family: arial, helvetica, sans-serif;\">\u307e\u305f\u306f\u3001 \u6b21\u306e\u3088\u3046\u306a\u3088\u308a\u8907\u96d1\u306a\u69cb\u9020\u306e\u30d7\u30ed\u30d1\u30c6\u30a3\u30fc\u3092\u7167\u4f1a\u3059\u308b\u3053\u3068\u3082\u3067\u304d\u307e\u3059\u3002<\/span><\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-1510\" src=\"https:\/\/www.xlsoft.com\/jp\/blog\/intel\/wp-content\/uploads\/sites\/5\/2021\/11\/intel_blog12.png\" alt=\"\" width=\"1011\" height=\"91\" srcset=\"https:\/\/www.xlsoft.com\/jp\/blog\/intel\/wp-content\/uploads\/sites\/5\/2021\/11\/intel_blog12.png 1011w, https:\/\/www.xlsoft.com\/jp\/blog\/intel\/wp-content\/uploads\/sites\/5\/2021\/11\/intel_blog12-300x27.png 300w, https:\/\/www.xlsoft.com\/jp\/blog\/intel\/wp-content\/uploads\/sites\/5\/2021\/11\/intel_blog12-768x69.png 768w\" sizes=\"auto, (max-width: 1011px) 100vw, 1011px\" \/><\/p>\n<h2><span style=\"font-family: arial, helvetica, sans-serif;\">OpenCL* \u30ab\u30fc\u30cd\u30eb\u304b\u3089\u30c7\u30fc\u30bf\u4e26\u5217 C++ \u3078\u306e\u79fb\u884c &#8211; \u30d1\u30fc\u30c8 1: gqsort_kernel<\/span><\/h2>\n<p><span style=\"font-family: arial, helvetica, sans-serif;\">\u3053\u3053\u307e\u3067\u306f\u3001 DPC++ \u3067\u30d7\u30e9\u30c3\u30c8\u30d5\u30a9\u30fc\u30e0\u3068\u30c7\u30d0\u30a4\u30b9\u3092\u521d\u671f\u5316\u3057\u3001 \u30d0\u30c3\u30d5\u30a1\u30fc\u3068\u30a2\u30af\u30bb\u30b5\u30fc\u3092\u4f5c\u6210\u3057\u3066\u30ab\u30fc\u30cd\u30eb\u306b\u30d0\u30a4\u30f3\u30c9\u3057\u3001 \u30c7\u30d0\u30a4\u30b9\u3067\u30ab\u30fc\u30cd\u30eb\u3092\u8d77\u52d5\u3057\u307e\u3057\u305f\u3002 \u3057\u304b\u3057\u3001 \u30ab\u30fc\u30cd\u30eb\u306e\u4f5c\u6210\u306f OpenCL* \u3067\u884c\u3046\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002<\/span><span style=\"font-family: arial, helvetica, sans-serif;\">OpenCL* C \u3068 <em>clBuildProgram\/clCreateKernel<\/em> API \u3092\u4f7f\u7528\u3057\u3066\u3001 \u30d7\u30ed\u30b0\u30e9\u30e0\u3092\u30d3\u30eb\u30c9\u3057\u30ab\u30fc\u30cd\u30eb\u3092\u4f5c<\/span><span style=\"font-family: arial, helvetica, sans-serif;\">\u6210\u3057\u307e\u3059\u3002 OpenCL* C \u30ab\u30fc\u30cd\u30eb\u306f\u3001 \u5b9f\u884c\u6642\u306b\u30d3\u30eb\u30c9\u306e\u524d\u306b\u30d7\u30ed\u30b0\u30e9\u30e0\u306b\u30ed\u30fc\u30c9\u3055\u308c\u308b\u5225\u306e\u30d5\u30a1\u30a4\u30eb\u306b\u683c\u7d0d\u3055\u308c\u307e\u3059\u3002 \u3053\u308c\u3092\u5909\u66f4\u3057\u307e\u3059\u3002 2 \u3064\u306e\u30ab\u30fc\u30cd\u30eb\u306e\u3046\u3061\u3001 \u7c21\u5358\u306a <em>gqsort_kernel<\/em> \u304b\u3089\u4f5c\u696d\u3057\u307e\u3059\u3002<\/span><\/p>\n<p><span style=\"font-family: arial, helvetica, sans-serif;\">DPC++ \u3067\u306f\u3001 \u30e9\u30e0\u30c0\u307e\u305f\u306f\u30d5\u30a1\u30f3\u30af\u30bf\u30fc\u3092\u4f7f\u7528\u3057\u3066\u30ab\u30fc\u30cd\u30eb\u3092\u4f5c\u6210\u3057\u307e\u3059\u3002 \u901a\u5e38\u3001 \u5c0f\u3055\u306a\u30ab\u30fc\u30cd\u30eb\u306f\u30e9\u30e0\u30c0\u3092\u4f7f\u7528\u3057\u3066\u4f5c\u6210\u3057\u307e\u3059\u3002 \u30b5\u30dd\u30fc\u30c8\u95a2\u6570\u3092\u4f7f\u7528\u3059\u308b\u8907\u96d1\u306a\u30ab\u30fc\u30cd\u30eb\u3067\u306f\u3001 \u30d5\u30a1\u30f3\u30af\u30bf\u30fc \u30fb \u30af\u30e9\u30b9\u3092\u4f5c\u6210\u3057\u305f\u307b\u3046\u304c\u826f\u3044\u3067\u3057\u3087\u3046\u3002 <em>gqsort_kernel_class<\/em> \u30d5\u30a1\u30f3\u30af\u30bf\u30fc\u3092\u4f5c\u6210\u3057\u3066\u3001 \u5f8c\u3067\u8907\u6570\u306e\u30c7\u30fc\u30bf\u578b\u3092\u30bd\u30fc\u30c8\u3067\u304d\u308b\u3088\u3046\u306b\u30c6\u30f3\u30d7\u30ec\u30fc\u30c8\u5316\u3057\u307e\u3059\u3002<\/span><\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-1528\" src=\"https:\/\/www.xlsoft.com\/jp\/blog\/intel\/wp-content\/uploads\/sites\/5\/2021\/11\/intel_blog13.png\" alt=\"\" width=\"994\" height=\"132\" srcset=\"https:\/\/www.xlsoft.com\/jp\/blog\/intel\/wp-content\/uploads\/sites\/5\/2021\/11\/intel_blog13.png 994w, https:\/\/www.xlsoft.com\/jp\/blog\/intel\/wp-content\/uploads\/sites\/5\/2021\/11\/intel_blog13-300x40.png 300w, https:\/\/www.xlsoft.com\/jp\/blog\/intel\/wp-content\/uploads\/sites\/5\/2021\/11\/intel_blog13-768x102.png 768w\" sizes=\"auto, (max-width: 994px) 100vw, 994px\" \/><\/p>\n<p><span style=\"font-family: arial, helvetica, sans-serif;\">\u5178\u578b\u7684\u306a\u30d5\u30a1\u30f3\u30af\u30bf\u30fc \u30fb \u30af\u30e9\u30b9\u306b\u306f\u3001 \u30d1\u30e9\u30e1\u30fc\u30bf\u30fc\u3068\u3057\u3066\u53cd\u5fa9 ID (\u3053\u306e\u4f8b\u3067\u306f <em>nd_item&lt;1&gt; id<\/em>) \u3092\u53d7\u3051\u53d6 \u308b <em>void operator()<\/em> \u304c\u3042\u308a\u307e\u3059\u3002 \u30ab\u30fc\u30cd\u30eb\u672c\u4f53\u306f <em>void operator()<\/em> \u306b\u3042\u308a\u307e\u3059\u3002 \u30d5\u30a1\u30f3\u30af\u30bf\u30fc\u306b\u306f\u3001 OpenCL* \u30ab\u30fc\u30cd\u30eb\u306e\u30b0\u30ed\u30fc\u30d0\u30eb\u304a\u3088\u3073\u30ed\u30fc\u30ab\u30eb \u30fb\u30e1\u30e2\u30ea\u30fc \u30fb \u30dd\u30a4\u30f3\u30bf\u30fc\u3068\u540c\u7b49\u306e\u3001 \u30b0\u30ed\u30fc\u30d0\u30eb\u304a\u3088\u3073\u30ed\u30fc\u30ab\u30eb \u30a2\u30af\u30bb\u30b5\u30fc\u3092\u53d7\u3051\u53d6\u308b\u30b3\u30f3\u30b9\u30c8\u30e9\u30af\u30bf\u30fc\u304c\u3042\u308a\u307e\u3059\u3002 \u5178\u578b\u7684\u306a DPC++ \u30d5\u30a1\u30f3\u30af\u30bf\u30fc\u306b\u306f\u3001 \u30b0\u30ed\u30fc\u30d0\u30eb\u304a\u3088\u3073 \u30ed\u30fc\u30ab\u30eb\u30a2\u30af\u30bb\u30b5\u30fc\u306e\u578b\u3092\u5b9a\u7fa9\u3059\u308b <em>using<\/em> \u53e5\u3092\u6301\u3064\u30d7\u30ea\u30a2\u30f3\u30d6\u30eb\u304c\u3042\u308a\u307e\u3059\u3002<em>gqsort_kernel<\/em> \u306e\u4f8b\u3067\u306f\u3001 \u6b21\u306e\u3088\u3046\u306b\u306a\u308a\u307e\u3059\u3002<\/span><\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-1511\" src=\"https:\/\/www.xlsoft.com\/jp\/blog\/intel\/wp-content\/uploads\/sites\/5\/2021\/11\/intel_blog14.png\" alt=\"\" width=\"994\" height=\"267\" srcset=\"https:\/\/www.xlsoft.com\/jp\/blog\/intel\/wp-content\/uploads\/sites\/5\/2021\/11\/intel_blog14.png 994w, https:\/\/www.xlsoft.com\/jp\/blog\/intel\/wp-content\/uploads\/sites\/5\/2021\/11\/intel_blog14-300x81.png 300w, https:\/\/www.xlsoft.com\/jp\/blog\/intel\/wp-content\/uploads\/sites\/5\/2021\/11\/intel_blog14-768x206.png 768w\" sizes=\"auto, (max-width: 994px) 100vw, 994px\" \/><\/p>\n<p><span style=\"font-family: arial, helvetica, sans-serif;\">\u30d5\u30a1\u30f3\u30af\u30bf\u30fc\u306e <em>private<\/em> \u30bb\u30af\u30b7\u30e7\u30f3\u306b\u306f\u3001 <em>void operator()<\/em> \u306e\u672c\u4f53\u3067\u4f7f\u7528\u3055\u308c\u308b\u3059\u3079\u3066\u306e\u30b0\u30ed\u30fc\u30d0\u30eb\u304a\u3088<\/span><br \/>\n<span style=\"font-family: arial, helvetica, sans-serif;\">\u3073\u30ed\u30fc\u30ab\u30eb\u30a2\u30af\u30bb\u30b5\u30fc\u304c\u542b\u307e\u308c\u307e\u3059\u3002 \u3053\u306e\u4f8b\u3067\u306f\u3001 \u6b21\u306e\u3088\u3046\u306b\u306a\u308a\u307e\u3059\u3002 \u6700\u521d\u306e 5 \u3064\u306f\u3001 \u30b0\u30ed\u30fc\u30d0\u30eb\u30d0\u30c3\u30d5\u30a1\u30fc\u3078\u306e\u30a2\u30af\u30bb\u30b5\u30fc\u3067\u3001 \u6b8b\u308a\u306f\u30ed\u30fc\u30ab\u30eb\u30d0\u30c3\u30d5\u30a1\u30fc\u3078\u306e\u30a2\u30af\u30bb\u30b5\u30fc\u3067\u3059\u3002<\/span><\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-1529\" src=\"https:\/\/www.xlsoft.com\/jp\/blog\/intel\/wp-content\/uploads\/sites\/5\/2021\/11\/intel_blog15.png\" alt=\"\" width=\"994\" height=\"186\" srcset=\"https:\/\/www.xlsoft.com\/jp\/blog\/intel\/wp-content\/uploads\/sites\/5\/2021\/11\/intel_blog15.png 994w, https:\/\/www.xlsoft.com\/jp\/blog\/intel\/wp-content\/uploads\/sites\/5\/2021\/11\/intel_blog15-300x56.png 300w, https:\/\/www.xlsoft.com\/jp\/blog\/intel\/wp-content\/uploads\/sites\/5\/2021\/11\/intel_blog15-768x144.png 768w\" sizes=\"auto, (max-width: 994px) 100vw, 994px\" \/><\/p>\n<p><span style=\"font-family: arial, helvetica, sans-serif;\"><em>gqsort_kernel<\/em> \u306f\u3001 \u30b5\u30dd\u30fc\u30c8\u69cb\u9020\u4f53\u3068 2 \u3064\u306e\u30b5\u30dd\u30fc\u30c8\u95a2\u6570 <em>plus_prescan<\/em> \u3068 <em>median<\/em> \u3092\u4f7f\u7528\u3059\u308b\u8907\u96d1<\/span><br \/>\n<span style=\"font-family: arial, helvetica, sans-serif;\">\u306a\u30ab\u30fc\u30cd\u30eb\u3067\u3059\u3002 \u3053\u308c\u3089\u306e\u30b5\u30dd\u30fc\u30c8\u95a2\u6570\u306f\u3001\u7279\u6b8a\u306a OpenCL* \u95a2\u6570\u3092\u4f7f\u7528\u3057\u3001\u30ed\u30fc\u30ab\u30eb\u30e1\u30e2\u30ea\u30fc\u914d\u5217\u304a\u3088\u3073\u5909\u6570\u3001\u30ed\u30fc\u30ab\u30eb\u304a\u3088\u3073\u30b0\u30ed\u30fc\u30d0\u30eb\u30d0\u30ea\u30a2\u3001 \u30a2\u30c8\u30df\u30c3\u30af\u64cd\u4f5c\u3092\u5e45\u5e83\u304f\u4f7f\u7528\u3057\u307e\u3059\u3002 \u3053\u308c\u3089\u306e\u8981\u7d20\u3092\u3059\u3079\u3066 DPC++ \u306b\u5909\u63db\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002<\/span><\/p>\n<p><span style=\"font-family: arial, helvetica, sans-serif;\">\u95a2\u6570\u304b\u3089\u958b\u59cb\u3057\u307e\u3057\u3087\u3046\u3002 \u69cb\u9020\u4f53\u306f\u30c6\u30f3\u30d7\u30ec\u30fc\u30c8\u5316\u3055\u308c\u3066\u3044\u308b\u305f\u3081\u7701\u7565\u3057\u307e\u3059\u3002 \u30b9\u30ad\u30e3\u30f3\u5408\u8a08\u3092\u8a08\u7b97\u3059\u308b <em>plus_prescan<\/em> \u95a2\u6570\u306f\u6bd4\u8f03\u7684\u5358\u7d14\u306a\u305f\u3081\u3001 \u30bd\u30fc\u30c8\u3092\u6c4e\u7528\u7684\u306b\u3059\u308b\u6e96\u5099\u3068\u3057\u3066\u30c6\u30f3\u30d7\u30ec\u30fc\u30c8\u95a2\u6570\u306b\u3059\u308b\u3060\u3051\u3067 DPC++ \u306b\u79fb\u884c\u3067\u304d\u307e\u3059\u3002<\/span><\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-1512\" src=\"https:\/\/www.xlsoft.com\/jp\/blog\/intel\/wp-content\/uploads\/sites\/5\/2021\/11\/intel_blog16.png\" alt=\"\" width=\"1008\" height=\"196\" srcset=\"https:\/\/www.xlsoft.com\/jp\/blog\/intel\/wp-content\/uploads\/sites\/5\/2021\/11\/intel_blog16.png 1008w, https:\/\/www.xlsoft.com\/jp\/blog\/intel\/wp-content\/uploads\/sites\/5\/2021\/11\/intel_blog16-300x58.png 300w, https:\/\/www.xlsoft.com\/jp\/blog\/intel\/wp-content\/uploads\/sites\/5\/2021\/11\/intel_blog16-768x149.png 768w\" sizes=\"auto, (max-width: 1008px) 100vw, 1008px\" \/><\/p>\n<p><span style=\"font-family: arial, helvetica, sans-serif;\"><em>median<\/em> \u95a2 \u6570 \u306f\u3001 \u30c6 \u30f3 \u30d7 \u30ec \u30fc\u30c8 \u95a2 \u6570 \u306b \u3059 \u308b \u3060 \u3051 \u3067 \u306a\u304f\u3001 OpenCL* C \u306e <em>select<\/em> \u95a2 \u6570 \u3092 DPC++ \u306e\u00a0<\/span><span style=\"font-family: arial, helvetica, sans-serif;\"><em>cl::sycl::select<\/em> \u95a2\u6570\u306b\u7f6e\u304d\u63db\u3048\u3066\u3001 \u540c\u69d8\u306e\u30db\u30b9\u30c8\u95a2\u6570\u3068\u533a\u5225\u3059\u308b\u305f\u3081\u540d\u524d\u3092 <em>median_select<\/em> \u306b<\/span><br \/>\n<span style=\"font-family: arial, helvetica, sans-serif;\">\u5909\u66f4\u3057\u307e\u3059\u3002<\/span><\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-1530\" src=\"https:\/\/www.xlsoft.com\/jp\/blog\/intel\/wp-content\/uploads\/sites\/5\/2021\/11\/intel_blog17.png\" alt=\"\" width=\"1006\" height=\"382\" srcset=\"https:\/\/www.xlsoft.com\/jp\/blog\/intel\/wp-content\/uploads\/sites\/5\/2021\/11\/intel_blog17.png 1006w, https:\/\/www.xlsoft.com\/jp\/blog\/intel\/wp-content\/uploads\/sites\/5\/2021\/11\/intel_blog17-300x114.png 300w, https:\/\/www.xlsoft.com\/jp\/blog\/intel\/wp-content\/uploads\/sites\/5\/2021\/11\/intel_blog17-768x292.png 768w\" sizes=\"auto, (max-width: 1006px) 100vw, 1006px\" \/><\/p>\n<p><span style=\"font-family: arial, helvetica, sans-serif;\">OpenCL* C \u3067\u306f\u3001 \u30ed\u30fc\u30ab\u30eb\u30e1\u30e2\u30ea\u30fc\u5909\u6570\u3068\u914d\u5217\u3092\u30ab\u30fc\u30cd\u30eb\u306e\u672c\u4f53\u5185\u3067\u4f5c\u6210\u3057\u3066\u3001 \u30ab\u30fc\u30cd\u30eb\u5f15\u6570\u3068\u3057\u3066\u6e21\u3059\u3053\u3068\u304c\u53ef\u80fd\u3067\u3059\u3002 \u3057\u304b\u3057\u3001 DPC++ \u3067\u306f\u3001 \u30d5\u30a1\u30f3\u30af\u30bf\u30fc\u3092\u4f7f\u7528\u3059\u308b\u5834\u5408\u3001 \u30d5\u30a1\u30f3\u30af\u30bf\u30fc\u3092\u69cb\u7bc9\u3059\u308b\u969b\u306b\u30ed\u30fc\u30ab\u30eb \u30fb \u30d0\u30c3\u30d5\u30a1\u30fc \u30fb\u30a2\u30af\u30bb\u30b5\u30fc\u3092\u6e21\u3057\u307e\u3059\u3002 \u3053\u306e\u4f8b\u3067\u306f\u3001 \u3059\u3079\u3066\u306e\u30ed\u30fc\u30ab\u30eb\u30e1\u30e2\u30ea\u30fc\u5909\u6570\u3068\u914d\u5217\u306f\u7b26\u53f7\u306a\u3057\u6574\u6570\u3092\u683c\u7d0d\u3059\u308b\u305f\u3081\u3001 \u7279\u6b8a\u306a <em>local_read_write_accessor<\/em> \u578b\u3092\u4f5c\u6210\u3057\u307e\u3059\u3002<\/span><\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-1513\" src=\"https:\/\/www.xlsoft.com\/jp\/blog\/intel\/wp-content\/uploads\/sites\/5\/2021\/11\/intel_blog18.png\" alt=\"\" width=\"1000\" height=\"94\" srcset=\"https:\/\/www.xlsoft.com\/jp\/blog\/intel\/wp-content\/uploads\/sites\/5\/2021\/11\/intel_blog18.png 1000w, https:\/\/www.xlsoft.com\/jp\/blog\/intel\/wp-content\/uploads\/sites\/5\/2021\/11\/intel_blog18-300x28.png 300w, https:\/\/www.xlsoft.com\/jp\/blog\/intel\/wp-content\/uploads\/sites\/5\/2021\/11\/intel_blog18-768x72.png 768w\" sizes=\"auto, (max-width: 1000px) 100vw, 1000px\" \/><\/p>\n<p><span style=\"font-family: arial, helvetica, sans-serif;\">\u3059\u3079\u3066\u306e\u30ed\u30fc\u30ab\u30eb\u30e1\u30e2\u30ea\u30fc\u5909\u6570\u3092\u5ba3\u8a00\u3057\u307e\u3059\u3002<\/span><\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-1531\" src=\"https:\/\/www.xlsoft.com\/jp\/blog\/intel\/wp-content\/uploads\/sites\/5\/2021\/11\/intel_blog19.png\" alt=\"\" width=\"1003\" height=\"162\" srcset=\"https:\/\/www.xlsoft.com\/jp\/blog\/intel\/wp-content\/uploads\/sites\/5\/2021\/11\/intel_blog19.png 1003w, https:\/\/www.xlsoft.com\/jp\/blog\/intel\/wp-content\/uploads\/sites\/5\/2021\/11\/intel_blog19-300x48.png 300w, https:\/\/www.xlsoft.com\/jp\/blog\/intel\/wp-content\/uploads\/sites\/5\/2021\/11\/intel_blog19-768x124.png 768w\" sizes=\"auto, (max-width: 1003px) 100vw, 1003px\" \/><\/p>\n<p><span style=\"font-family: arial, helvetica, sans-serif;\">\u305d\u3057\u3066\u3001 \u305d\u308c\u3089\u3092\u30d1\u30e9\u30e1\u30fc\u30bf\u30fc\u3068\u3057\u3066\u3001 \u30b0\u30ed\u30fc\u30d0\u30eb\u30fb\u30d0\u30c3\u30d5\u30a1\u30fc\u30fb\u30a2\u30af\u30bb\u30b5\u30fc\u3068\u3068\u3082\u306b\u30d5\u30a1\u30f3\u30af\u30bf\u30fc\u30fb\u30b3\u30f3\u30b9\u30c8\u30e9\u30af\u30bf\u30fc\u306b\u6e21\u3057\u307e\u3059\u3002 \u6b21\u306b\u3001 \u751f\u6210\u3055\u308c\u305f\u30aa\u30d6\u30b8\u30a7\u30af\u30c8\u3092 <em>parallel_for<\/em> \u306b\u6e21\u3057\u307e\u3059\u3002<\/span><\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-1514\" src=\"https:\/\/www.xlsoft.com\/jp\/blog\/intel\/wp-content\/uploads\/sites\/5\/2021\/11\/intel_blog20.png\" alt=\"\" width=\"997\" height=\"201\" srcset=\"https:\/\/www.xlsoft.com\/jp\/blog\/intel\/wp-content\/uploads\/sites\/5\/2021\/11\/intel_blog20.png 997w, https:\/\/www.xlsoft.com\/jp\/blog\/intel\/wp-content\/uploads\/sites\/5\/2021\/11\/intel_blog20-300x60.png 300w, https:\/\/www.xlsoft.com\/jp\/blog\/intel\/wp-content\/uploads\/sites\/5\/2021\/11\/intel_blog20-768x155.png 768w\" sizes=\"auto, (max-width: 997px) 100vw, 997px\" \/><\/p>\n<p><span style=\"font-family: arial, helvetica, sans-serif;\">\u3053\u306e\u70b9\u306b\u304a\u3044\u3066\u3001 DPC++ \u306f OpenCL* C \u3088\u308a\u3082\u8907\u96d1\u3067\u3059\u3002 <em>get_group_id<\/em> \u95a2\u6570\u3068 <em>get_local_id<\/em> \u95a2\u6570\u306f<\/span><br \/>\n<span style=\"font-family: arial, helvetica, sans-serif;\">\u6b21\u306e\u3088\u3046\u306b\u306a\u308a\u307e\u3059\u3002<\/span><\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-1532\" src=\"https:\/\/www.xlsoft.com\/jp\/blog\/intel\/wp-content\/uploads\/sites\/5\/2021\/11\/intel_blog21.png\" alt=\"\" width=\"997\" height=\"88\" srcset=\"https:\/\/www.xlsoft.com\/jp\/blog\/intel\/wp-content\/uploads\/sites\/5\/2021\/11\/intel_blog21.png 997w, https:\/\/www.xlsoft.com\/jp\/blog\/intel\/wp-content\/uploads\/sites\/5\/2021\/11\/intel_blog21-300x26.png 300w, https:\/\/www.xlsoft.com\/jp\/blog\/intel\/wp-content\/uploads\/sites\/5\/2021\/11\/intel_blog21-768x68.png 768w\" sizes=\"auto, (max-width: 997px) 100vw, 997px\" \/><\/p>\n<p><span style=\"font-family: arial, helvetica, sans-serif;\">\u30ed\u30fc\u30ab\u30eb\u30d0\u30ea\u30a2\u306f\u3001<\/span><\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-1515\" src=\"https:\/\/www.xlsoft.com\/jp\/blog\/intel\/wp-content\/uploads\/sites\/5\/2021\/11\/intel_blog22.png\" alt=\"\" width=\"999\" height=\"69\" srcset=\"https:\/\/www.xlsoft.com\/jp\/blog\/intel\/wp-content\/uploads\/sites\/5\/2021\/11\/intel_blog22.png 999w, https:\/\/www.xlsoft.com\/jp\/blog\/intel\/wp-content\/uploads\/sites\/5\/2021\/11\/intel_blog22-300x21.png 300w, https:\/\/www.xlsoft.com\/jp\/blog\/intel\/wp-content\/uploads\/sites\/5\/2021\/11\/intel_blog22-768x53.png 768w\" sizes=\"auto, (max-width: 999px) 100vw, 999px\" \/><\/p>\n<p><span style=\"font-family: arial, helvetica, sans-serif;\">\u304b\u3089\u4ee5\u4e0b\u306b\u5909\u66f4\u3055\u308c\u307e\u3059\u3002<\/span><\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-1533\" src=\"https:\/\/www.xlsoft.com\/jp\/blog\/intel\/wp-content\/uploads\/sites\/5\/2021\/11\/intel_blog23.png\" alt=\"\" width=\"987\" height=\"69\" srcset=\"https:\/\/www.xlsoft.com\/jp\/blog\/intel\/wp-content\/uploads\/sites\/5\/2021\/11\/intel_blog23.png 987w, https:\/\/www.xlsoft.com\/jp\/blog\/intel\/wp-content\/uploads\/sites\/5\/2021\/11\/intel_blog23-300x21.png 300w, https:\/\/www.xlsoft.com\/jp\/blog\/intel\/wp-content\/uploads\/sites\/5\/2021\/11\/intel_blog23-768x54.png 768w\" sizes=\"auto, (max-width: 987px) 100vw, 987px\" \/><\/p>\n<p><span style=\"font-family: arial, helvetica, sans-serif;\">\u30b0\u30ed\u30fc\u30d0\u30eb\u304a\u3088\u3073\u30ed\u30fc\u30ab\u30eb\u30d0\u30ea\u30a2\u306f\u3001<\/span><\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-1516\" src=\"https:\/\/www.xlsoft.com\/jp\/blog\/intel\/wp-content\/uploads\/sites\/5\/2021\/11\/intel_blog24.png\" alt=\"\" width=\"999\" height=\"73\" srcset=\"https:\/\/www.xlsoft.com\/jp\/blog\/intel\/wp-content\/uploads\/sites\/5\/2021\/11\/intel_blog24.png 999w, https:\/\/www.xlsoft.com\/jp\/blog\/intel\/wp-content\/uploads\/sites\/5\/2021\/11\/intel_blog24-300x22.png 300w, https:\/\/www.xlsoft.com\/jp\/blog\/intel\/wp-content\/uploads\/sites\/5\/2021\/11\/intel_blog24-768x56.png 768w\" sizes=\"auto, (max-width: 999px) 100vw, 999px\" \/><\/p>\n<p><span style=\"font-family: arial, helvetica, sans-serif;\">\u304b\u3089\u4ee5\u4e0b\u306b\u5909\u66f4\u3055\u308c\u307e\u3059\u3002<\/span><\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-1534\" src=\"https:\/\/www.xlsoft.com\/jp\/blog\/intel\/wp-content\/uploads\/sites\/5\/2021\/11\/intel_blog25.png\" alt=\"\" width=\"988\" height=\"75\" srcset=\"https:\/\/www.xlsoft.com\/jp\/blog\/intel\/wp-content\/uploads\/sites\/5\/2021\/11\/intel_blog25.png 988w, https:\/\/www.xlsoft.com\/jp\/blog\/intel\/wp-content\/uploads\/sites\/5\/2021\/11\/intel_blog25-300x23.png 300w, https:\/\/www.xlsoft.com\/jp\/blog\/intel\/wp-content\/uploads\/sites\/5\/2021\/11\/intel_blog25-768x58.png 768w\" sizes=\"auto, (max-width: 988px) 100vw, 988px\" \/><\/p>\n<p><span style=\"font-family: arial, helvetica, sans-serif;\">DPC++ \u306e\u30a2\u30c8\u30df\u30c3\u30af\u64cd\u4f5c\u306f\u3001 OpenCL* C \u306e\u3088\u3046\u306b\u6d17\u7df4\u3055\u308c\u3066\u3044\u307e\u305b\u3093\u3002<\/span><br \/>\n<span style=\"font-family: arial, helvetica, sans-serif;\">OpenCL* C \u3067\u306f\u7c21\u6f54\u306a\u4ee5\u4e0b\u306e\u30b3\u30fc\u30c9\u304c<\/span><\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-1517\" src=\"https:\/\/www.xlsoft.com\/jp\/blog\/intel\/wp-content\/uploads\/sites\/5\/2021\/11\/intel_blog26.png\" alt=\"\" width=\"988\" height=\"118\" srcset=\"https:\/\/www.xlsoft.com\/jp\/blog\/intel\/wp-content\/uploads\/sites\/5\/2021\/11\/intel_blog26.png 988w, https:\/\/www.xlsoft.com\/jp\/blog\/intel\/wp-content\/uploads\/sites\/5\/2021\/11\/intel_blog26-300x36.png 300w, https:\/\/www.xlsoft.com\/jp\/blog\/intel\/wp-content\/uploads\/sites\/5\/2021\/11\/intel_blog26-768x92.png 768w\" sizes=\"auto, (max-width: 988px) 100vw, 988px\" \/><\/p>\n<p><span style=\"font-family: arial, helvetica, sans-serif;\">DPC++ \u3067\u306f\u6b21\u306e\u3088\u3046\u306b\u306a\u308a\u307e\u3059\u3002<\/span><\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-1535\" src=\"https:\/\/www.xlsoft.com\/jp\/blog\/intel\/wp-content\/uploads\/sites\/5\/2021\/11\/intel_blog27.png\" alt=\"\" width=\"994\" height=\"184\" srcset=\"https:\/\/www.xlsoft.com\/jp\/blog\/intel\/wp-content\/uploads\/sites\/5\/2021\/11\/intel_blog27.png 994w, https:\/\/www.xlsoft.com\/jp\/blog\/intel\/wp-content\/uploads\/sites\/5\/2021\/11\/intel_blog27-300x56.png 300w, https:\/\/www.xlsoft.com\/jp\/blog\/intel\/wp-content\/uploads\/sites\/5\/2021\/11\/intel_blog27-768x142.png 768w\" sizes=\"auto, (max-width: 994px) 100vw, 994px\" \/><\/p>\n<p><span style=\"font-family: arial, helvetica, sans-serif;\">DPC++ \u306e\u30a2\u30c8\u30df\u30c3\u30af\u64cd\u4f5c\u306f\u3001 \u30b0\u30ed\u30fc\u30d0\u30eb\u307e\u305f\u306f\u30ed\u30fc\u30ab\u30eb \u30fb\u30e1\u30e2\u30ea\u30fc \u30fb \u30dd\u30a4\u30f3\u30bf\u30fc\u3092\u76f4\u63a5\u64cd\u4f5c\u3067\u304d\u306a\u3044\u305f\u3081\u3001<em>cl::sycl::atomic&lt;&gt;<\/em> \u5909\u6570\u3092\u30a2\u30c8\u30df\u30c3\u30af\u64cd\u4f5c\u3092\u884c\u3046\u305f\u3081\u306b\u4f5c\u6210\u3057\u3066\u3044\u307e\u3059\u3002<\/span><\/p>\n<p><span style=\"font-family: arial, helvetica, sans-serif;\">\u3053\u3053\u307e\u3067\u3067\u3001 \u30b5\u30dd\u30fc\u30c8\u69cb\u9020\u4f53\u3068\u30b5\u30dd\u30fc\u30c8\u95a2\u6570\u3092\u5909\u63db\u3057\u3066\u30c6\u30f3\u30d7\u30ec\u30fc\u30c8\u5316\u3057\u3001 \u7279\u6b8a\u306a OpenCL* C \u95a2\u6570\u3092 DPC++ \u306b\u5909\u63db\u3057\u307e\u3057\u305f\u3002 \u307e\u305f\u3001 \u30ed\u30fc\u30ab\u30eb\u30a2\u30af\u30bb\u30b5\u30fc\u3092\u6301\u3064\u30c6\u30f3\u30d7\u30ec\u30fc\u30c8\u95a2\u6570\u3092\u4f5c\u6210\u3057\u3001 \u30d0\u30ea\u30a2\u3068\u30a2\u30c8\u30df\u30c3\u30af\u64cd\u4f5c\u3092\u5909\u63db\u3057\u307e\u3057\u305f\u3002<\/span><\/p>\n<h2><span style=\"font-family: arial, helvetica, sans-serif;\">OpenCL* \u30ab\u30fc\u30cd\u30eb\u304b\u3089\u30c7\u30fc\u30bf\u4e26\u5217 C++ \u3078\u306e\u79fb\u884c &#8211; \u30d1\u30fc\u30c8 2: <em>lqsort_kernel<\/em><\/span><\/h2>\n<p><span style=\"font-family: arial, helvetica, sans-serif;\"><em>lqsort_kernel<\/em> \u306e\u5909\u63db\u3082 <em>gqsort_kernel<\/em> \u306e\u5909\u63db\u3068\u4f3c\u3066\u3044\u307e\u3059\u3002<em>lqsort_kernel_class<\/em> \u30d5\u30a1\u30f3\u30af<\/span><span style=\"font-family: arial, helvetica, sans-serif;\">\u30bf\u30fc\u3092\u4f5c\u6210\u3057\u3066\u3001 \u30ed\u30fc\u30ab\u30eb\u30e1\u30e2\u30ea\u30fc\u914d\u5217\u3068\u5909\u6570\u3001 \u304a\u3088\u3073\u30d0\u30ea\u30a2\u3092\u5909\u63db\u3057\u307e\u3059 (\u30a2\u30c8\u30df\u30c3\u30af\u64cd\u4f5c\u306f\u3042\u308a\u307e\u305b\u3093)\u3002<em>lqsort_kernel<\/em> \u3082\u30b5\u30dd\u30fc\u30c8\u95a2\u6570\u3068\u30b5\u30dd\u30fc\u30c8\u69cb \u9020\u4f53\u3092 \u4f7f\u7528\u3057\u307e\u3059\u3002 <em>gqsort_kernel<\/em> \u3067\u4f7f\u7528\u3055\u308c\u308b<\/span><span style=\"font-family: arial, helvetica, sans-serif;\"><em>plus_prescan<\/em> \u3068 <em>median_select<\/em> \u306b\u52a0\u3048\u3066\u3001 <em>lqsort_kernel<\/em> \u306b\u306f\u3088\u308a\u8907\u96d1\u306a <em>bitonic_sort<\/em> \u3068<em>sort_threshold<\/em> \u304c\u3042\u308a\u307e\u3059\u3002 \u5909\u63db\u5f8c\u3001 \u3053\u308c\u3089\u306e\u95a2\u6570\u306f <em>lqsort_kernel_class<\/em> \u306e\u30e1\u30f3\u30d0\u30fc\u95a2\u6570\u306b\u306a\u308a\u307e\u3059\u3002 DPC++ \u3067\u306f\u53cd\u5fa9\u30aa\u30d6\u30b8\u30a7\u30af\u30c8\u304c\u5fc5\u8981\u306a\u30d0\u30ea\u30a2\u306e\u4f7f\u7528\u306b\u3088\u308a\u3001 \u3053\u308c\u3089\u306e\u95a2\u6570\u306e\u30b7\u30b0\u30cd\u30c1\u30e3\u30fc\u306f\u5909\u308f\u308a\u307e\u3059\u3002 \u3053\u308c\u3089\u306e\u95a2\u6570\u306f\u3001 \u30ed\u30fc\u30ab\u30eb\u304a\u3088\u3073\u30b0\u30ed\u30fc\u30d0\u30eb \u30fb\u30e1\u30e2\u30ea\u30fc \u30fb \u30dd\u30a4\u30f3\u30bf\u30fc\u3092\u4f7f\u7528\u3059\u308b\u305f\u3081\u3001 \u7279\u5225\u306a\u51e6\u7406\u304c\u5fc5\u8981\u3067\u3059\u3002 \u305d\u306e\u305f\u3081\u3001 OpenCL* C \u30b7\u30b0\u30cd\u30c1\u30e3\u30fc\u306f\u3001<\/span><\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-1518\" src=\"https:\/\/www.xlsoft.com\/jp\/blog\/intel\/wp-content\/uploads\/sites\/5\/2021\/11\/intel_blog28.png\" alt=\"\" width=\"1003\" height=\"70\" srcset=\"https:\/\/www.xlsoft.com\/jp\/blog\/intel\/wp-content\/uploads\/sites\/5\/2021\/11\/intel_blog28.png 1003w, https:\/\/www.xlsoft.com\/jp\/blog\/intel\/wp-content\/uploads\/sites\/5\/2021\/11\/intel_blog28-300x21.png 300w, https:\/\/www.xlsoft.com\/jp\/blog\/intel\/wp-content\/uploads\/sites\/5\/2021\/11\/intel_blog28-768x54.png 768w\" sizes=\"auto, (max-width: 1003px) 100vw, 1003px\" \/><\/p>\n<p><span style=\"font-family: arial, helvetica, sans-serif;\">\u304b\u3089\u4ee5\u4e0b\u306b\u5909\u308f\u308a\u307e\u3059\u3002<\/span><\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-1536\" src=\"https:\/\/www.xlsoft.com\/jp\/blog\/intel\/wp-content\/uploads\/sites\/5\/2021\/11\/intel_blog29.png\" alt=\"\" width=\"1000\" height=\"78\" srcset=\"https:\/\/www.xlsoft.com\/jp\/blog\/intel\/wp-content\/uploads\/sites\/5\/2021\/11\/intel_blog29.png 1000w, https:\/\/www.xlsoft.com\/jp\/blog\/intel\/wp-content\/uploads\/sites\/5\/2021\/11\/intel_blog29-300x23.png 300w, https:\/\/www.xlsoft.com\/jp\/blog\/intel\/wp-content\/uploads\/sites\/5\/2021\/11\/intel_blog29-768x60.png 768w\" sizes=\"auto, (max-width: 1000px) 100vw, 1000px\" \/><\/p>\n<p><span style=\"font-family: arial, helvetica, sans-serif;\">\u540c\u69d8\u306b\u3001<\/span><\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-1519\" src=\"https:\/\/www.xlsoft.com\/jp\/blog\/intel\/wp-content\/uploads\/sites\/5\/2021\/11\/intel_blog30.png\" alt=\"\" width=\"993\" height=\"106\" srcset=\"https:\/\/www.xlsoft.com\/jp\/blog\/intel\/wp-content\/uploads\/sites\/5\/2021\/11\/intel_blog30.png 993w, https:\/\/www.xlsoft.com\/jp\/blog\/intel\/wp-content\/uploads\/sites\/5\/2021\/11\/intel_blog30-300x32.png 300w, https:\/\/www.xlsoft.com\/jp\/blog\/intel\/wp-content\/uploads\/sites\/5\/2021\/11\/intel_blog30-768x82.png 768w\" sizes=\"auto, (max-width: 993px) 100vw, 993px\" \/><\/p>\n<p><span style=\"font-family: arial, helvetica, sans-serif;\">\u3082\u4ee5\u4e0b\u306b\u5909\u308f\u308a\u307e\u3059\u3002<\/span><\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-1537\" src=\"https:\/\/www.xlsoft.com\/jp\/blog\/intel\/wp-content\/uploads\/sites\/5\/2021\/11\/intel_blog31.png\" alt=\"\" width=\"999\" height=\"148\" srcset=\"https:\/\/www.xlsoft.com\/jp\/blog\/intel\/wp-content\/uploads\/sites\/5\/2021\/11\/intel_blog31.png 999w, https:\/\/www.xlsoft.com\/jp\/blog\/intel\/wp-content\/uploads\/sites\/5\/2021\/11\/intel_blog31-300x44.png 300w, https:\/\/www.xlsoft.com\/jp\/blog\/intel\/wp-content\/uploads\/sites\/5\/2021\/11\/intel_blog31-768x114.png 768w\" sizes=\"auto, (max-width: 999px) 100vw, 999px\" \/><\/p>\n<p><span style=\"font-family: arial, helvetica, sans-serif;\"><em>gqsort_kernel<\/em> \u3068\u540c\u69d8\u306b\u3001 \u5f8c\u3067\u8907\u6570\u306e\u30c7\u30fc\u30bf\u578b\u3092\u6271\u3048\u308b\u3088\u3046\u306b\u3001 <em>UINT_MAX<\/em> \u30de\u30af\u30ed\u3092 <em>std::numeric_ limits::max()<\/em> \u306b\u7f6e\u304d\u63db\u3048\u3066\u3053\u308c\u3089\u306e\u95a2\u6570\u3092\u5909\u63db\u3057\u307e\u3059\u3002 <em>lqsort_kernel<\/em> \u3092\u5909 \u63db\u3059\u308b\u969b\u306b\u3001 \u30ed\u30fc\u30ab\u30eb\u30e1\u30e2\u30ea\u30fc\u3078 \u306e\u30dd\u30a4\u30f3\u30bf\u30fc (<em>local uint* sn;<\/em> \u306a\u3069) \u306f <em>local_ptr&lt;&gt;<\/em> \u30aa\u30d6\u30b8\u30a7\u30af\u30c8 (<em>local_ptr sn;<\/em> \u306a\u3069) \u306b\u7f6e\u304d\u63db\u3048\u3089\u308c\u307e\u3059\u3002 \u30ed\u30fc\u30ab\u30eb\u30a2\u30af\u30bb\u30b5\u30fc\u304b\u3089 \u30ed\u30fc\u30ab\u30eb\u30dd\u30a4\u30f3\u30bf\u30fc\u3092\u53d6\u5f97\u3059\u308b\u305f\u3081\u3001 \u30a2\u30af\u30bb\u30b5\u30fc\u306e <em>get_pointer<\/em> \u30e1\u30f3\u30d0\u30fc\u95a2\u6570\u3092\u547c\u3073\u51fa\u3057\u307e\u3059\u3002<\/span><\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-1520\" src=\"https:\/\/www.xlsoft.com\/jp\/blog\/intel\/wp-content\/uploads\/sites\/5\/2021\/11\/intel_blog32.png\" alt=\"\" width=\"988\" height=\"76\" srcset=\"https:\/\/www.xlsoft.com\/jp\/blog\/intel\/wp-content\/uploads\/sites\/5\/2021\/11\/intel_blog32.png 988w, https:\/\/www.xlsoft.com\/jp\/blog\/intel\/wp-content\/uploads\/sites\/5\/2021\/11\/intel_blog32-300x23.png 300w, https:\/\/www.xlsoft.com\/jp\/blog\/intel\/wp-content\/uploads\/sites\/5\/2021\/11\/intel_blog32-768x59.png 768w\" sizes=\"auto, (max-width: 988px) 100vw, 988px\" \/><\/p>\n<p><span style=\"font-family: arial, helvetica, sans-serif;\"><em>local_ptr&lt;&gt;<\/em> \u30aa\u30d6 \u30b8\u30a7\u30af\u30c8\u3068<em> global_ptr&lt;&gt;<\/em> \u30aa \u30d6 \u30b8\u30a7 \u30af\u30c8 \u306f \u30dd\u30a4 \u30f3\u30bf\u30fc\u6f14\u7b97\u3092\u4f7f\u7528\u3059\u308b\u305f\u3081\u3001<\/span><span style=\"font-family: arial, helvetica, sans-serif;\"><em>d + d_offset<\/em> (<em>d<\/em> \u306f\u30b0\u30ed\u30fc\u30d0\u30eb\u30dd\u30a4\u30f3\u30bf\u30fc) \u306f\u6b21\u306e\u3088\u3046\u306b\u306a\u308a\u307e\u3059\u3002<\/span><\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-1538\" src=\"https:\/\/www.xlsoft.com\/jp\/blog\/intel\/wp-content\/uploads\/sites\/5\/2021\/11\/intel_blog33.png\" alt=\"\" width=\"994\" height=\"81\" srcset=\"https:\/\/www.xlsoft.com\/jp\/blog\/intel\/wp-content\/uploads\/sites\/5\/2021\/11\/intel_blog33.png 994w, https:\/\/www.xlsoft.com\/jp\/blog\/intel\/wp-content\/uploads\/sites\/5\/2021\/11\/intel_blog33-300x24.png 300w, https:\/\/www.xlsoft.com\/jp\/blog\/intel\/wp-content\/uploads\/sites\/5\/2021\/11\/intel_blog33-768x63.png 768w\" sizes=\"auto, (max-width: 994px) 100vw, 994px\" \/><\/p>\n<p><span style=\"font-family: arial, helvetica, sans-serif;\">\u30ed\u30fc\u30ab\u30eb\u30e1\u30e2\u30ea\u30fc\u5909\u6570\u306f\u3001 \u30b5\u30a4\u30ba 1 \u306e\u30a2\u30af\u30bb\u30b5\u30fc (\u3064\u307e\u308a\u3001 <em>gtsum[0]<\/em> \u306e\u3088\u3046\u306a\u30a4\u30f3\u30c7\u30c3\u30af\u30b9 0 \u306e\u914d\u5217\u30a2\u30af\u30bb\u30b9) \u3068\u3057\u3066\u5909\u63db\u3057\u307e\u3059\u3002 <em>lqsort_kernel<\/em> \u306e\u5909\u63db\u304c\u5b8c\u4e86\u3057\u305f\u3089\u3001 DPC++ \u3078\u5b8c\u5168\u306b\u79fb\u884c\u3067\u304d\u307e\u3059\u304c\u3001 \u3053\u306e\u6642\u70b9\u3067\u306f\u7b26\u53f7\u306a\u3057\u6574\u6570\u3057\u304b\u30bd\u30fc\u30c8\u3067\u304d\u307e\u305b\u3093\u3002 \u3057\u304b\u3057\u3001 \u30b5\u30dd\u30fc\u30c8\u69cb\u9020\u4f53\u3068\u30b5\u30dd\u30fc\u30c8\u95a2\u6570\u3001\u304a\u3088\u3073 2 \u3064\u306e\u30e1\u30a4\u30f3\u30ab\u30fc\u30cd\u30eb\u306e\u30d5\u30a1\u30f3\u30af\u30bf\u30fc\u30fb\u30af\u30e9\u30b9\u306f\u3059\u3067\u306b\u30c6\u30f3\u30d7\u30ec\u30fc\u30c8\u5316\u3055\u308c\u3066\u3044\u308b\u305f\u3081\u3001 \u8907\u6570\u306e\u30c7\u30fc\u30bf\u578b\u306b\u5bfe\u5fdc\u3059\u308b\u306e\u306f\u5bb9\u6613\u3067\u3059\u3002<\/span><\/p>\n<h2><span style=\"font-family: arial, helvetica, sans-serif;\">\u30c7\u30fc\u30bf\u4e26\u5217 C++ \u306e\u5229\u70b9 : \u30c6\u30f3\u30d7\u30ec\u30fc\u30c8\u3068\u6ce8\u610f\u4e8b\u9805<\/span><\/h2>\n<p><span style=\"font-family: arial, helvetica, sans-serif;\">DPC++ \u306e\u771f\u306e\u529b\u306f\u3001 C++ \u30c6\u30f3\u30d7\u30ec\u30fc\u30c8\u3092\u4f7f\u7528\u3057\u3066\u6c4e\u7528\u30b3\u30fc\u30c9\u3092\u8a18\u8ff0\u3067\u304d\u308b\u3053\u3068\u3067\u3059\u3002 \u3053\u306e\u30bb\u30af\u30b7\u30e7\u30f3\u3067\u306f\u3001 GPU-Quicksort \u3092\u6c4e\u7528\u5316\u3057\u3066\u3001 \u7b26\u53f7\u306a\u3057\u6574\u6570\u3060\u3051\u3067\u306a\u304f\u3001 \u5358\u7cbe\u5ea6\u3084\u500d\u7cbe\u5ea6\u306e\u6d6e\u52d5\u5c0f\u6570\u70b9\u306a\u3069\u3001 \u307b\u304b\u306e\u57fa\u672c \u30c7\u30fc\u30bf\u578b\u3082\u30bd\u30fc\u30c8\u3067\u304d\u308b\u3088\u3046\u306b\u3057\u307e\u3059\u3002 \u524d\u8ff0\u306e <em>UINT_MAX<\/em> \u304b<em>std::numeric_limits::max()<\/em> \u3078\u306e \u5909\u66f4\u306b\u52a0\u3048\u3066\u3001<em>median_select<\/em> \u95a2\u6570\u3092\u5909\u66f4\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002 <em>cl::sycl::select<\/em> \u306f\u3001 \u7b2c 1 \u5f15\u6570\u3068 \u7b2c 2 \u5f15\u6570\u306e\u578b\u306e\u30b5\u30a4\u30ba\u306b\u5fdc\u3058\u3066\u3001 \u7570\u306a\u308b\u7b2c 3 \u5f15\u6570\u3092\u53d7\u3051\u53d6\u308b\u305f\u3081\u3001 <em>select_type_selector<\/em> \u578b\u306e\u7279\u5fb4 \u30af\u30e9\u30b9\u3092\u8ffd\u52a0\u3057\u307e\u3059\u3002<\/span><\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-1521\" src=\"https:\/\/www.xlsoft.com\/jp\/blog\/intel\/wp-content\/uploads\/sites\/5\/2021\/11\/intel_blog34.png\" alt=\"\" width=\"997\" height=\"400\" srcset=\"https:\/\/www.xlsoft.com\/jp\/blog\/intel\/wp-content\/uploads\/sites\/5\/2021\/11\/intel_blog34.png 997w, https:\/\/www.xlsoft.com\/jp\/blog\/intel\/wp-content\/uploads\/sites\/5\/2021\/11\/intel_blog34-300x120.png 300w, https:\/\/www.xlsoft.com\/jp\/blog\/intel\/wp-content\/uploads\/sites\/5\/2021\/11\/intel_blog34-768x308.png 768w\" sizes=\"auto, (max-width: 997px) 100vw, 997px\" \/><\/p>\n<p><span style=\"font-family: arial, helvetica, sans-serif;\">\u3053\u308c\u306b\u3088\u308a\u3001 \u30d6\u30fc\u30eb \u5024\u306e\u6bd4\u8f03\u3092 <em>cl::sycl::select<\/em> \u3067\u5fc5\u8981\u306a\u9069\u5207\u306a\u578b\u306b\u5909\u63db\u3059\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002<\/span><br \/>\n<span style=\"font-family: arial, helvetica, sans-serif;\"><em>median_select<\/em> \u306f\u6b21\u306e\u3088\u3046\u306b\u306a\u308a\u307e\u3059\u3002<\/span><\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-1539\" src=\"https:\/\/www.xlsoft.com\/jp\/blog\/intel\/wp-content\/uploads\/sites\/5\/2021\/11\/intel_blog35.png\" alt=\"\" width=\"1002\" height=\"414\" srcset=\"https:\/\/www.xlsoft.com\/jp\/blog\/intel\/wp-content\/uploads\/sites\/5\/2021\/11\/intel_blog35.png 1002w, https:\/\/www.xlsoft.com\/jp\/blog\/intel\/wp-content\/uploads\/sites\/5\/2021\/11\/intel_blog35-300x124.png 300w, https:\/\/www.xlsoft.com\/jp\/blog\/intel\/wp-content\/uploads\/sites\/5\/2021\/11\/intel_blog35-768x317.png 768w\" sizes=\"auto, (max-width: 1002px) 100vw, 1002px\" \/><\/p>\n<p><span style=\"font-family: arial, helvetica, sans-serif;\">\u8ffd\u52a0\u306e\u578b\u306b\u5bfe\u5fdc\u3059\u308b\u306b\u306f\u3001<em> select_type_selector<\/em> \u3092\u7de8\u96c6\u3057\u307e\u3059\u3002 \u3053\u308c\u3067\u3001 GPUQSort \u306f GPU \u3067\u5358\u7cbe<\/span><br \/>\n<span style=\"font-family: arial, helvetica, sans-serif;\">\u5ea6\u3068\u500d\u7cbe\u5ea6\u306e\u6d6e\u52d5\u5c0f\u6570\u70b9\u3082\u30bd\u30fc\u30c8\u3067\u304d\u308b\u3088\u3046\u306b\u306a\u308a\u307e\u3057\u305f\u3002<\/span><\/p>\n<h2><span style=\"font-family: arial, helvetica, sans-serif;\">Windows* \u3068 RHEL \u3078\u306e\u79fb\u690d<\/span><\/h2>\n<p><span style=\"font-family: arial, helvetica, sans-serif;\">DPC++ \u306e\u79fb\u690d\u6027\u3092\u5b9f\u8a3c\u3059\u308b\u305f\u3081\u3001 Windows* \u3068 RHEL \u3078\u30b3\u30fc\u30c9\u3092\u79fb\u690d\u3057\u307e\u3059\u3002 RHEL \u3078\u306e\u79fb\u690d\u306f\u975e\u5e38\u306b\u7c21\u5358\u3067\u3059\u3002 \u30ea\u30f3\u30af\u6642\u306b\u30a4\u30f3\u30c6\u30eb\u306e imf \u6570\u5b66\u30e9\u30a4\u30d6\u30e9\u30ea\u30fc\u3092\u8ffd\u52a0\u3059\u308b\u3060\u3051\u3067\u3059\u3002 Windows* \u3078\u306e\u79fb\u690d\u306b\u306f\u3001 \u3082\u3046\u5c11\u3057\u624b\u9593\u304c\u304b\u304b\u308a\u307e\u3059\u3002 \u30b3\u30f3\u30d1\u30a4\u30eb\u6642\u306b\u6b21\u306e\u5b9a\u7fa9\u3092\u8ffd\u52a0\u3057\u307e\u3059\u3002<\/span><\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-1522\" src=\"https:\/\/www.xlsoft.com\/jp\/blog\/intel\/wp-content\/uploads\/sites\/5\/2021\/11\/intel_blog36.png\" alt=\"\" width=\"993\" height=\"76\" srcset=\"https:\/\/www.xlsoft.com\/jp\/blog\/intel\/wp-content\/uploads\/sites\/5\/2021\/11\/intel_blog36.png 993w, https:\/\/www.xlsoft.com\/jp\/blog\/intel\/wp-content\/uploads\/sites\/5\/2021\/11\/intel_blog36-300x23.png 300w, https:\/\/www.xlsoft.com\/jp\/blog\/intel\/wp-content\/uploads\/sites\/5\/2021\/11\/intel_blog36-768x59.png 768w\" sizes=\"auto, (max-width: 993px) 100vw, 993px\" \/><\/p>\n<p><span style=\"font-family: arial, helvetica, sans-serif;\">\u500d\u7cbe\u5ea6\u306e <em>cl::sycl::select<\/em> \u306f \u7b2c 3 \u5f15\u6570\u306b <em>unsigned long long<\/em> \u578b (Linux* \u3067\u306f <em>unsigned<\/em><\/span><br \/>\n<span style=\"font-family: arial, helvetica, sans-serif;\"><em>long<\/em> \u578b) \u3092\u5fc5\u8981\u3068\u3059\u308b\u3053\u3068\u304b\u3089\u3001 \u500d\u7cbe\u5ea6\u306e <em>select_type_selector<\/em> \u3092\u6b21\u306e\u3088\u3046\u306b\u5909\u66f4\u3057\u307e\u3059\u3002<\/span><\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-1540\" src=\"https:\/\/www.xlsoft.com\/jp\/blog\/intel\/wp-content\/uploads\/sites\/5\/2021\/11\/intel_blog37.png\" alt=\"\" width=\"988\" height=\"217\" srcset=\"https:\/\/www.xlsoft.com\/jp\/blog\/intel\/wp-content\/uploads\/sites\/5\/2021\/11\/intel_blog37.png 988w, https:\/\/www.xlsoft.com\/jp\/blog\/intel\/wp-content\/uploads\/sites\/5\/2021\/11\/intel_blog37-300x66.png 300w, https:\/\/www.xlsoft.com\/jp\/blog\/intel\/wp-content\/uploads\/sites\/5\/2021\/11\/intel_blog37-768x169.png 768w\" sizes=\"auto, (max-width: 988px) 100vw, 988px\" \/><\/p>\n<p><span style=\"font-family: arial, helvetica, sans-serif;\">Windows* \u3067\u306f\u3001 \u30de\u30af\u30ed\u5b9a\u7fa9\u304c <em>std::max<\/em> \u304a\u3088\u3073 <em>std::min<\/em> \u3068\u7af6\u5408\u3057\u306a\u3044\u3088\u3046\u306b\u3001 <em>max<\/em> \u304a\u3088\u3073 <em>min<\/em> \u3092\u672a\u5b9a\u7fa9\u306b\u3057\u307e\u3059\u3002 \u3053\u308c\u3067\u3001 Windows* \u304a\u3088\u3073 RHEL \u3067\u30a4\u30f3\u30c6\u30eb\u306e GPU \u3092\u4f7f\u7528\u3057\u3066\u3001 \u7b26\u53f7\u306a\u3057\u6574\u6570\u3001 \u5358\u7cbe\u5ea6\u6d6e\u52d5\u5c0f\u6570\u70b9\u3001 \u500d\u7cbe\u5ea6\u6d6e\u52d5\u5c0f\u6570\u70b9\u3092\u30bd\u30fc\u30c8\u3067\u304d\u307e\u3059\u3002<\/span><\/p>\n<h2><span style=\"font-family: arial, helvetica, sans-serif;\">\u4eca\u3059\u3050\u5b9f\u8df5\u3057\u3066\u307f\u307e\u3057\u3087\u3046<\/span><\/h2>\n<p><span style=\"font-family: arial, helvetica, sans-serif;\">\u3053\u306e\u8a18\u4e8b\u3067\u306f\u3001 GPU-Quicksort \u3092\u30aa\u30ea\u30b8\u30ca\u30eb\u306e OpenCL* 1.2 \u304b\u3089 DPC++ \u3078\u79fb\u884c\u3059\u308b\u65b9\u6cd5\u3092\u30b9\u30c6\u30c3\u30d7\u3054\u3068\u306b\u8aac\u660e\u3057\u307e\u3057\u305f\u3002 \u30b9\u30c6\u30c3\u30d7\u3054\u3068\u306b\u3001 \u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u306e\u52d5\u4f5c\u3092\u78ba\u8a8d\u3067\u304d\u308b\u3053\u3068\u304c\u91cd\u8981\u3067\u3059\u3002 DPC++ \u3092\u30ef\u30fc\u30af\u30d5\u30ed\u30fc\u306b\u5c0e\u5165\u3059\u308b\u3053\u3068\u3092\u691c\u8a0e\u3057\u3066\u3044\u308b\u5834\u5408\u306f\u3001 \u5c0f\u898f\u6a21\u304b\u3089\u521d\u3081\u3066\u3001 \u5f90\u3005\u306b\u8ffd\u52a0\u3057\u3066\u3044\u304f\u304b\u3001 \u6642\u9593\u3092\u304b\u3051\u3066\u5b8c\u5168\u306b\u79fb\u884c\u3057\u3066\u304f\u3060\u3055\u3044\u3002 \u5bb9\u6613\u306b OpenCL* \u3068 DPC++ \u3092\u30b3\u30fc\u30c9\u30d9\u30fc\u30b9\u306b\u6df7\u5728\u3055\u305b\u3001 \u4e21\u65b9\u306e\u5229\u70b9\u3092\u5f97\u3089\u308c\u307e\u3059\u3002 \u5f93\u6765\u306e OpenCL* \u30ab\u30fc\u30cd\u30eb\u3092\u305d\u306e\u307e\u307e\u4f7f\u7528\u3057\u3064\u3064\u3001 DPC++ \u3067\u958b\u767a\u3059\u308b\u65b0\u3057\u3044\u30b3\u30fc\u30c9\u3067\u306f C++ \u30c6\u30f3\u30d7\u30ec\u30fc\u30c8\u3001 \u30af\u30e9\u30b9\u3001\u30e9\u30e0\u30c0\u3092\u6d3b\u7528\u3067\u304d\u307e\u3059\u3002 Windows* \u3084\u5404\u7a2e Linux* \u30c7\u30a3\u30b9\u30c8\u30ea\u30d3\u30e5\u30fc\u30b7\u30e7\u30f3\u3078\u306e\u30b3\u30fc\u30c9\u306e\u79fb\u690d\u3082\u5bb9\u6613\u3067\u3001 \u958b\u767a\u30d7\u30e9\u30c3\u30c8\u30d5\u30a9\u30fc\u30e0\u3092\u9078\u629e\u3067\u304d\u307e\u3059\u3002 \u3055\u3089\u306b\u3001 \u5f37\u529b\u306a\u30a4\u30f3\u30c6\u30eb\u306e\u30c4\u30fc\u30eb\u304c DPC++ \u30d7\u30ed\u30b0\u30e9\u30e0\u306e\u30c7\u30d0\u30c3\u30b0\u3001 \u30d7\u30ed\u30d5\u30a1\u30a4\u30eb\u3001 \u89e3\u6790\u3092\u652f\u63f4\u3057\u307e\u3059\u3002<\/span><\/p>\n<hr \/>\n<p><span style=\"font-family: arial, helvetica, sans-serif;\">\u672c\u8a18\u4e8b\u306f\u300cParallel Universe 40\u53f7\u300d\u306e\u300cGPU-Quicksort\u300d\u3088\u308a\u8ee2\u8f09\u3057\u305f\u3082\u306e\u3067\u3059\u3002\u305d\u306e\u4ed6\u300cParallel Universe\u300d\u306e\u8a18\u4e8b\u306f<a href=\"https:\/\/www.xlsoft.com\/jp\/products\/intel\/tech\/documents.html?tab=2&amp;s=blog\" target=\"_blank\" rel=\"noopener\">\u3053\u3061\u3089<\/a>\u304b\u3089\u3054\u89a7\u3044\u305f\u3060\u3051\u307e\u3059\u3002<\/span><\/p>\n<hr \/>\n","protected":false},"excerpt":{"rendered":"<div class=\"mh-excerpt\"><p>\u30c7\u30fc\u30bf\u4e26\u5217 C++ (DPC++) \u306f\u3001 Khro <a class=\"mh-excerpt-more\" href=\"https:\/\/www.xlsoft.com\/jp\/blog\/intel\/2021\/11\/25\/migrate_to_c_from_opencl\/\" title=\"GPU-Quicksort \uff5eOpenCL* \u304b\u3089\u30c7\u30fc\u30bf\u4e26\u5217 C++ \u3078\u306e\u79fb\u884c\uff5e\">[&#8230;]<\/a><\/p>\n<\/div>","protected":false},"author":1,"featured_media":1524,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1],"tags":[],"class_list":["post-1493","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-1"],"aioseo_notices":[],"_links":{"self":[{"href":"https:\/\/www.xlsoft.com\/jp\/blog\/intel\/wp-json\/wp\/v2\/posts\/1493","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.xlsoft.com\/jp\/blog\/intel\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.xlsoft.com\/jp\/blog\/intel\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.xlsoft.com\/jp\/blog\/intel\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.xlsoft.com\/jp\/blog\/intel\/wp-json\/wp\/v2\/comments?post=1493"}],"version-history":[{"count":7,"href":"https:\/\/www.xlsoft.com\/jp\/blog\/intel\/wp-json\/wp\/v2\/posts\/1493\/revisions"}],"predecessor-version":[{"id":1854,"href":"https:\/\/www.xlsoft.com\/jp\/blog\/intel\/wp-json\/wp\/v2\/posts\/1493\/revisions\/1854"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.xlsoft.com\/jp\/blog\/intel\/wp-json\/wp\/v2\/media\/1524"}],"wp:attachment":[{"href":"https:\/\/www.xlsoft.com\/jp\/blog\/intel\/wp-json\/wp\/v2\/media?parent=1493"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.xlsoft.com\/jp\/blog\/intel\/wp-json\/wp\/v2\/categories?post=1493"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.xlsoft.com\/jp\/blog\/intel\/wp-json\/wp\/v2\/tags?post=1493"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}