カーネルのソースプログラムの作り方が分かりません。

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
kuro
記事: 47
登録日時: 14年前

カーネルのソースプログラムの作り方が分かりません。

#1

投稿記事 by kuro » 14年前

Visual Studio C+ 2008 Express EditionでOpenCLのプログラムを作っているのですが、カーネルのソースプログラム、〇〇.cl というファイルの作り方が分かりません。
どなたか教えては頂けないでしょうか?

アバター
softya(ソフト屋)
副管理人
記事: 11677
登録日時: 15年前
住所: 東海地方
連絡を取る:

Re: カーネルのソースプログラムの作り方が分かりません。

#2

投稿記事 by softya(ソフト屋) » 14年前

今まで聞いていなかったのですがC言語に関しては、どのぐらいの知識がありますか?
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。

kuro
記事: 47
登録日時: 14年前

Re: カーネルのソースプログラムの作り方が分かりません。

#3

投稿記事 by kuro » 14年前

かなり浅いです。ほとんど知識がありません。

アバター
softya(ソフト屋)
副管理人
記事: 11677
登録日時: 15年前
住所: 東海地方
連絡を取る:

Re: カーネルのソースプログラムの作り方が分かりません。

#4

投稿記事 by softya(ソフト屋) » 14年前

まずC言語を勉強しないとOpenCLのプログラムを書くことは難しいです。
本体側のプログラムは当然ながらC言語ですので入出力のためにはC言語でプログラムが組めないといけません。
OpenCLのclもC言語の文法で書きますし、更に並行実行やGPUの色々な知識がないと使いこなすことが出来ません。すごく勉強しないと満足に性能がでない可能性が高いです。
あとOpenCLの.clの基本的なルールについてはお持ちの本に書かれていると思います。たぶんC言語を知っている前提で。

たぶんkuroさんは、OpenCLで高速に計算させるのが目的だと思いますが、そのためにはまずC言語の基本理解が必要となります。
これは勉強なさってくださいとしか言えません。必要な本やC言語の勉強で分からないとは回答しますので遠慮せずに聞いて下さい。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。

kuro
記事: 47
登録日時: 14年前

Re: カーネルのソースプログラムの作り方が分かりません。

#5

投稿記事 by kuro » 14年前

ご指摘、ありがとうございます。
softya(ソフト屋)さんのおっしゃるとおり、まだまだ知識が足りていないのが現状です。
もっとC言語、並列実行やGPUについて知識を高めなければいけないと痛感いたしました。
より一層、勉強しようと思います。
softya(ソフト屋) さんが書きました:OpenCLの.clの基本的なルールについてはお持ちの本に書かれていると思います。
私の持っている本では、
「カーネルプログラムの拡張子が「cl」となっているが、これは慣例である。」
と書かれていました。
これは、ソースファイル>追加>新しい項目>C++ ソース コードを含むファイルを作成、より、ファイル名を〇〇.cl とする。
と解釈したのですがいかがでしょうか?

アバター
softya(ソフト屋)
副管理人
記事: 11677
登録日時: 15年前
住所: 東海地方
連絡を取る:

Re: カーネルのソースプログラムの作り方が分かりません。

#6

投稿記事 by softya(ソフト屋) » 14年前

kuro さんが書きました:これは、ソースファイル>追加>新しい項目>C++ ソース コードを含むファイルを作成、より、ファイル名を〇〇.cl とする。
それで良いと思います。
ここに追加しただけは実行されないのでプログラムで実行する様に記述する必要があります。
問題となっていたcalc.clが見つからないエラーの件を解決しないといけません。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。

niheran

Re: カーネルのソースプログラムの作り方が分かりません。

#7

投稿記事 by niheran » 14年前

そのcalc.clというファイルを
[あなたが今制作しているプロジェクト名].sln
のファイルと同じディレクトリに置くのはいかがでしょうか?

コード:

void preloadProgram(const char* filename)
{
    cl_int status;
    char *source = 0;

    // ファイルからプログラムを読み込む
    try {
        source = loadProgramSource(filename);
    } catch (MyError err) {
        fprintf(stderr, "Error: %s\n", err.cstr());
        throw MyError("failed to load compute program from file.", __FUNCTION__);
    }

int main()
{
preloadProgram("calc.cl");  // カーネルプログラムの読み込み
//略//
}

niheran

Re: カーネルのソースプログラムの作り方が分かりません。

#8

投稿記事 by niheran » 14年前

上のは13行目の}が抜けていました

後、" *.cl "ファイルを何個も読み込もうとするとエラーがでるので、カーネル関数は一つのclファイルにまとめて書かないといけないようです

kuro
記事: 47
登録日時: 14年前

Re: カーネルのソースプログラムの作り方が分かりません。

#9

投稿記事 by kuro » 14年前

無事、カーネルのソースファイル自体の作り方が分かりました。
ありがとうございました。

閉鎖

“C言語何でも質問掲示板” へ戻る