質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.46%
Windows

Windowsは、マイクロソフト社が開発したオペレーティングシステムです。当初は、MS-DOSに変わるOSとして開発されました。 GUIを採用し、主にインテル系のCPUを搭載したコンピューターで動作します。Windows系OSのシェアは、90%を超えるといわれています。 パソコン用以外に、POSシステムやスマートフォンなどの携帯端末用、サーバ用のOSもあります。

Ubuntu

Ubuntuは、Debian GNU/Linuxを基盤としたフリーのオペレーティングシステムです。

ビルド

ソースコードを単体で実行可能なソフトウェアへ変換する過程をビルド(build)と呼びます

VirtualBox

VirtualBoxは、現在米オラクル社が開発している、 x86仮想化ソフトウェア・パッケージの一つです。

C++

C++はC言語をもとにしてつくられた最もよく使われるマルチパラダイムプログラミング言語の1つです。オブジェクト指向、ジェネリック、命令型など広く対応しており、多目的に使用されています。

Q&A

0回答

1059閲覧

SYCLサンプルコードを実行できない

RN24

総合スコア0

Windows

Windowsは、マイクロソフト社が開発したオペレーティングシステムです。当初は、MS-DOSに変わるOSとして開発されました。 GUIを採用し、主にインテル系のCPUを搭載したコンピューターで動作します。Windows系OSのシェアは、90%を超えるといわれています。 パソコン用以外に、POSシステムやスマートフォンなどの携帯端末用、サーバ用のOSもあります。

Ubuntu

Ubuntuは、Debian GNU/Linuxを基盤としたフリーのオペレーティングシステムです。

ビルド

ソースコードを単体で実行可能なソフトウェアへ変換する過程をビルド(build)と呼びます

VirtualBox

VirtualBoxは、現在米オラクル社が開発している、 x86仮想化ソフトウェア・パッケージの一つです。

C++

C++はC言語をもとにしてつくられた最もよく使われるマルチパラダイムプログラミング言語の1つです。オブジェクト指向、ジェネリック、命令型など広く対応しており、多目的に使用されています。

0グッド

0クリップ

投稿2020/05/03 14:40

前提・実現したいこと

https://tech.io/playgrounds/48226/introduction-to-sycl/hello-worldにあるサンプルコードを実行し環境構築が完了したことを確認したい。】

Surfacelaptop3 13インチに
VirtualBoxを入れ
Ubuntu18.04を入れ
POCLのOpenCLを入れ
ComputeCppのSYCL環境を構築しようとしています。

https://developer.codeplay.com/products/computecpp/ce/guides/getting-started#bottom
のチュートリアルを参考に環境構築を行いました。

https://tech.io/playgrounds/48226/introduction-to-sycl/hello-world
にあるサンプルコードを試しにビルドしてみたところどうやらビルドできたようですが
実行してみると後述するエラーが出て実行できません。実行しSYCLの環境構築が完了したことを確認したい。

発生している問題・エラーメッセージ

virtualbox: /home/tokyo/ComputeCpp-CE-1.3.0-Ubuntu-16.04-x86_64/bin/compute++ -std=c++11 -I/home/tokyo/ComputeCpp-CE-1.3.0-Ubuntu-16.04-x86_64/include/ -L/home/tokyo/ComputeCpp-CE-1.3.0-Ubuntu-16.04-x86_64/lib -lComputeCpp -I/home/tokyo/computecpp-sdk-master/include -L/home/tokyo/pocl-1.5/build/lib/CL -lpocl hello_world.cpp -o hello_world virtualbox:~/SYCL sample code$ ./hello_world Running on pthread-Intel(R) Core(TM) i5-1035G7 CPU @ 1.20GHz terminate called after throwing an instance of 'cl::sycl::invalid_object_error' Aborted (core dumped)

該当のサンプルコード

C++

1#include <iostream> 2#include <CL/sycl.hpp> 3 4class vector_addition; 5 6int main(int, char**) { 7 cl::sycl::float4 a = { 1.0, 2.0, 3.0, 4.0 }; 8 cl::sycl::float4 b = { 4.0, 3.0, 2.0, 1.0 }; 9 cl::sycl::float4 c = { 0.0, 0.0, 0.0, 0.0 }; 10 11 cl::sycl::default_selector device_selector; 12 13 cl::sycl::queue queue(device_selector); 14 std::cout << "Running on " 15 << queue.get_device().get_info<cl::sycl::info::device::name>() 16 << "\n"; 17 { 18 cl::sycl::buffer<cl::sycl::float4, 1> a_sycl(&a, cl::sycl::range<1>(1)); 19 cl::sycl::buffer<cl::sycl::float4, 1> b_sycl(&b, cl::sycl::range<1>(1)); 20 cl::sycl::buffer<cl::sycl::float4, 1> c_sycl(&c, cl::sycl::range<1>(1)); 21 22 queue.submit([&] (cl::sycl::handler& cgh) { 23 auto a_acc = a_sycl.get_access<cl::sycl::access::mode::read>(cgh); 24 auto b_acc = b_sycl.get_access<cl::sycl::access::mode::read>(cgh); 25 auto c_acc = c_sycl.get_access<cl::sycl::access::mode::discard_write>(cgh); 26 27 cgh.single_task<class vector_addition>([=] () { 28 c_acc[0] = a_acc[0] + b_acc[0]; 29 }); 30 }); 31 } 32 std::cout << " A { " << a.x() << ", " << a.y() << ", " << a.z() << ", " << a.w() << " }\n" 33 << "+ B { " << b.x() << ", " << b.y() << ", " << b.z() << ", " << b.w() << " }\n" 34 << "------------------\n" 35 << "= C { " << c.x() << ", " << c.y() << ", " << c.z() << ", " << c.w() << " }" 36 << std::endl; 37 38 return 0; 39}

試したこと

https://proc-cpuinfo.fixstars.com/2017/08/sycl/
に記載があるどちらでも動くサンプルコードを同様にビルド、実行したところちゃんと動いているように見えます。

また、下記サイトに
If the size does not match, a cl::sycl::invalid_object_error exception will be thrown.というような記述がありました。
https://codeplay.com/portal/03-09-18-buffer-reinterpret-viewing-data-from-a-different-perspective

またこのSYCLのチュートリアルサイトのSetup Device Storageの欄にも
The size argument is a range object, which has to have the same number of dimensions as the buffer and is initialized with the number of elements in each dimension.
と記載がありました。
https://tech.io/playgrounds/48226/introduction-to-sycl/hello-world

このあたりが関係するのではと考えましたがよくわかりません。

//上記『どちらでも動くサンプルコード』をビルドしたコマンドと実行結果 tokyo@ryota-virtualbox:~/SYCL sample code$ /home/tokyo/ComputeCpp-CE-1.3.0-Ubuntu-16.04-x86_64/bin/compute++ -std=c++11 -I/home/tokyo/ComputeCpp-CE-1.3.0-Ubuntu-16.04-x86_64/include/ -L/home/tokyo/ComputeCpp-CE-1.3.0-Ubuntu-16.04-x86_64/lib -lComputeCpp -I/home/tokyo/computecpp-sdk-master/include -L/home/tokyo/pocl-1.5/build/lib/CL -lpocl whichever.cpp -o whichever tokyo@ryota-virtualbox:~/SYCL sample code$ ls hello_world hello_world.cpp whichever whichever.cpp tokyo@ryota-virtualbox:~/SYCL sample code$ ./whichever 0 1 2 3 //省略 98 99

補足情報(FW/ツールのバージョンなど)

//clinfoの結果 tokyo@ryota-virtualbox:~/SYCL sample code$ clinfo Number of platforms                               1   Platform Name                                   Portable Computing Language   Platform Vendor                                 The pocl project   Platform Version                                OpenCL 1.2 pocl 1.5, RelWithDebInfo, LLVM 6.0.0, RELOC, SPIR, SLEEF, POCL_DEBUG   Platform Profile                                FULL_PROFILE   Platform Extensions                             cl_khr_icd   Platform Extensions function suffix             POCL   Platform Name                                   Portable Computing Language Number of devices                                 1   Device Name                                     pthread-Intel(R) Core(TM) i5-1035G7 CPU @ 1.20GHz   Device Vendor                                   GenuineIntel   Device Vendor ID                                0x6c636f70   Device Version                                  OpenCL 1.2 pocl HSTR: pthread-x86_64-pc-linux-gnu-skylake   Driver Version                                  1.5   Device OpenCL C Version                         OpenCL C 1.2 pocl   Device Type                                     CPU   Device Profile                                  FULL_PROFILE   Device Available                                Yes   Compiler Available                              Yes   Linker Available                                Yes   Max compute units                               1   Max clock frequency                             1497MHz   Device Partition                                (core)     Max number of sub-devices                     1     Supported partition types                     equally, by counts   Max work item dimensions                        3   Max work item sizes                             4096x4096x4096   Max work group size                             4096   Preferred work group size multiple              8 //以下文字数制限のため省略

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだ回答がついていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.46%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問