7.1. HelloWorldプログラムの環境設定

OpenCL 1.2に対応した最新のJOCLバージョンは0.1.9なので、これをpom.xmlに記述します。commons-langも何かと便利なので依存性として記述します。

pom.xml. 

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  <modelVersion>4.0.0</modelVersion>
  <groupId>com.book.jocl</groupId>
  <artifactId>A-JOCLBook</artifactId>
  <version>0.0.1-SNAPSHOT</version>

  <dependencies>
    <dependency>
        <groupId>org.jocl</groupId>
        <artifactId>jocl</artifactId>
        <version>0.1.9</version>
    </dependency>
    <dependency>
           <groupId>commons-lang</groupId>
        <artifactId>commons-lang</artifactId>
        <version>2.6</version>
    </dependency>
  </dependencies>

</project>

OpenCL 2.0の場合は以下のように依存性に2.0.0を指定します。

<dependency>
    <groupId>org.jocl</groupId>
    <artifactId>jocl</artifactId>
    <version>2.0.0</version>
</dependency>

以下の項目では、2つのHelloWorldプログラムを読者に作成頂くことを想定します。

一つ目はデータ並列プログラミングを実装したMultiplicationTestクラスです。

二つ目はタスク並列プログラミングを実装したTaskTestクラスとなります。

「.cl」拡張子のファイルは、OpenCL-C言語(C99準拠)で記述します。

そのほかにpom.xmlをルートフォルダに配置します。

以下のディレクトリ構造になっていることを確認してください。

図:ディレクトリー構造. 

Project
├── pom.xml
├── resources
├── src
│   ├── main
│   │   ├── java
│   │   │   └── com
│   │   │       └── book
│   │   │           └── jocl
│   │   │               ├── data //(1)
│   │   │               │   ├── MultiplicationTest.java
│   │   │               │   └── mult.cl
│   │   │               └── task //(2)
│   │   │                   ├── TaskTest.java
│   │   │                   └── basic_helloworld.cl
│   │   └── resources
│   └── test
│       └── java
└── target
    └── classes
        └── com
            └── book
                └── jocl
                    ├── data
                    │   ├── MultiplicationTest.class
                    │   └── mult.cl
                    └── task
                        ├── TaskTest.class
                        └── basic_helloworld.cl

(1)

データ並列プログラミングモデルのプロジェクトとして使います。

(2)

タスク並列プログラミングモデルのプロジェクトとして使います。

Copyright 2018-2019, by Masaki Komatsu