Visual Studio C+ 2008 Express EditionでOpenCLのプログラムを作っているのですが、カーネルのソースプログラム、〇〇.cl というファイルの作り方が分かりません。
どなたか教えては頂けないでしょうか?
カーネルのソースプログラムの作り方が分かりません。
- softya(ソフト屋)
- 副管理人
- 記事: 11677
- 登録日時: 15年前
- 住所: 東海地方
- 連絡を取る:
Re: カーネルのソースプログラムの作り方が分かりません。
今まで聞いていなかったのですがC言語に関しては、どのぐらいの知識がありますか?
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。
- softya(ソフト屋)
- 副管理人
- 記事: 11677
- 登録日時: 15年前
- 住所: 東海地方
- 連絡を取る:
Re: カーネルのソースプログラムの作り方が分かりません。
まずC言語を勉強しないとOpenCLのプログラムを書くことは難しいです。
本体側のプログラムは当然ながらC言語ですので入出力のためにはC言語でプログラムが組めないといけません。
OpenCLのclもC言語の文法で書きますし、更に並行実行やGPUの色々な知識がないと使いこなすことが出来ません。すごく勉強しないと満足に性能がでない可能性が高いです。
あとOpenCLの.clの基本的なルールについてはお持ちの本に書かれていると思います。たぶんC言語を知っている前提で。
たぶんkuroさんは、OpenCLで高速に計算させるのが目的だと思いますが、そのためにはまずC言語の基本理解が必要となります。
これは勉強なさってくださいとしか言えません。必要な本やC言語の勉強で分からないとは回答しますので遠慮せずに聞いて下さい。
本体側のプログラムは当然ながらC言語ですので入出力のためにはC言語でプログラムが組めないといけません。
OpenCLのclもC言語の文法で書きますし、更に並行実行やGPUの色々な知識がないと使いこなすことが出来ません。すごく勉強しないと満足に性能がでない可能性が高いです。
あとOpenCLの.clの基本的なルールについてはお持ちの本に書かれていると思います。たぶんC言語を知っている前提で。
たぶんkuroさんは、OpenCLで高速に計算させるのが目的だと思いますが、そのためにはまずC言語の基本理解が必要となります。
これは勉強なさってくださいとしか言えません。必要な本やC言語の勉強で分からないとは回答しますので遠慮せずに聞いて下さい。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。
Re: カーネルのソースプログラムの作り方が分かりません。
ご指摘、ありがとうございます。
softya(ソフト屋)さんのおっしゃるとおり、まだまだ知識が足りていないのが現状です。
もっとC言語、並列実行やGPUについて知識を高めなければいけないと痛感いたしました。
より一層、勉強しようと思います。
「カーネルプログラムの拡張子が「cl」となっているが、これは慣例である。」
と書かれていました。
これは、ソースファイル>追加>新しい項目>C++ ソース コードを含むファイルを作成、より、ファイル名を〇〇.cl とする。
と解釈したのですがいかがでしょうか?
softya(ソフト屋)さんのおっしゃるとおり、まだまだ知識が足りていないのが現状です。
もっとC言語、並列実行やGPUについて知識を高めなければいけないと痛感いたしました。
より一層、勉強しようと思います。
私の持っている本では、softya(ソフト屋) さんが書きました:OpenCLの.clの基本的なルールについてはお持ちの本に書かれていると思います。
「カーネルプログラムの拡張子が「cl」となっているが、これは慣例である。」
と書かれていました。
これは、ソースファイル>追加>新しい項目>C++ ソース コードを含むファイルを作成、より、ファイル名を〇〇.cl とする。
と解釈したのですがいかがでしょうか?
- softya(ソフト屋)
- 副管理人
- 記事: 11677
- 登録日時: 15年前
- 住所: 東海地方
- 連絡を取る:
Re: カーネルのソースプログラムの作り方が分かりません。
それで良いと思います。kuro さんが書きました:これは、ソースファイル>追加>新しい項目>C++ ソース コードを含むファイルを作成、より、ファイル名を〇〇.cl とする。
ここに追加しただけは実行されないのでプログラムで実行する様に記述する必要があります。
問題となっていたcalc.clが見つからないエラーの件を解決しないといけません。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。
-
niheran
Re: カーネルのソースプログラムの作り方が分かりません。
そのcalc.clというファイルを
[あなたが今制作しているプロジェクト名].sln
のファイルと同じディレクトリに置くのはいかがでしょうか?
[あなたが今制作しているプロジェクト名].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: カーネルのソースプログラムの作り方が分かりません。
上のは13行目の}が抜けていました
後、" *.cl "ファイルを何個も読み込もうとするとエラーがでるので、カーネル関数は一つのclファイルにまとめて書かないといけないようです
後、" *.cl "ファイルを何個も読み込もうとするとエラーがでるので、カーネル関数は一つのclファイルにまとめて書かないといけないようです
Re: カーネルのソースプログラムの作り方が分かりません。
無事、カーネルのソースファイル自体の作り方が分かりました。
ありがとうございました。
ありがとうございました。