OpenCLのプログラムがうまくいきません・・・

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

OpenCLのプログラムがうまくいきません・・・

#1

投稿記事 by kuro » 14年前

プログラミング初心者です。
市販の本を読みながらOpenCLでプログラムを作ろうとしているんですが、どうしてもうまくいきません。
プラットフォーム情報を取得するプログラムを作ったのですが、ビルドしてみると失敗してしまいます。
「デバックなしで開始」をしてみると実行結果らしいものはでるのですが・・・
「デバッグを開始」をしてみると、
<バイナリはデバッグ情報と一緒にビルドされませんでした。>
という表示が2か所出てきました。
おそらくこれが原因ではないか、と思うのですが、プログラミングに対してほとんど知識が無いので、手の付けようがありません。
どなたか解決法を教えて頂けないでしょうか?

PC(ノート)のスペックは、
WINDOWS7 64bit Intel Core i7
Intel(R) HD Graphics Family NVIDIA GeForce GT 540M
です。

ダウンロードしたものは、
CUDA Toolkit 4.1
Developer Drivers Win7 & WinVista (Notebook) (ver. 286.16)
GPU Computing SDK
Visual Studio 2008 c++ Express Edition
(64bitプラットフォームを作成するために、http://www.geocities.jp/penguinitis2002 ... ォームを作成しました。)←恐らく作成できたと思います。

ソリューションへのパスは、
追加のインクルードディレクトリ C:\ProgramData\NVIDIA Corporation\NVIDIA GPU Computing SDK 4.1\OpenCL\common\inc
追加のライブラリディレクトリ   C:\ProgramData\NVIDIA Corporation\NVIDIA GPU Computing SDK 4.1\OpenCL\common\lib\x64
追加の依存ファイル        OpenCL.lib

です。

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

Re: OpenCLのプログラムがうまくいきません・・・

#2

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

情報が不足気味なので答えづらいのですが、

「ビルドしてみると失敗してしまいます。」というのは、<バイナリはデバッグ情報と一緒にビルドされませんでした。>の事ですか?

あとどの様にプロジェクトを作成されたのでしょうか?
下記サイトの「[デバッガが使えない]」の説明は役立ちませんか?
「VisualC++ - 学ぼう!ストリーミング Wiki*」
http://wikiwiki.jp/manabistream/?VisualC%2B%2B

初心者でOpenCLは無茶苦茶ハードルが高いと思いますので地道に問題を片付けていくしか無いと思います。
※ 私もOpenCLは未経験ですので、どこまでお手伝い出来るかは分かりません。
それとGeForce GT 540MでOpenCLがどのぐらいの性能が出るかも未知数です。デスクトップ向けGPUに比べると性能が低めなので(それでもGT 540Mは良い方ですが)。
「GPUの性能比較」
http://hardware-navi.com/gpu.php
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。

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

Re: OpenCLのプログラムがうまくいきません・・・

#3

投稿記事 by kuro » 14年前

「VisualC++ - 学ぼう!ストリーミング Wiki*」
上記の内容で試してみたら、今度は、
main.obj : warning LNK4248: unresolved typeref token (0100000E) for '_cl_platform_id'; image may not run
という警告が1つ表示されました。
また、デバッグすると、
'C:\Windows\System32\OpenCL.dll' を読み込みました。バイナリはデバッグ情報と一緒にビルドされませんでした。
'C:\Windows\System32\nvcuda.dll' を読み込みました。バイナリはデバッグ情報と一緒にビルドされませんでした。
の2つが同様に表示されました。

「ビルドしてみると失敗してしまいます。」
については、解決いたしました。こちらの唯の勘違いでした。申し訳ありません。

「どの様にプロジェクトを作成されたのでしょうか?」
これは、プログラムを書くまでの過程、ということでよろしいでしょうか?

まず、Visual Studio 2008 C++ Express Edition を起動させて、メニューから、”ファイル>新規作成>プロジェクト・・・”を選択し、プロジェクトの種類として、”Visual C++ > Win32” を選択し、”Win32コンソールアプリケーション”を選択しプロジェクト名を入力しました。
次に、アプリケーションウィザードにおいてアプリケーションの種類をコンソールアプリケーションにし、追加のオプションとして、空のオプションにチェックをいれ完了ボタンを押しました。
次に、C++のソースファイル(この場合プラットフォーム情報を取得するプログラム)を追加しました。(main.cppを追加した後プログラムを書きました。)
次にプロパティを開き、構成を”すべての構成”を選択し、構成マネージャを開き、x64を選択し構成マネージャを終了しました。
次に、構成プロパティ > C/C++ を選択し、以下のパスを追加のインクルードディレクトリにセットしました。
C:\ProgramData\NVIDIA Corporation\NVIDIA GPU Computing SDK 4.1\OpenCL\common\inc
次に、構成プロパティ > リンカ > 全般 を選択し、以下のパスを追加のライブラリディレクトリにセットしました。
C:\ProgramData\NVIDIA Corporation\NVIDIA GPU Computing SDK 4.1\OpenCL\common\lib\x64
次に、構成プロパティ > リンカ > 入力を選択し、追加の依存ファイルとしてOpenCL.libを追加しました。(上二つのパスはリンクで行けたのですが、リンクが無かったのでそのままOpenCL.libと入力しました。
以上で設定を終えて、main.cppにプログラムを入力し、ビルドさせました。

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

Re: OpenCLのプログラムがうまくいきません・・・

#4

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

「バイナリはデバッグ情報と一緒にビルドされませんでした。」に関してはOpenCLとnvcuda.dll'内のソースコードデバッグが出来ないだけですので気にしなくて良いです。
「main.obj : warning LNK4248: unresolved typeref token (0100000E) for '_cl_platform_id'; image may not run」に関しては元の状態に戻してみてください。
と言うことで実際に動いているなら大丈夫です。
実行結果が合っているかどうかは、「OpenCLの市販の本」通りならOKだと思います。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。

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

Re: OpenCLのプログラムがうまくいきません・・・

#5

投稿記事 by kuro » 14年前

「main.obj : warning LNK4248: unresolved typeref token (0100000E) for '_cl_platform_id'; image may not run」
実は、最初からこのエラーが出ていたみたいで、元の状態に戻しても依然として出てしまいます。
http://msdn.microsoft.com/ja-jp/library ... 80%29.aspx
ネットで検索したら上記のサイトが見つかったのですが、いまいち解決法が分かりません。

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

Re: OpenCLのプログラムがうまくいきません・・・

#6

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

純粋なC++ではないC++/CLIでコンパイルしたものが混じらないとこのエラーは出ないと思いますがwin32プロジェクトで作成されたプロジェクトですよね?初めて見るエラーなのでよく分からないんですが、こちらで環境も再現できないのでどうにも手当ができません。
書籍のサポートページなどに最新版での対応の仕方などは書かれていないか確認してみてください。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。

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

Re: OpenCLのプログラムがうまくいきません・・・

#7

投稿記事 by kuro » 14年前

確認してみたのですが、よく分かりませんでした。
win32プロジェクトを作成する手順が間違っているのでしょうか?かなり参ってます・・・。

実行結果ですが、若干違います。
本では、
Platform extensions: cl_khr_byte_addressable_store cl_nv_compiler_options cl_nv_device_attribute_query
と表示されるところが、私のは、デバッグなしで開始させると、
Platform extensions: cl_khr_byte_addressable_store cl_khr_icd cl_khr_gl_sharing cl_nv_d3d9_sharing cl_nv_d3d10_sharing
cl_khr_d3d10_sharing cl_nv_d3d11_sharing cl_nv_compiler_options cl_nv_device_attribute_query cl_nv_pragma_unroll
と、表示されています。

また、新たに、行列和を計算するプログラムを書いてみたのですが、こちらは、ビルド時エラー、警告などは一切でずに、デバッグなしで開始させると、

clCreateContextType failed
Invalid platform
続行するには何かキーを押してください・・・

と表示され、求める実行結果が得られません。
これも同様のエラーなのでしょうか?

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

Re: OpenCLのプログラムがうまくいきません・・・

#8

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

全体的に情報が断片的なのですべての情報を出してもらったほうが良いかと思います。
実行時やエラー出力はユーザー名の部分を除いて全て貼って下さい。書籍名もお願いします。
出来れば、テストしたプログラムのソースコードも貼ってほしいところです。
kuro さんが書きました:Platform extensions: cl_khr_byte_addressable_store cl_khr_icd cl_khr_gl_sharing cl_nv_d3d9_sharing cl_nv_d3d10_sharing
cl_khr_d3d10_sharing cl_nv_d3d11_sharing cl_nv_compiler_options cl_nv_device_attribute_query cl_nv_pragma_unroll
こっちは良く分かりません。
kuro さんが書きました:clCreateContextType failed
Invalid platform
このエラーを見るかぎりプラットフォームが間違っている。失敗したって事ですね。

情報を見るかぎりは、環境設定に失敗している気もします。
ドライバはCUDA用のビデオカード・ドライバを導入してますよね?
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。

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

Re: OpenCLのプログラムがうまくいきません・・・

#9

投稿記事 by kuro » 14年前

参考にしている書籍は、OpenCL入門 GPU & マルチコアCPU並列プログラミング 著 奥園隆司 です。

コード:

#include <stdio.h>

#ifdef __APPLE__
#include <OpenCL/opencl.h>
#else
#include <CL/cl.h>
#endif //__APPLE__

static void printPlatformInfo(const cl_platform_id platform_id);

/*-----------------------------------------------------------------------------------------
 *
 */

int

main(int argc, char * const argv[])
{
	// プラットフォームIDを取得する
	cl_platform_id platforms[10];
	cl_uint num_platforms;
	cl_int status;

	status = clGetPlatformIDs(sizeof(platforms) / sizeof(*platforms), platforms, &num_platforms);

	if (status != CL_SUCCESS) {
		fprintf(stderr, "clGetPlatformIds failed with status %d\n", status);
		return 1;
	}

	printf("Number of platform(s) : %d\n", num_platforms);

	for (int i = 0; i < (int)num_platforms; i++) {
		// プラットフォームIDについての情報を表示する 
		printPlatformInfo(platforms[i]);
	}

	return 0;
}

/*-----------------------------------------------------------------------------------------------------------------
 *引数で与えられたプラットフォームの情報を表示する
 *platform_id: 情報を表示するプラットフォームのID
 */

static void
printPlatformInfo(const cl_platform_id platform_id)
{
	char buffer[1024];
	cl_int status;

	// プロファイル
	status = clGetPlatformInfo(platform_id, CL_PLATFORM_PROFILE, sizeof(buffer) - 1, buffer, NULL);
	printf("Platform profile  : ");

	if (status == CL_SUCCESS) {
		printf("%s\n", buffer);
	} else {
		printf("Error: clGetPlatformInfo failed with status %d\n", status);
	}

	// バージョン
	status = clGetPlatformInfo(platform_id, CL_PLATFORM_VERSION, sizeof(buffer) - 1, buffer, NULL);
	printf("Platform version   : ");

	if (status == CL_SUCCESS) {
		printf("%s\n", buffer);
	} else {
		printf("Error: clGetPlatformInfo failed with status %d\n", status);
	}

	// 名前
	status = clGetPlatformInfo(platform_id, CL_PLATFORM_NAME, sizeof(buffer) - 1, buffer, NULL);
	printf("Platform name      : ");
	
	if (status == CL_SUCCESS) {
		printf("%s\n", buffer);
	} else {
		printf("Error: clGetPlatformInfo failed with status %d\n", status);
	}

	// ベンダー
	status = clGetPlatformInfo(platform_id, CL_PLATFORM_VENDOR, sizeof(buffer) - 1, buffer, NULL);
	printf("Platform vender    : ");

	if (status == CL_SUCCESS) {
		printf("%s\n", buffer);
	} else {
		printf("Error: clGetPlatformInfo failed with status %d\n", status);
	}

	// 拡張機能
	status = clGetPlatformInfo(platform_id, CL_PLATFORM_EXTENSIONS, sizeof(buffer) - 1, buffer, NULL);
	printf("Platforms extensions: ");

	if (status == CL_SUCCESS) {
		printf("%s\n", buffer);
	} else {
		printf("Error: clGetPlatformInfo failed with status %d\n", status);
	}
}
これが、プラットフォーム情報を取得するプログラムです。
実行時のエラー出力は、

1>------ すべてのリビルド開始: プロジェクト: ShowPlatformInfo, 構成: Debug x64 ------
1>プロジェクト 'ShowPlatformInfo'、構成 'Debug|x64' の中間出力ファイルを削除しています。
1>コンパイルしています...
1>main.cpp
1>マネージ リソースをコンパイルしています...
1>Read in 0 resources from "c:\Users\Documents\Visual Studio 2008\Projects\ShowPlatformInfo\ShowPlatformInfo\main.resx"
1>Writing resource file... Done.
1>リンクしています...
1>main.obj : warning LNK4248: unresolved typeref token (0100000E) for '_cl_platform_id'; image may not run
1>マニフェストを埋め込んでいます...
1>ビルドログは "file://c:\Users\Documents\Visual Studio 2008\Projects\ShowPlatformInfo\ShowPlatformInfo\x64\Debug\BuildLog.htm" に保存されました。
1>ShowPlatformInfo - エラー 0、警告 1
========== すべてリビルド: 1 正常終了、0 失敗、0 スキップ ==========

次に、行列和を求めるプログラムです。

コード:

#include <stdio.h>

#ifdef __APPLE__
#include <OpenCL/opencl.h>
#else
#include <CL/cl.h>
#endif //__APPLE__

static const int NumElements = 10000;
static const int MaxDevices  = 10;
static const int MaxLogSize  = 5000;

static float In1[NumElements];
static float In2[NumElements];
static float Out[NumElements];

static void printBuildLog(const cl_program program, const cl_device_id device);
static void printError(const cl_int err);


/*--------------------------------------------------------------------------------------------------------------------------------
 *
 */
int
main()
{
	cl_int status;

	// コンテキストの作成
	cl_context context;
	context = clCreateContextFromType(NULL,
		                              CL_DEVICE_TYPE_GPU,
									  NULL,
									  NULL,
									  &status);

	if (status != CL_SUCCESS) {
		fprintf(stderr, "clCreateContextFromType failed.\n");
		printError(status);
		return 1;
	}

	// 2. コンテキストに含まれるデバイスを取得
	cl_device_id devices[MaxDevices];
	size_t size_return;

	status = clGetContextInfo(context,
		                      CL_CONTEXT_DEVICES,
							  sizeof(devices),
							  devices,
							  &size_return);
	if (status != CL_SUCCESS) {
		fprintf(stderr, "clGetContextInfo failed.\n");
		printError(status);
		return 2;
	}

	// 3, コマンドキューの作成
	cl_command_queue queue;
	queue = clCreateCommandQueue(context,
		                         devices[0],
								 0,
								 &status);
	if (status != CL_SUCCESS) {
		fprintf(stderr, "clCreateCommandGueue failed.\n");
		printError(status);
		return 3;
	}

	// 4. プログラムオブジェクトの作成
	static const char *sources[] = {
		"__kernel void\n\
		addVector(__global const float *in1,\n\
		          __global const float *in2,\n\
				  __global float *out)\n\
	    {\n\
			int index = get_global_id(0);\n\
			out[index] = in1[index] + in2[index];\n\
			}\n"};
	cl_program program;
	program = clCreateProgramWithSource(context,
		                                1,
										(const char**)&sources,
										NULL,
										&status);
	if (status != CL_SUCCESS) {
		fprintf(stderr, "clCreateProgramWithSource failed.\n");
		printError(status);
		return 4;
	}

	// 5. プログラムのビルド
	status = clBuildProgram(program, 1, devices, NULL, NULL, NULL);
	if (status != CL_SUCCESS) {
		fprintf(stderr, "clBuildProgram failed.\n");
		printError(status);
		printBuildLog(program, devices[0]);
		return 5;
	}
	clUnloadCompiler();

	// 6. カーネルの作成
	cl_kernel kernel;
	kernel = clCreateKernel(program, "addVector", &status);
	if (status != CL_SUCCESS) {
		fprintf(stderr, "clCreateKernel failed.\n");
		printError(status);
		return 6;
	}

	// 7. メモリオブジェクトの作成
	for (int i = 0; i < NumElements; i++) {
		// データをセット
		In1[i] = (float)i * 100.0f;
		In2[i] = (float)i / 100.0f;
		Out[i] = 0.0f;
	}

	cl_mem memIn1;
	memIn1 = clCreateBuffer(context,
							CL_MEM_READ_ONLY | CL_MEM_COPY_HOST_PTR,
							sizeof(cl_float) * NumElements,
							In1,
							&status);
	if(status != CL_SUCCESS) {
		fprintf(stderr, "clCreateBuffer for memIn1 failed.\n");
		printError(status);
		return 7;
	}

	cl_mem memIn2;
	memIn2 = clCreateBuffer(context,
							CL_MEM_READ_ONLY | CL_MEM_COPY_HOST_PTR,
							sizeof(cl_float) * NumElements,
							In2,
							&status);
	if (status != CL_SUCCESS) {
		fprintf(stderr, "clCreateBuffer for memIn2 failed.\n");
		printError(status);
		return 7;
	}

	cl_mem memOut;
	memOut = clCreateBuffer(context,
		                     CL_MEM_WRITE_ONLY,
							 sizeof(cl_float) * NumElements,
							 NULL,
							 &status);
	if (status != CL_SUCCESS) {
		fprintf(stderr, "clCreateBuffer for memOut failed.\n");
		printError(status);
		return 7;
	}

	// 8. カーネル関数引数のリセット
	status = clSetKernelArg(kernel, 0, sizeof(cl_mem), (void *)&memIn1);
	if(status != CL_SUCCESS) {
		fprintf(stderr, "clSetKernelArg for memIn1 failed.\n");
		printError(status);
		return 8;
	}
	status = clSetKernelArg(kernel, 1, sizeof(cl_mem), (void *)&memIn2);
	if (status != CL_SUCCESS) {
		fprintf(stderr, "clSetKernelArg for memIn2 failed.\n");
		printError(status);
		return 8;
	}
	status = clSetKernelArg(kernel, 2, sizeof(cl_mem), (void *)&memOut);
	if (status != CL_SUCCESS) {
		fprintf(stderr, "clSetKernelArg for memOut failed.\n");
		printError(status);
		return 8;
	}

	// 9. カーネル実行のリクエスト
	size_t globalSize[] = {NumElements};
	status = clEnqueueNDRangeKernel(queue,
		                           kernel,
								   1,
								   NULL,
								   globalSize,
								   0, 0, NULL, NULL);
	if (status != CL_SUCCESS) {
		fprintf(stderr, "clEnqueueNDRangeKernel.\n");
		printError(status);
		return 9;
	}

	// 10. 結果の取得
	status = clEnqueueReadBuffer(queue,
		                         memOut,
								 CL_TRUE,
								 0,
								 sizeof(cl_float) * NumElements,
								 Out, 0, NULL, NULL);
	if (status != CL_SUCCESS) {
		fprintf(stderr, "clEnqueueReadBuffer.\n");
		printError(status);
		return 10;
	}

	// 11. 結果の表示(一部)
	printf("(In1, In2, Out)\n");
	for (int i = 0; i < 100; i++) {
		printf("%f, %f, %f (%f)\n", In1[i], In2[i], Out[i], In1[i] + In2[i]);
	}

	// 11. リソースの解放
	clReleaseMemObject(memOut);
	clReleaseMemObject(memIn2);
	clReleaseMemObject(memIn1);
	clReleaseKernel(kernel);
	clReleaseProgram(program);
	clReleaseCommandQueue(queue);
	clReleaseContext(context);

	return 0;
}


/*------------------------------------------------------------------------------------------------------------------------------------
 * ビルドログを表示する
 * program: ビルドを行ったプログラムオブジェクト
 * device:  ビルドのターゲットに用いたデバイスID
 */

static void
printBuildLog(const cl_program program, const cl_device_id device)
{
	cl_int status;
	size_t size_ret;

	char buffer[MaxLogSize + 1];
	status = clGetProgramBuildInfo(program,
		                           device,
								   CL_PROGRAM_BUILD_LOG,
								   MaxLogSize,
								   buffer,
								   &size_ret);
	if (status == CL_SUCCESS) {
		buffer[size_ret] = '\0';
		printf(">>> build log <<<\n");
		printf("%s\n", buffer);
		printf(">>> end of build log <<<\n");
	} else {
		printf("clGetProgramInfo failed.\n");
		printError(status);
	}
}


/*-----------------------------------------------------------------------------------------------------------------------
 * エラーコードに対応するメッセージを出力する
 * err: エラーコード
 */

static void
printError(const cl_int err)
{
	switch (err) {
		case CL_BUILD_PROGRAM_FAILURE:
			fprintf(stderr, "Program build failed\n");
			break;
		case CL_COMPILER_NOT_AVAILABLE:
			fprintf(stderr, "OpenCL compiler is not available\n");
			break;
		case CL_DEVICE_NOT_AVAILABLE:
			fprintf(stderr, "Device is not available\n");
			break;
		case CL_DEVICE_NOT_FOUND:
			fprintf(stderr, "Device not found\n");
			break;
		case CL_IMAGE_FORMAT_NOT_SUPPORTED:
			fprintf(stderr, "Image format is not supported\n");
			break;
		case CL_IMAGE_FORMAT_MISMATCH:
			fprintf(stderr, "Image format mismatch\n");
			break;
		case CL_INVALID_ARG_INDEX:
			fprintf(stderr, "Invalid arg index\n");
			break;
		case CL_INVALID_ARG_SIZE:
			fprintf(stderr, "Invalid arg size\n");
			break;
		case CL_INVALID_ARG_VALUE:
			fprintf(stderr, "Invalid arg value\n");
			break;
		case CL_INVALID_BINARY:
			fprintf(stderr, "Invalid binary\n");
			break;
		case CL_INVALID_BUFFER_SIZE:
			fprintf(stderr, "Invalid buffer size\n");
			break;
		case CL_INVALID_BUILD_OPTIONS:
			fprintf(stderr, "Invalid build options\n");
			break;
		case CL_INVALID_COMMAND_QUEUE:
			fprintf(stderr, "Invalid command queue\n");
			break;
		case CL_INVALID_CONTEXT:
			fprintf(stderr, "Invalid context\n");
			break;
		case CL_INVALID_DEVICE:
			fprintf(stderr, "Invalid device\n");
			break;
		case CL_INVALID_DEVICE_TYPE:
			fprintf(stderr, "Invalid device type\n");
			break;
		case CL_INVALID_EVENT:
			fprintf(stderr, "Invalid event\n");
			break;
		case CL_INVALID_EVENT_WAIT_LIST:
			fprintf(stderr, "Invalid event wait list\n");
			break;
		case CL_INVALID_GL_OBJECT:
			fprintf(stderr, "Invalid OpenGL object\n");
			break;
		case CL_INVALID_GLOBAL_OFFSET:
			fprintf(stderr, "Invalid global offset\n");
			break;
		case CL_INVALID_HOST_PTR:
			fprintf(stderr, "Invalid host pointer\n");
			break;
		case CL_INVALID_IMAGE_FORMAT_DESCRIPTOR:
			fprintf(stderr, "Invalid image format descriptor\n");
			break;
		case CL_INVALID_IMAGE_SIZE:
			fprintf(stderr, "Invalid imagesize\n");
			break;
		case CL_INVALID_KERNEL:
			fprintf(stderr, "Invalid kernel\n");
			break;
		case CL_INVALID_KERNEL_ARGS:
			fprintf(stderr, "Invalid kernel args\n");
			break;
		case CL_INVALID_KERNEL_DEFINITION:
			fprintf(stderr, "Invalid kernel definition\n");
			break;
		case CL_INVALID_KERNEL_NAME:
			fprintf(stderr, "Invalid kernel name\n");
			break;
		case CL_INVALID_MEM_OBJECT:
			fprintf(stderr, "Invalid memory object\n");
			break;
		case CL_INVALID_MIP_LEVEL:
			fprintf(stderr, "Invalid MIP level\n");
			break;
		case CL_INVALID_OPERATION:
			fprintf(stderr, "Invalid operation\n");
			break;
		case CL_INVALID_PLATFORM:
			fprintf(stderr, "Invalid platform\n");
			break;
		case CL_INVALID_PROGRAM:
			fprintf(stderr, "Invalid program\n");
			break;
		case CL_INVALID_PROGRAM_EXECUTABLE:
			fprintf(stderr, "Invalid program executable\n");
			break;
		case CL_INVALID_QUEUE_PROPERTIES:
			fprintf(stderr, "Invalid queue properties\n");
			break;
		case CL_INVALID_SAMPLER:
			fprintf(stderr, "Invalid sampler\n");
			break;
		case CL_INVALID_VALUE:
			fprintf(stderr, "Invalid value\n");
			break;
		case CL_INVALID_WORK_DIMENSION:
			fprintf(stderr, "Invalid work dimension\n");
			break;
		case CL_INVALID_WORK_GROUP_SIZE:
			fprintf(stderr, "Invalid work group size\n");
			break;
		case CL_INVALID_WORK_ITEM_SIZE:
			fprintf(stderr, "Invalid work item size\n");
			break;
		case CL_MAP_FAILURE:
			fprintf(stderr, "Memory mapping failed\n");
			break;
		case CL_MEM_COPY_OVERLAP:
			fprintf(stderr, "Copying overlapped memory address\n");
			break;
		case CL_MEM_OBJECT_ALLOCATION_FAILURE:
			fprintf(stderr, "Memory object allocation failure\n");
			break;
		case CL_OUT_OF_HOST_MEMORY:
			fprintf(stderr, "Out of host memory\n");
			break;
		case CL_OUT_OF_RESOURCES:
			fprintf(stderr, "Out of resources\n");
			break;
		case CL_PROFILING_INFO_NOT_AVAILABLE:
			fprintf(stderr, "Profiling info not available\n");
			break;
		case CL_SUCCESS:
			fprintf(stderr, "Succeeded\n");
			break;
		default:
			fprintf(stderr, "Unknown error code: %d\n", err);
			break;
	}
}


です。実行時は、

1>------ すべてのリビルド開始: プロジェクト: List 4.3 4.4 4.5, 構成: Debug x64 ------
1>プロジェクト 'List 4.3 4.4 4.5'、構成 'Debug|x64' の中間出力ファイルを削除しています。
1>コンパイルしています...
1>main.cpp
1>マニフェストをリソースにコンパイルしています...
1>Microsoft (R) Windows (R) Resource Compiler Version 6.1.7600.16385
1>Copyright (C) Microsoft Corporation. All rights reserved.
1>リンクしています...
1>LINK : C:\Users\Documents\Visual Studio 2008\Projects\List 4.3 4.4 4.5\x64\Debug\List 4.3 4.4 4.5.exe not found or not built by the last incremental link; performing full link
1>マニフェストを埋め込んでいます...
1>Microsoft (R) Windows (R) Resource Compiler Version 6.1.7600.16385
1>Copyright (C) Microsoft Corporation. All rights reserved.
1>ビルドログは "file://c:\Users\Documents\Visual Studio 2008\Projects\List 4.3 4.4 4.5\List 4.3 4.4 4.5\x64\Debug\BuildLog.htm" に保存されました。
1>List 4.3 4.4 4.5 - エラー 0、警告 0
========== すべてリビルド: 1 正常終了、0 失敗、0 スキップ ==========

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

Re: OpenCLのプログラムがうまくいきません・・・

#10

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

気になるのは最初のプログラムで
1>マネージ リソースをコンパイルしています...
1>Read in 0 resources from "c:\Users\Documents\Visual Studio 2008\Projects\ShowPlatformInfo\ShowPlatformInfo\main.resx"
と出ているのですが、これはどうみてもC++/CLI(マネージド)のプログラムのリソースです。
なので、ShowPlatformInfoのプロジェクトの作りかたが間違っているか、そもそもC++/CLI(マネージド)で作るべきものなのかでは無いでしょうか?

ShowPlatformInfoのフォルダごと全部を消してプロジェクトを作りなおしてみてはどうでしょうか?

OpenCL入門 GPU & マルチコアCPU並列プログラミング 著 奥園隆司 です。
下記のサイトに注意事項が書かれているので、良く読んで試してみてください。
「OpenCL入門 サンプルコード | 書籍 | 会社情報 - フィックスターズ」
http://www.fixstars.com/ja/company/book ... ample.html
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。

ISLe
記事: 2650
登録日時: 15年前
連絡を取る:

Re: OpenCLのプログラムがうまくいきません・・・

#11

投稿記事 by ISLe » 14年前

プロジェクトの種類とは別の話として。

ドライバがインストールできないというほうのスレにも書いたんですが、Optimus Technology搭載のPCでIntel(R) HD Graphicsに対して実行しようとしているのでプラットフォームが違うと言われるのではないでしょうか。
Geforceを有効にしておいてデバッグすれば動くような気がします。

OpenCLってOptimus Technologyに対応してないんですかね。
それか何かおまじないをすればGPUが切り替わるのかもしれませんが。
自動で切り替わってくれないと使いにくいですもんね。

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

Re: OpenCLのプログラムがうまくいきません・・・

#12

投稿記事 by kuro » 14年前

[修正]読みづらかったの修正させて頂きました。 by softya(ソフト屋)
softya様
気になるのは最初のプログラムで

1>マネージ リソースをコンパイルしています...
1>Read in 0 resources from "c:\Users\Documents\Visual Studio 2008\Projects\ShowPlatformInfo\ShowPlatformInfo\main.resx"


と出ているのですが、これはどうみてもC++/CLI(マネージド)のプログラムのリソースです。
なので、ShowPlatformInfoのプロジェクトの作りかたが間違っているか、そもそもC++/CLI(マネージド)で作るべきものなのかでは無いでしょうか?
ShowPlatformInfoのフォルダごと全部を消してプロジェクトを作りなおしてみてはどうでしょうか?
これについては、ShowPlatformInfoのmain.cppをコピーして新しいプロジェクトを作り、その新しいプロジェクトに張り付けて実行させました。
が、結果は変わりませんでした。

書籍のほうでは、”Visual C++ > Win32” を選択し、”Win32コンソールアプリケーション”を選択し・・・と書かれてあったのでその通りにしたのですけれど・・・http://www.geocities.jp/penguinitis2002 ... 8-x64.htmlに書かれてある手順で64bitアプリケーションを作成したのですが、このとき以外CLRに関することを選択していません。もしかしたら、この64bitアプリケーションを作成するのがうまくいってない、もしくは間違っているのでしょうか?(64bitアプリケーションが作成されていないのでは?)

書籍の中で、CUDA Toolkit はダウンロードするものの中に含まれていなかったのでアンインストールし、http://developer.nvidia.com/cuda-toolkit-30-downloadsからGPU%20Computing%20SDK%20code%20samplesをダウンロードしインストールしました。
http://www.nvidia.com/download/find.aspxからGT500M series(Notebook) GT540M windows7 64-bitを選択し出てきたドライバをダウンロードしインストールしました。(Verde 285.62Driver)

http://www.fixstars.com/ja/company/book ... ample.htmlのサンプルコード全体の動作条件
NVIDIAの配布するCUDA SDK3.0 β版に付属のOpenCLでは現状のサンプルコードは動作しません。
以下のページからダウンロードしたOpenCLを使用してください。
» http://developer.nvidia.com/object/get-opencl.html
へ飛んだのですが、どこからOpenCLをダウンロードしたらよいかわかりませんでした。
ISLe様
ドライバがインストールできないというほうのスレにも書いたんですが、Optimus Technology搭載のPCでIntel(R) HD Graphicsに対して実行しようとしているのでプラットフォームが違うと言われるのではないでしょうか。
Geforceを有効にしておいてデバッグすれば動くような気がします。
一応、以前からNVIDIAコントロールパネルにおいて、3D設定の管理のとこで、グローバル設定>高パフォーマンスNVIDIAプロセッサ を選択していたのですが、新たに、プログラム設定において、 このプログラム用の優先するグラフィックプロセッサを選択する において高パフォーマンスNVIDIAプロセッサを選択しました。(カスタマイズするプログラムはAdobe acrobat(acord32.exe)でした)←ここは変更していません。

これで、Geforceが有効になったのでしょうか?
それとも、システムのプロパティ>デバイスマネージャ>ディスプレイアダプターを選択してIntel(R) HD Graphicsを無効にしたら良いのでしょうか?

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

Re: OpenCLのプログラムがうまくいきません・・・

#13

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

とりあえずShowPlatformInfoを32bit版でビルドをするとどうなるでしょうか?

あとCUDA Toolkitは4.1から3.0にダウングレードしたって理解でよろしいのでしょうか?
それぞれの作業を行ったのは4.1なのか3.0なのかも教えて下さい。


Optimus Technologyは未経験ですが、どちらのGPUが動作しているかは下記ツールで確認できませんでしょうか?
「GPU-Z Video card GPU Information Utility」
http://www.techpowerup.com/gpuz/
CUDAでもOptimus Technologyは自動で切り替わると書いてあるんですけどね。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。

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

Re: OpenCLのプログラムがうまくいきません・・・

#14

投稿記事 by kuro » 14年前

とりあえずShowPlatformInfoを32bit版でビルドをするとどうなるでしょうか?

ソリューションのプロパティからすべての構成に設定し、構成マネージャを開き、アクティヴソリューションプラットフォームとプラットフォームをwin32に設定しました。
追加のインクルードディレクトリを、"C:\ProgramData\NVIDIA Corporation\NVIDIA GPU Computing SDK 4.1\OpenCL\common\lib\Win32"に変更してビルドさせると、
1>コンパイルしています...
1>main.cpp
1>.\main.cpp(6) : fatal error C1083: include ファイルを開けません。'CL/cl.h': No such file or directory
1>ビルドログは "file://c:\Users\kuro\Documents\Visual Studio 2008\Projects\ShowPlatformInfo\ShowPlatformInfo\Debug\BuildLog.htm" に保存されました。
1>ShowPlatformInfo - エラー 1、警告 0
========== ビルド: 0 正常終了、1 失敗、0 更新不要、0 スキップ ==========
と、表示されました。

CUDA Toolkitは4.1から3.0にダウングレードしたって理解でよろしいのでしょうか?

CUDA Toolkit 4.1 をアンインストールしました。3.0にダウングレードも行っていません。
CUDA Toolkit 3.0のページから以前はGPU Computing SDKをインストールいていたのですが、今回は、CUDA Toolkit 4.1 のページからGPU Computing SDK 4.1をインストールしました。

それぞれの作業を行ったのは4.1なのか3.0なのかも教えて下さい。

手さぐりでGPU Computing SDKをアンインストールしたりインストールしたり・・・を繰り返しております。
元のプログラムでは、CUDA Toolkit 3.0をインストールした状態で実行しました。
始めから設定をやり直したプログラムでは、CUDA Toolkit はインストールしていない状態で実行しました。

Optimus Technologyは未経験ですが、どちらのGPUが動作しているかは下記ツールで確認できませんでしょうか?

http://www.techpowerup.com/gpuz/ のどのツールを使えばよいのでしょうか?下のDawnloadsからでしょうか?

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

Re: OpenCLのプログラムがうまくいきません・・・

#15

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

すいません、どちらが引用か書いた文章が分かりづらいので何らかの工夫をお願いします。
kuro さんが書きました:追加のインクルードディレクトリを、"C:\ProgramData\NVIDIA Corporation\NVIDIA GPU Computing SDK 4.1\OpenCL\common\lib\Win32"に変更してビルドさせると、
それはインクルードではなくライブラリのパスです。
kuro さんが書きました:CUDA Toolkitは4.1から3.0にダウングレードしたって理解でよろしいのでしょうか?

CUDA Toolkit 4.1 をアンインストールしました。3.0にダウングレードも行っていません。
CUDA Toolkit 3.0のページから以前はGPU Computing SDKをインストールいていたのですが、今回は、CUDA Toolkit 4.1 のページからGPU Computing SDK 4.1をインストールしました。

それぞれの作業を行ったのは4.1なのか3.0なのかも教えて下さい。

手さぐりでGPU Computing SDKをアンインストールしたりインストールしたり・・・を繰り返しております。
元のプログラムでは、CUDA Toolkit 3.0をインストールした状態で実行しました。
始めから設定をやり直したプログラムでは、CUDA Toolkit はインストールしていない状態で実行しました。
CUDA Toolkit 4.1 だけでは何が問題だったのでしょうか?
私としては3.0も交じるとややこしいので4.1で統一を提案します。
kuro さんが書きました:http://www.techpowerup.com/gpuz/ のどのツールを使えばよいのでしょうか?下のDawnloadsからでしょうか?
ダウンロードはTechPowerUp GPU-Z v0.5.8で良いと思います。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。

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

Re: OpenCLのプログラムがうまくいきません・・・

#16

投稿記事 by kuro » 14年前

softya(ソフト屋) さんが書きました:それはインクルードではなくライブラリのパスです。
すみません。書き間違えました。
softya(ソフト屋) さんが書きました:CUDA Toolkit 4.1 だけでは何が問題だったのでしょうか?
私としては3.0も交じるとややこしいので4.1で統一を提案します。
やはり、CUDA Toolkit もインストールしたほうがよいのでしょうか?書籍にはNVIDIA Display Driver と GPU Computing SDKをダウンロードと書いてありましたので、CUDA Toolkitは必要ないと思いました。
softya(ソフト屋) さんが書きました:ダウンロードはTechPowerUp GPU-Z v0.5.8で良いと思います。
ダウンロードしたファイルを開き実行したら、表が出てきました。(画像の張り方が分かりません。すみません。)
左下にGPUの名前が出ていると思うのですが、最初表示されてるのは、Intel(R) Graphics Family でした。しかし、そこに選択肢があり、下にNVIDIA GeForce GT 540Mが表示されていました。

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

Re: OpenCLのプログラムがうまくいきません・・・

#17

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

kuro さんが書きました:やはり、CUDA Toolkit もインストールしたほうがよいのでしょうか?書籍にはNVIDIA Display Driver と GPU Computing SDKをダウンロードと書いてありましたので、CUDA Toolkitは必要ないと思いました。
最新のドライバと相性の良いのは4.1だと思います。
CUDA Toolkit4.1に含まえるGPU Computing SDKで良いのではないでしょうか?
kuro さんが書きました:ダウンロードしたファイルを開き実行したら、表が出てきました。(画像の張り方が分かりません。すみません。)
左下にGPUの名前が出ていると思うのですが、最初表示されてるのは、Intel(R) Graphics Family でした。しかし、そこに選択肢があり、下にNVIDIA GeForce GT 540Mが表示されていました。
とりあえず両方動いているのは確かなようです。
ドライバは両方共インストールできたのでしょうか?

手元に同じ機器がないのと、試している人もいないみたいなので自分である程度何とかしてもらうしか無い状況です。

[補足]
自分でコンパイルしたものではなく、実行ファイル付きのサンプルでOpenCLの動作確認は出来るかも知れません。
そちらは試されましたか?
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。

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

Re: OpenCLのプログラムがうまくいきません・・・

#18

投稿記事 by kuro » 14年前

softya(ソフト屋) さんが書きました:最新のドライバと相性の良いのは4.1だと思います。
CUDA Toolkit4.1に含まえるGPU Computing SDKで良いのではないでしょうか?
CUDA Toolkit4.1をインストールして、追加のインクルードディレクトリを、
"C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v4.1\include"
追加のライブラリディレクトリを、
"C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v4.1\lib\x64"
に、変更して、プラットフォーム情報を取得するプログラムと行列の和を求めるプログラムをビルド、デバッグなしで開始、をすると、以前と同様の結果が得られました。
softya(ソフト屋) さんが書きました:とりあえず両方動いているのは確かなようです。
ドライバは両方共インストールできたのでしょうか?
Geforceの方はインストールしたので問題ないと思いますが、Intel(R) Graphics Familyの方は何も変更していません。

プラットフォームのエラーはもしかしてIntel(R) Graphics Family と NVIDIA GeForce GT 540M が両方動作しているのがいけないのでしょうか?

[追記]
先ほどダウンロードした、GPU-Z.0.5.8を起動させて表示させるとこまではうまくいったのですが、NVIDIA GeForce GT 540Mにすると応答なしになってしまいます。これは何が原因なのでしょうか?
softya(ソフト屋) さんが書きました:[補足]
自分でコンパイルしたものではなく、実行ファイル付きのサンプルでOpenCLの動作確認は出来るかも知れません。
そちらは試されましたか?
いえ、まだ試していません。どのようにして試すことができるでしょうか?

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

Re: OpenCLのプログラムがうまくいきません・・・

#19

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

こちらに実行ファイル付きのサンプルがあります。

「OpenCL SDK Code Samples | NVIDIA Developer Zone」
http://developer.nvidia.com/opencl-sdk-code-samples
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。

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

Re: OpenCLのプログラムがうまくいきません・・・

#20

投稿記事 by kuro » 14年前

これは、NVIDIA Computing SDK Broser と同じものですよね?

デスクトップに表示されていたので実行させたところ問題なく動きました。

ただ、このPCは昨年5月ごろに買ったのですが、そのころからPCを起動させると、青いスクリーンになってセーフモードもしくはそのまま起動、などという選択肢が出て、またPCを起動させる。といった不具合が出ていました。(今もです)

何度か確認したところ、1度またPCを起動させると、システムのプロパティ>ディスプレイアダプタ で確認したのですが、Intel HD Graphics Familyしか表示されておらず、恐らくGeforceを読み取っていないのではないかと思われる現象が起きています。(それも絶対読み取らないわけではなく、ちゃんとGeforceと表示されることもあった)

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

Re: OpenCLのプログラムがうまくいきません・・・

#21

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

何か重要な情報が抜け落ちている気がします。今までの状況を出来るだけ具体的に整理してもらってよいでしょうか。何が成功で何が問題なのか良く分かりません。
成功したパターン(exeだけ?)と不成功なパターンを出して行かないと問題が整理されて行きません。32bit/64bitの区別や使用したバージョンの組み合わせなどもう一度見なおして書きだして下さい。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。

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

Re: OpenCLのプログラムがうまくいきません・・・

#22

投稿記事 by kuro » 14年前

まず、使用したPCは、
MouseComputer社製 LuvBook Tシリーズ
OS Windous7 Home Plemium 64bit 正規版
プロセッサー インテル® Core™ i7-2670QM プロセッサー(2.20GHz / 4コア)
グラフィックス NVIDIA® GeForce® GT540M / インテル® HD グラフィックス 3000(NVIDIA® Optimus™テクノロジ対応)
です。

インストールしたものは、
NVIDIA グラフィックス ドライバー 285.62
CUDA Toolkit 4.1
GPU Computing SDK 4.1
Visual Studio 2008 c++ Express Edition
winsdk_web.exe setup_x64.bat (この2つは、64bitプラットフォームを作成するためにインストール、実行しました。詳しくは、http://absolutearea.blogspot.com/2010/0 ... m-sdk.html)

設定したパスは、
追加のインクルードディレクトリ "C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v4.1\include"
追加のライブラリディレクトリ   "C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v4.1\lib\x64"
追加の依存ファイル        OpenCL.lib

この環境で、以前あげた2つのプログラムを64bitプラットフォームで動かしました。ビルドした結果も、デバッグした結果も、デバッグなしで開始した結果も以前と変わりません。


以前の環境は、
NVIDIA グラフィックス ドライバー 285.62
GPU Computing SDK (CUDA 3.0のページからインストールしたものです。)
Visual Studio 2008 c++ Express Edition
winsdk_web.exe setup_x64.bat (この2つは、64bitプラットフォームを作成するためにインストール、実行しました。詳しくは、http://absolutearea.blogspot.com/2010/0 ... m-sdk.html)

設定したパスは、
追加のインクルードディレクトリ C:\ProgramData\NVIDIA Corporation\NVIDIA GPU Computing SDK \OpenCL\common\inc
追加のライブラリディレクトリ   :\ProgramData\NVIDIA Corporation\NVIDIA GPU Computing SDK \OpenCL\common\lib\x64
追加の依存ファイル        OpenCL.lib

この環境でも、今現在の環境での結果と変わりませんでした。(64bitプラットフォーム)

--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

<ビルドした結果>(プラットフォーム情報を取得するプログラム)
1>------ すべてのリビルド開始: プロジェクト: ShowPlatformInfo, 構成: Debug x64 ------
1>プロジェクト 'ShowPlatformInfo'、構成 'Debug|x64' の中間出力ファイルを削除しています。
1>コンパイルしています...
1>main.cpp
1>マネージ リソースをコンパイルしています...
1>Read in 0 resources from "c:\Users\Documents\Visual Studio 2008\Projects\ShowPlatformInfo\ShowPlatformInfo\main.resx"
1>Writing resource file... Done.
1>リンクしています...
1>main.obj : warning LNK4248: unresolved typeref token (0100000E) for '_cl_platform_id'; image may not run
1>マニフェストを埋め込んでいます...
1>ビルドログは "file://c:\Users\Documents\Visual Studio 2008\Projects\ShowPlatformInfo\ShowPlatformInfo\x64\Debug\BuildLog.htm" に保存されました。
1>ShowPlatformInfo - エラー 0、警告 1
========== すべてリビルド: 1 正常終了、0 失敗、0 スキップ ==========


<デバッグした結果>(プラットフォーム情報を取得するプログラム)
'ShowPlatformInfo.exe': 'C:\Users\kuro\Documents\Visual Studio 2008\Projects\ShowPlatformInfo\x64\Debug\ShowPlatformInfo.exe' を読み込みました。シンボルが読み込まれました。
'ShowPlatformInfo.exe': 'C:\Windows\System32\ntdll.dll' を読み込みました
'ShowPlatformInfo.exe': 'C:\Windows\System32\mscoree.dll' を読み込みました
'ShowPlatformInfo.exe': 'C:\Windows\System32\kernel32.dll' を読み込みました
'ShowPlatformInfo.exe': 'C:\Windows\System32\KernelBase.dll' を読み込みました
'ShowPlatformInfo.exe': 'C:\Windows\winsxs\amd64_microsoft.vc90.debugcrt_1fc8b3b9a1e18e3b_9.0.21022.8_none_4ec74c6b3093419c\msvcr90d.dll' を読み込みました
'ShowPlatformInfo.exe': 'C:\Windows\System32\OpenCL.dll' を読み込みました。バイナリはデバッグ情報と一緒にビルドされませんでした。
'ShowPlatformInfo.exe': 'C:\Windows\System32\advapi32.dll' を読み込みました
'ShowPlatformInfo.exe': 'C:\Windows\System32\msvcrt.dll' を読み込みました
'ShowPlatformInfo.exe': 'C:\Windows\System32\sechost.dll' を読み込みました
'ShowPlatformInfo.exe': 'C:\Windows\System32\rpcrt4.dll' を読み込みました
'ShowPlatformInfo.exe': 'C:\Windows\winsxs\amd64_microsoft.vc90.debugcrt_1fc8b3b9a1e18e3b_9.0.21022.8_none_4ec74c6b3093419c\msvcm90d.dll' を読み込みました
'ShowPlatformInfo.exe': 'C:\Windows\System32\ole32.dll' を読み込みました
'ShowPlatformInfo.exe': 'C:\Windows\System32\gdi32.dll' を読み込みました
'ShowPlatformInfo.exe': 'C:\Windows\System32\user32.dll' を読み込みました
'ShowPlatformInfo.exe': 'C:\Windows\System32\lpk.dll' を読み込みました
'ShowPlatformInfo.exe': 'C:\Windows\System32\usp10.dll' を読み込みました
'ShowPlatformInfo.exe': 'C:\Windows\System32\imm32.dll' を読み込みました
'ShowPlatformInfo.exe': 'C:\Windows\System32\msctf.dll' を読み込みました
'ShowPlatformInfo.exe': 'C:\Windows\System32\nvinitx.dll' を読み込みました
'ShowPlatformInfo.exe': 'C:\Program Files\NVIDIA Corporation\coprocmanager\detoured.dll' を読み込みました
'ShowPlatformInfo.exe': 'C:\Program Files\NVIDIA Corporation\coprocmanager\Nvd3d9wrapx.dll' を読み込みました
'ShowPlatformInfo.exe': 'C:\Windows\System32\setupapi.dll' を読み込みました
'ShowPlatformInfo.exe': 'C:\Windows\System32\cfgmgr32.dll' を読み込みました
'ShowPlatformInfo.exe': 'C:\Windows\System32\oleaut32.dll' を読み込みました
'ShowPlatformInfo.exe': 'C:\Windows\System32\devobj.dll' を読み込みました
'ShowPlatformInfo.exe': 'C:\Program Files\NVIDIA Corporation\coprocmanager\nvdxgiwrapx.dll' を読み込みました
'ShowPlatformInfo.exe': 'C:\Windows\Microsoft.NET\Framework64\v4.0.30319\mscoreei.dll' を読み込みました
'ShowPlatformInfo.exe': 'C:\Windows\System32\shlwapi.dll' を読み込みました
'ShowPlatformInfo.exe': 'C:\Windows\Microsoft.NET\Framework64\v2.0.50727\mscorwks.dll' を読み込みました
'ShowPlatformInfo.exe': 'C:\Windows\winsxs\amd64_microsoft.vc80.crt_1fc8b3b9a1e18e3b_8.0.50727.6195_none_88e41e092fab0294\msvcr80.dll' を読み込みました
'ShowPlatformInfo.exe': 'C:\Windows\System32\shell32.dll' を読み込みました
'ShowPlatformInfo.exe': 'C:\Windows\System32\profapi.dll' を読み込みました
'ShowPlatformInfo.exe': 'C:\Windows\assembly\NativeImages_v2.0.50727_64\mscorlib\18df8e7002edf6bcac8d375bc78f89f6\mscorlib.ni.dll' を読み込みました
'ShowPlatformInfo.exe': 'C:\Windows\System32\cryptbase.dll' を読み込みました
'ShowPlatformInfo.exe': 'C:\Windows\Microsoft.NET\Framework64\v2.0.50727\Culture.dll' を読み込みました
'ShowPlatformInfo.exe': 'C:\Windows\Microsoft.NET\Framework64\v2.0.50727\Culture.dll' をアンロード
'ShowPlatformInfo.exe': 'C:\Windows\Microsoft.NET\Framework64\v2.0.50727\mscorjit.dll' を読み込みました
'ShowPlatformInfo.exe': 'C:\Windows\assembly\NativeImages_v2.0.50727_64\System\0686b54cdf066c81ef3e9dd79e9660c2\System.ni.dll' を読み込みました
'ShowPlatformInfo.exe': 'C:\Windows\System32\cryptsp.dll' を読み込みました
'ShowPlatformInfo.exe': 'C:\Windows\System32\rsaenh.dll' を読み込みました
'ShowPlatformInfo.exe': 'C:\Windows\System32\nvcuda.dll' を読み込みました。バイナリはデバッグ情報と一緒にビルドされませんでした。
'ShowPlatformInfo.exe': 'C:\Windows\System32\dwmapi.dll' を読み込みました
'ShowPlatformInfo.exe': 'C:\Windows\System32\dwmapi.dll' をアンロード
'ShowPlatformInfo.exe': 'C:\Windows\System32\nvapi64.dll' を読み込みました
'ShowPlatformInfo.exe': 'C:\Windows\System32\version.dll' を読み込みました
'ShowPlatformInfo.exe': 'C:\Windows\System32\wintrust.dll' を読み込みました
'ShowPlatformInfo.exe': 'C:\Windows\System32\crypt32.dll' を読み込みました
'ShowPlatformInfo.exe': 'C:\Windows\System32\msasn1.dll' を読み込みました
スレッド 'Win64 スレッド' (0x1b74) はコード 0 (0x0) で終了しました。
スレッド 'Win64 スレッド' (0x458) はコード 0 (0x0) で終了しました。
プログラム '[5704] ShowPlatformInfo.exe: ネイティブ' はコード 0 (0x0) で終了しました。


<デバッグなしで開始した結果>(プラットフォーム情報を取得するプログラム)
Number of Platform(s) : 1
Platform plofile : FULL_PLOFILE
Platform version : OpenCL 1.1 CUDA 4.1.1
Platform name : NVIDIA CUDA
Platform vender : NVIDIA Corporation
Platform extensions: cl_khr_byte_addressable_store cl_khr_icd cl_khr_gl_sharing cl_nv_d3d9_sharing cl_nv_d3d10_sharing
cl_khr_d3d10_sharing cl_nv_d3d11_sharing cl_nv_compiler_options cl_nv_device_attribute_query cl_nv_pragma_unroll

--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

<ビルドした結果>(行列の和を求めるプログラム)
1>------ すべてのリビルド開始: プロジェクト: List 4.3 4.4 4.5, 構成: Debug x64 ------
1>プロジェクト 'List 4.3 4.4 4.5'、構成 'Debug|x64' の中間出力ファイルを削除しています。
1>コンパイルしています...
1>main.cpp
1>マニフェストをリソースにコンパイルしています...
1>Microsoft (R) Windows (R) Resource Compiler Version 6.1.7600.16385
1>Copyright (C) Microsoft Corporation. All rights reserved.
1>リンクしています...
1>LINK : C:\Users\Documents\Visual Studio 2008\Projects\List 4.3 4.4 4.5\x64\Debug\List 4.3 4.4 4.5.exe not found or not built by the last incremental link; performing full link
1>マニフェストを埋め込んでいます...
1>Microsoft (R) Windows (R) Resource Compiler Version 6.1.7600.16385
1>Copyright (C) Microsoft Corporation. All rights reserved.
1>ビルドログは "file://c:\Users\Documents\Visual Studio 2008\Projects\List 4.3 4.4 4.5\List 4.3 4.4 4.5\x64\Debug\BuildLog.htm" に保存されました。
1>List 4.3 4.4 4.5 - エラー 0、警告 0
========== すべてリビルド: 1 正常終了、0 失敗、0 スキップ ==========

<デバッグした結果>(行列の和を求めるプログラム)
'List 4.3 4.4 4.5.exe': 'C:\Users\kuro\Documents\Visual Studio 2008\Projects\List 4.3 4.4 4.5\x64\Debug\List 4.3 4.4 4.5.exe' を読み込みました。シンボルが読み込まれました。
'List 4.3 4.4 4.5.exe': 'C:\Windows\System32\ntdll.dll' を読み込みました
'List 4.3 4.4 4.5.exe': 'C:\Windows\System32\kernel32.dll' を読み込みました
'List 4.3 4.4 4.5.exe': 'C:\Windows\System32\KernelBase.dll' を読み込みました
'List 4.3 4.4 4.5.exe': 'C:\Windows\System32\OpenCL.dll' を読み込みました。バイナリはデバッグ情報と一緒にビルドされませんでした。
'List 4.3 4.4 4.5.exe': 'C:\Windows\System32\advapi32.dll' を読み込みました
'List 4.3 4.4 4.5.exe': 'C:\Windows\System32\msvcrt.dll' を読み込みました
'List 4.3 4.4 4.5.exe': 'C:\Windows\System32\sechost.dll' を読み込みました
'List 4.3 4.4 4.5.exe': 'C:\Windows\System32\rpcrt4.dll' を読み込みました
'List 4.3 4.4 4.5.exe': 'C:\Windows\winsxs\amd64_microsoft.vc90.debugcrt_1fc8b3b9a1e18e3b_9.0.21022.8_none_4ec74c6b3093419c\msvcr90d.dll' を読み込みました
'List 4.3 4.4 4.5.exe': 'C:\Windows\System32\nvcuda.dll' を読み込みました。バイナリはデバッグ情報と一緒にビルドされませんでした。
'List 4.3 4.4 4.5.exe': 'C:\Windows\System32\user32.dll' を読み込みました
'List 4.3 4.4 4.5.exe': 'C:\Windows\System32\gdi32.dll' を読み込みました
'List 4.3 4.4 4.5.exe': 'C:\Windows\System32\lpk.dll' を読み込みました
'List 4.3 4.4 4.5.exe': 'C:\Windows\System32\usp10.dll' を読み込みました
'List 4.3 4.4 4.5.exe': 'C:\Windows\System32\setupapi.dll' を読み込みました
'List 4.3 4.4 4.5.exe': 'C:\Windows\System32\cfgmgr32.dll' を読み込みました
'List 4.3 4.4 4.5.exe': 'C:\Windows\System32\oleaut32.dll' を読み込みました
'List 4.3 4.4 4.5.exe': 'C:\Windows\System32\ole32.dll' を読み込みました
'List 4.3 4.4 4.5.exe': 'C:\Windows\System32\devobj.dll' を読み込みました
'List 4.3 4.4 4.5.exe': 'C:\Windows\System32\shell32.dll' を読み込みました
'List 4.3 4.4 4.5.exe': 'C:\Windows\System32\shlwapi.dll' を読み込みました
'List 4.3 4.4 4.5.exe': 'C:\Windows\System32\imm32.dll' を読み込みました
'List 4.3 4.4 4.5.exe': 'C:\Windows\System32\msctf.dll' を読み込みました
'List 4.3 4.4 4.5.exe': 'C:\Windows\System32\nvinitx.dll' を読み込みました
'List 4.3 4.4 4.5.exe': 'C:\Program Files\NVIDIA Corporation\coprocmanager\detoured.dll' を読み込みました
'List 4.3 4.4 4.5.exe': 'C:\Program Files\NVIDIA Corporation\coprocmanager\Nvd3d9wrapx.dll' を読み込みました
'List 4.3 4.4 4.5.exe': 'C:\Program Files\NVIDIA Corporation\coprocmanager\nvdxgiwrapx.dll' を読み込みました
'List 4.3 4.4 4.5.exe': 'C:\Windows\System32\dwmapi.dll' を読み込みました
'List 4.3 4.4 4.5.exe': 'C:\Windows\System32\dwmapi.dll' をアンロード
'List 4.3 4.4 4.5.exe': 'C:\Windows\System32\nvapi64.dll' を読み込みました
'List 4.3 4.4 4.5.exe': 'C:\Windows\System32\version.dll' を読み込みました
'List 4.3 4.4 4.5.exe': 'C:\Windows\System32\wintrust.dll' を読み込みました
'List 4.3 4.4 4.5.exe': 'C:\Windows\System32\crypt32.dll' を読み込みました
'List 4.3 4.4 4.5.exe': 'C:\Windows\System32\msasn1.dll' を読み込みました
プログラム '[5936] List 4.3 4.4 4.5.exe: ネイティブ' はコード 1 (0x1) で終了しました。


<デバッグなしで開始した結果>(行列の和を求めるプログラム)
clCreateContextType failed
Invalid platform

--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
softya(ソフト屋) さんが書きました:32bit/64bitの区別や使用したバージョンの組み合わせなどもう一度見なおして書きだして下さい。
32bitプラットフォームでの結果を覚えていないので、これから32bitプラットフォームで以前の2つのプログラムを動かして結果を出してもいいですか?


上記以外でもっと具体的にここを、こんなところが知りたい、とお思いになられましたら、遠慮なくおっしゃって下さい。

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

Re: OpenCLのプログラムがうまくいきません・・・

#23

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

<デバッグした結果>(プラットフォーム情報を取得するプログラム)
の場合、プログラムの最初に#include <conio.h>と最後に_getch();を入れればウィンドウが閉じないのでなにか表示されていれば確認できると思います。
<デバッグした結果>(行列の和を求めるプログラム)
についても同様にコンソールに何が表示されているか確認して下さい。

コンソールは右クリック→範囲指定→ENTERで内容コピーすることが可能ですので出来れば貼りつけてもらうと良いと思います。
32bitプラットフォームでの結果を覚えていないので、これから32bitプラットフォームで以前の2つのプログラムを動かして結果を出してもいいですか?
これもお願いします。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。

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

Re: OpenCLのプログラムがうまくいきません・・・

#24

投稿記事 by kuro » 14年前

softya(ソフト屋) さんが書きました:これもお願いします。
<ビルドした結果>(プラットフォーム情報を取得するプログラム)
1>------ すべてのリビルド開始: プロジェクト: ShowPlatformInfo, 構成: Debug Win32 ------
1>プロジェクト 'ShowPlatformInfo'、構成 'Debug|Win32' の中間出力ファイルを削除しています。
1>コンパイルしています...
1>main.cpp
1>マネージ リソースをコンパイルしています...
1>Read in 0 resources from "c:\Users\kuro\Documents\Visual Studio 2008\Projects\ShowPlatformInfo\ShowPlatformInfo\main.resx"
1>Writing resource file... Done.
1>リンクしています...
1>main.obj : warning LNK4248: 未解決の typeref トークン (0100000F) ('_cl_platform_id') です。イメージを実行できません。
1>マニフェストを埋め込んでいます...
1>ビルドログは "file://c:\Users\kuro\Documents\Visual Studio 2008\Projects\ShowPlatformInfo\ShowPlatformInfo\Debug\BuildLog.htm" に保存されました。
1>ShowPlatformInfo - エラー 0、警告 1
========== すべてリビルド: 1 正常終了、0 失敗、0 スキップ ==========


<デバッグした結果>(プラットフォーム情報を取得するプログラム)
'ShowPlatformInfo.exe': 'C:\Users\kuro\Documents\Visual Studio 2008\Projects\ShowPlatformInfo\Debug\ShowPlatformInfo.exe' を読み込みました。シンボルが読み込まれました。
'ShowPlatformInfo.exe': 'C:\Windows\SysWOW64\ntdll.dll' を読み込みました
'ShowPlatformInfo.exe': 'C:\Windows\SysWOW64\mscoree.dll' を読み込みました
'ShowPlatformInfo.exe': 'C:\Windows\SysWOW64\kernel32.dll' を読み込みました
'ShowPlatformInfo.exe': 'C:\Windows\SysWOW64\KernelBase.dll' を読み込みました
'ShowPlatformInfo.exe': 'C:\Windows\winsxs\x86_microsoft.vc90.debugcrt_1fc8b3b9a1e18e3b_9.0.30729.1_none_bb1f6aa1308c35eb\msvcr90d.dll' を読み込みました。シンボルが読み込まれました。
'ShowPlatformInfo.exe': 'C:\Windows\SysWOW64\OpenCL.dll' を読み込みました。バイナリはデバッグ情報と一緒にビルドされませんでした。
'ShowPlatformInfo.exe': 'C:\Windows\SysWOW64\advapi32.dll' を読み込みました
'ShowPlatformInfo.exe': 'C:\Windows\SysWOW64\msvcrt.dll' を読み込みました
'ShowPlatformInfo.exe': 'C:\Windows\SysWOW64\sechost.dll' を読み込みました
'ShowPlatformInfo.exe': 'C:\Windows\SysWOW64\rpcrt4.dll' を読み込みました
'ShowPlatformInfo.exe': 'C:\Windows\SysWOW64\sspicli.dll' を読み込みました
'ShowPlatformInfo.exe': 'C:\Windows\SysWOW64\cryptbase.dll' を読み込みました
'ShowPlatformInfo.exe': 'C:\Windows\winsxs\x86_microsoft.vc90.debugcrt_1fc8b3b9a1e18e3b_9.0.30729.1_none_bb1f6aa1308c35eb\msvcm90d.dll' を読み込みました。シンボルが読み込まれました。
'ShowPlatformInfo.exe': 'C:\Windows\SysWOW64\ole32.dll' を読み込みました
'ShowPlatformInfo.exe': 'C:\Windows\SysWOW64\gdi32.dll' を読み込みました
'ShowPlatformInfo.exe': 'C:\Windows\SysWOW64\user32.dll' を読み込みました
'ShowPlatformInfo.exe': 'C:\Windows\SysWOW64\lpk.dll' を読み込みました
'ShowPlatformInfo.exe': 'C:\Windows\SysWOW64\usp10.dll' を読み込みました
'ShowPlatformInfo.exe': 'C:\Windows\SysWOW64\imm32.dll' を読み込みました
'ShowPlatformInfo.exe': 'C:\Windows\SysWOW64\msctf.dll' を読み込みました
'ShowPlatformInfo.exe': 'C:\Windows\SysWOW64\nvinit.dll' を読み込みました
'ShowPlatformInfo.exe': 'C:\Program Files (x86)\NVIDIA Corporation\coprocmanager\detoured.dll' を読み込みました
'ShowPlatformInfo.exe': 'C:\Program Files (x86)\NVIDIA Corporation\coprocmanager\Nvd3d9wrap.dll' を読み込みました
'ShowPlatformInfo.exe': 'C:\Windows\SysWOW64\setupapi.dll' を読み込みました
'ShowPlatformInfo.exe': 'C:\Windows\SysWOW64\cfgmgr32.dll' を読み込みました
'ShowPlatformInfo.exe': 'C:\Windows\SysWOW64\oleaut32.dll' を読み込みました
'ShowPlatformInfo.exe': 'C:\Windows\SysWOW64\devobj.dll' を読み込みました
'ShowPlatformInfo.exe': 'C:\Program Files (x86)\NVIDIA Corporation\coprocmanager\nvdxgiwrap.dll' を読み込みました
'ShowPlatformInfo.exe': 'C:\Windows\Microsoft.NET\Framework\v4.0.30319\mscoreei.dll' を読み込みました
'ShowPlatformInfo.exe': 'C:\Windows\SysWOW64\shlwapi.dll' を読み込みました
'ShowPlatformInfo.exe': 'C:\Windows\Microsoft.NET\Framework\v2.0.50727\mscorwks.dll' を読み込みました
'ShowPlatformInfo.exe': 'C:\Windows\winsxs\x86_microsoft.vc80.crt_1fc8b3b9a1e18e3b_8.0.50727.6195_none_d09154e044272b9a\msvcr80.dll' を読み込みました
'ShowPlatformInfo.exe': 'C:\Windows\SysWOW64\shell32.dll' を読み込みました
'ShowPlatformInfo.exe': 'C:\Windows\SysWOW64\profapi.dll' を読み込みました
'ShowPlatformInfo.exe': 'C:\Windows\Microsoft.NET\Framework\v2.0.50727\Culture.dll' を読み込みました
'ShowPlatformInfo.exe': 'C:\Windows\Microsoft.NET\Framework\v2.0.50727\Culture.dll' をアンロード
'ShowPlatformInfo.exe': 'C:\Windows\assembly\NativeImages_v2.0.50727_32\mscorlib\a1a82db68b3badc7c27ea1f6579d22c5\mscorlib.ni.dll' を読み込みました
'ShowPlatformInfo.exe' (マネージ型): 'C:\Windows\assembly\GAC_32\mscorlib\2.0.0.0__b77a5c561934e089\mscorlib.dll' が読み込まれました
'ShowPlatformInfo.exe': 'ImageAtBase0x5dff0000' を読み込みました。シンボルが読み込まれていません。
'ShowPlatformInfo.exe': 'ImageAtBase0x2550000' を読み込みました。シンボルが読み込まれていません。
'ShowPlatformInfo.exe': 'ImageAtBase0x5dff0000' をアンロード
'ShowPlatformInfo.exe': 'C:\Windows\assembly\GAC_MSIL\mscorlib.resources\2.0.0.0_ja_b77a5c561934e089\mscorlib.resources.dll' を読み込みました。バイナリはデバッグ情報と一緒にビルドされませんでした。
'ShowPlatformInfo.exe' (マネージ型): 'C:\Windows\assembly\GAC_MSIL\mscorlib.resources\2.0.0.0_ja_b77a5c561934e089\mscorlib.resources.dll' が読み込まれました
'ShowPlatformInfo.exe' (マネージ型): 'c:\Users\kuro\Documents\Visual Studio 2008\Projects\ShowPlatformInfo\Debug\ShowPlatformInfo.exe' が読み込まれました。シンボルが読み込まれました。
'ShowPlatformInfo.exe': 'C:\Windows\Microsoft.NET\Framework\v2.0.50727\mscorjit.dll' を読み込みました
'ShowPlatformInfo.exe': 'C:\Windows\Microsoft.NET\Framework\v2.0.50727\diasymreader.dll' を読み込みました
'ShowPlatformInfo.exe': 'C:\Windows\SysWOW64\cryptsp.dll' を読み込みました
'ShowPlatformInfo.exe': 'C:\Windows\SysWOW64\rsaenh.dll' を読み込みました
'ShowPlatformInfo.exe' (マネージ型): 'C:\Windows\WinSxS\x86_microsoft.vc90.debugcrt_1fc8b3b9a1e18e3b_9.0.30729.1_none_bb1f6aa1308c35eb\msvcm90d.dll' が読み込まれました。シンボルが読み込まれました。
'ShowPlatformInfo.exe': 'C:\Windows\assembly\NativeImages_v2.0.50727_32\System\abab08afa60a6f06bdde0fcc9649c379\System.ni.dll' を読み込みました
'ShowPlatformInfo.exe' (マネージ型): 'C:\Windows\assembly\GAC_MSIL\System\2.0.0.0__b77a5c561934e089\System.dll' が読み込まれました
'ShowPlatformInfo.exe': 'C:\Windows\SysWOW64\nvcuda.dll' を読み込みました。バイナリはデバッグ情報と一緒にビルドされませんでした。
'ShowPlatformInfo.exe': 'C:\Windows\SysWOW64\dwmapi.dll' を読み込みました
'ShowPlatformInfo.exe': 'C:\Windows\SysWOW64\dwmapi.dll' をアンロード
'ShowPlatformInfo.exe': 'C:\Windows\SysWOW64\nvapi.dll' を読み込みました
'ShowPlatformInfo.exe': 'C:\Windows\SysWOW64\version.dll' を読み込みました
'ShowPlatformInfo.exe': 'C:\Windows\SysWOW64\wintrust.dll' を読み込みました
'ShowPlatformInfo.exe': 'C:\Windows\SysWOW64\crypt32.dll' を読み込みました
'ShowPlatformInfo.exe': 'C:\Windows\SysWOW64\msasn1.dll' を読み込みました
スレッド 'Win32 スレッド' (0xb6c) はコード 0 (0x0) で終了しました。
スレッド 'Win32 スレッド' (0x1b9c) はコード 0 (0x0) で終了しました。
スレッド 'Win32 スレッド' (0x1ae4) はコード 0 (0x0) で終了しました。
プログラム '[4516] ShowPlatformInfo.exe: マネージ' はコード 0 (0x0) で終了しました。
プログラム '[4516] ShowPlatformInfo.exe: ネイティブ' はコード 0 (0x0) で終了しました。


<デバッグなしで開始した結果>(プラットフォーム情報を取得するプログラム)
Number of Platform(s) : 1
Platform plofile : FULL_PLOFILE
Platform version : OpenCL 1.1 CUDA 4.1.1
Platform name : NVIDIA CUDA
Platform vender : NVIDIA Corporation
Platform extensions: cl_khr_byte_addressable_store cl_khr_icd cl_khr_gl_sharing cl_nv_d3d9_sharing cl_nv_d3d10_sharing
cl_khr_d3d10_sharing cl_nv_d3d11_sharing cl_nv_compiler_options cl_nv_device_attribute_query cl_nv_pragma_unroll

--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

<ビルドした結果>(行列の和を求めるプログラム)
1>------ すべてのリビルド開始: プロジェクト: List 4.3 4.4 4.5, 構成: Debug Win32 ------
1>プロジェクト 'List 4.3 4.4 4.5'、構成 'Debug|Win32' の中間出力ファイルを削除しています。
1>コンパイルしています...
1>main.cpp
1>マニフェストをリソースにコンパイルしています...
1>Microsoft (R) Windows (R) Resource Compiler Version 6.1.7600.16385
1>Copyright (C) Microsoft Corporation. All rights reserved.
1>リンクしています...
1>LINK : 前回のインクリメンタル リンクで C:\Users\kuro\Documents\Visual Studio 2008\Projects\List 4.3 4.4 4.5\Debug\List 4.3 4.4 4.5.exe が見つからなかったか、ビルドされませんでした。フル リンクを行います。
1>マニフェストを埋め込んでいます...
1>Microsoft (R) Windows (R) Resource Compiler Version 6.1.7600.16385
1>Copyright (C) Microsoft Corporation. All rights reserved.
1>ビルドログは "file://c:\Users\kuro\Documents\Visual Studio 2008\Projects\List 4.3 4.4 4.5\List 4.3 4.4 4.5\Debug\BuildLog.htm" に保存されました。
1>List 4.3 4.4 4.5 - エラー 0、警告 0
========== すべてリビルド: 1 正常終了、0 失敗、0 スキップ ==========


<デバッグした結果>(行列の和を求めるプログラム)
'List 4.3 4.4 4.5.exe': 'C:\Users\kuro\Documents\Visual Studio 2008\Projects\List 4.3 4.4 4.5\Debug\List 4.3 4.4 4.5.exe' を読み込みました。シンボルが読み込まれました。
'List 4.3 4.4 4.5.exe': 'C:\Windows\SysWOW64\ntdll.dll' を読み込みました
'List 4.3 4.4 4.5.exe': 'C:\Windows\SysWOW64\kernel32.dll' を読み込みました
'List 4.3 4.4 4.5.exe': 'C:\Windows\SysWOW64\KernelBase.dll' を読み込みました
'List 4.3 4.4 4.5.exe': 'C:\Windows\SysWOW64\OpenCL.dll' を読み込みました。バイナリはデバッグ情報と一緒にビルドされませんでした。
'List 4.3 4.4 4.5.exe': 'C:\Windows\SysWOW64\advapi32.dll' を読み込みました
'List 4.3 4.4 4.5.exe': 'C:\Windows\SysWOW64\msvcrt.dll' を読み込みました
'List 4.3 4.4 4.5.exe': 'C:\Windows\SysWOW64\sechost.dll' を読み込みました
'List 4.3 4.4 4.5.exe': 'C:\Windows\SysWOW64\rpcrt4.dll' を読み込みました
'List 4.3 4.4 4.5.exe': 'C:\Windows\SysWOW64\sspicli.dll' を読み込みました
'List 4.3 4.4 4.5.exe': 'C:\Windows\SysWOW64\cryptbase.dll' を読み込みました
'List 4.3 4.4 4.5.exe': 'C:\Windows\winsxs\x86_microsoft.vc90.debugcrt_1fc8b3b9a1e18e3b_9.0.30729.1_none_bb1f6aa1308c35eb\msvcr90d.dll' を読み込みました。シンボルが読み込まれました。
'List 4.3 4.4 4.5.exe': 'C:\Windows\SysWOW64\nvcuda.dll' を読み込みました。バイナリはデバッグ情報と一緒にビルドされませんでした。
'List 4.3 4.4 4.5.exe': 'C:\Windows\SysWOW64\user32.dll' を読み込みました
'List 4.3 4.4 4.5.exe': 'C:\Windows\SysWOW64\gdi32.dll' を読み込みました
'List 4.3 4.4 4.5.exe': 'C:\Windows\SysWOW64\lpk.dll' を読み込みました
'List 4.3 4.4 4.5.exe': 'C:\Windows\SysWOW64\usp10.dll' を読み込みました
'List 4.3 4.4 4.5.exe': 'C:\Windows\SysWOW64\setupapi.dll' を読み込みました
'List 4.3 4.4 4.5.exe': 'C:\Windows\SysWOW64\cfgmgr32.dll' を読み込みました
'List 4.3 4.4 4.5.exe': 'C:\Windows\SysWOW64\oleaut32.dll' を読み込みました
'List 4.3 4.4 4.5.exe': 'C:\Windows\SysWOW64\ole32.dll' を読み込みました
'List 4.3 4.4 4.5.exe': 'C:\Windows\SysWOW64\devobj.dll' を読み込みました
'List 4.3 4.4 4.5.exe': 'C:\Windows\SysWOW64\shell32.dll' を読み込みました
'List 4.3 4.4 4.5.exe': 'C:\Windows\SysWOW64\shlwapi.dll' を読み込みました
'List 4.3 4.4 4.5.exe': 'C:\Windows\SysWOW64\imm32.dll' を読み込みました
'List 4.3 4.4 4.5.exe': 'C:\Windows\SysWOW64\msctf.dll' を読み込みました
'List 4.3 4.4 4.5.exe': 'C:\Windows\SysWOW64\nvinit.dll' を読み込みました
'List 4.3 4.4 4.5.exe': 'C:\Program Files (x86)\NVIDIA Corporation\coprocmanager\detoured.dll' を読み込みました
'List 4.3 4.4 4.5.exe': 'C:\Program Files (x86)\NVIDIA Corporation\coprocmanager\Nvd3d9wrap.dll' を読み込みました
'List 4.3 4.4 4.5.exe': 'C:\Program Files (x86)\NVIDIA Corporation\coprocmanager\nvdxgiwrap.dll' を読み込みました
'List 4.3 4.4 4.5.exe': 'C:\Windows\SysWOW64\dwmapi.dll' を読み込みました
'List 4.3 4.4 4.5.exe': 'C:\Windows\SysWOW64\dwmapi.dll' をアンロード
'List 4.3 4.4 4.5.exe': 'C:\Windows\SysWOW64\nvapi.dll' を読み込みました
'List 4.3 4.4 4.5.exe': 'C:\Windows\SysWOW64\version.dll' を読み込みました
'List 4.3 4.4 4.5.exe': 'C:\Windows\SysWOW64\wintrust.dll' を読み込みました
'List 4.3 4.4 4.5.exe': 'C:\Windows\SysWOW64\crypt32.dll' を読み込みました
'List 4.3 4.4 4.5.exe': 'C:\Windows\SysWOW64\msasn1.dll' を読み込みました
プログラム '[7036] List 4.3 4.4 4.5.exe: ネイティブ' はコード 1 (0x1) で終了しました。


<デバッグなしで開始した結果>(行列の和を求めるプログラム)
clCreateContextType failed
Invalid platform

--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
softya(ソフト屋) さんが書きました:<デバッグした結果>(プラットフォーム情報を取得するプログラム)
の場合、プログラムの最初に#include <conio.h>と最後に_getch();を入れればウィンドウが閉じないのでなにか表示されていれば確認できると思います。
<デバッグした結果>(行列の和を求めるプログラム)
についても同様にコンソールに何が表示されているか確認して下さい。
#include <stdio.h>の上に#include <conio.h>を挿入すればよいのでしょうか?
最後に_getch();を入れれば、とは、どの最後でしょうか?プログラムの最後の行でしょうか?


[追記]とりあえずネットに落ちてあるサンプルプログラムを動かそうと思っているのですが、
http://www.fixstars.com/ja/company/book ... ample.html
にあるサンプルコードをダウンロードしたのですが、どうしたらVisual C++ 2008 Express Editionでビルドできますか?

ISLe
記事: 2650
登録日時: 15年前
連絡を取る:

Re: OpenCLのプログラムがうまくいきません・・・

#25

投稿記事 by ISLe » 14年前

やっとPCの型番が判明しましたね。
i7ということはLB-T503ですか。
ということで型番とともにネットで検索したところOptimusが安定動作しないのはいまのところ仕様のようです。
このPCはBIOSでGeForceに固定することはできないということなのでアプリケーションプロファイルを工夫するしかなさそうです。
アプリケーションプロファイルがプリセットされている市販ゲームでも動いたり動かなかったりするらしいので運次第というところでしょうか。

IE9とFlashPlayer11の組み合わせでFlashのあるウェブページを見るとIE9を閉じるまで高パフォーマンスGPUに切り替わったままになる不具合があるらしいのでそれを逆手に取ることができるかもしれません。

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

Re: OpenCLのプログラムがうまくいきません・・・

#26

投稿記事 by kuro » 14年前

ISLe さんが書きました:ということで型番とともにネットで検索したところOptimusが安定動作しないのはいまのところ仕様のようです。
すみません。どのページで参照できますか?

[quote"ISLe"]IE9とFlashPlayer11の組み合わせでFlashのあるウェブページを見るとIE9を閉じるまで高パフォーマンスGPUに切り替わったままになる不具合があるらしいのでそれを逆手に取ることができるかもしれません。[/quote]

すみません。あまり知識がないもので、理解できませんでした。具体的にどういうことなのでしょうか?

ISLe
記事: 2650
登録日時: 15年前
連絡を取る:

Re: OpenCLのプログラムがうまくいきません・・・

#27

投稿記事 by ISLe » 14年前

kuro さんが書きました:
ISLe さんが書きました:ということで型番とともにネットで検索したところOptimusが安定動作しないのはいまのところ仕様のようです。
すみません。どのページで参照できますか?
『"LB-T503" Optimus 無効』でググってヒットしたページを片っ端から読んで巷の評判を調べました。
Optimus発表時のニュース記事やNVIDIAの公式ページを見てもハードウェア機構の説明はあっても、何を基準にGPUが切り替わるのかの明確な説明は無く推測の域を出ません。
kuro さんが書きました:
ISLe さんが書きました:IE9とFlashPlayer11の組み合わせでFlashのあるウェブページを見るとIE9を閉じるまで高パフォーマンスGPUに切り替わったままになる不具合があるらしいのでそれを逆手に取ることができるかもしれません。
すみません。あまり知識がないもので、理解できませんでした。具体的にどういうことなのでしょうか?
そのまんまですけど。
最新のFlashPlayerプラグインをインストールします。
IE9でFlashが使われているウェブページを閲覧します。
※古いドライバだとここでクラッシュすることがあるそうです。
IE9を閉じるまでNVIDIA高パフォーマンスGPUが有効のままになります。
そこでIE9を閉じないでVisual C++を起動してデバッグすれば動くかもしれません。

知識がないならなおさらOptimusなんて厄介なものを相手にしないで、BIOSで統合型GPUを無効にできるマシンを使って開発するほうが良いと思いますけど。
そちらで作成した行列の和を求めるプログラムの実行ファイルを添付してもらってこちらで実行できれば問題はOptimusだと絞り込めるのでは。

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

Re: OpenCLのプログラムがうまくいきません・・・

#28

投稿記事 by kuro » 14年前

ISLe さんが書きました:知識がないならなおさらOptimusなんて厄介なものを相手にしないで、BIOSで統合型GPUを無効にできるマシンを使って開発するほうが良いと思いますけど。
そちらで作成した行列の和を求めるプログラムの実行ファイルを添付してもらってこちらで実行できれば問題はOptimusだと絞り込めるのでは。
全くその通りです。しかし現状、BIOSで統合型GPUを無効にできるマシンが手元にないもので・・・
確かに、BIOSで統合型GPUを無効にできるマシンが手元にあれば、問題はOptimusだと絞り込むことが出来ますね。

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

Re: OpenCLのプログラムがうまくいきません・・・

#29

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

_getch()はプログラムコードの最後のmainのreturn 0;の直前で停止させるために入れます。

「_getch() で表示を確認」
http://www13.plala.or.jp/kmaeda/cpp_cli/getch.htm
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。

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

Re: OpenCLのプログラムがうまくいきません・・・

#30

投稿記事 by kuro » 14年前

プラットフォーム情報を取得するプログラムでは、表示させることが出来ましたが、行列和を求めるプログラムではうまくいきませんでした。挿入する場所がいけなかったのでしょうか・・・?
プラットフォーム情報を取得するプログラムで表示させたのですが、デバッグなしで開始、を実行したときと同じものが出ました。

Number of Platform(s) : 1
Platform plofile : FULL_PLOFILE
Platform version : OpenCL 1.1 CUDA 4.1.1
Platform name : NVIDIA CUDA
Platform vender : NVIDIA Corporation
Platform extensions: cl_khr_byte_addressable_store cl_khr_icd cl_khr_gl_sharing cl_nv_d3d9_sharing cl_nv_d3d10_sharing
cl_khr_d3d10_sharing cl_nv_d3d11_sharing cl_nv_compiler_options cl_nv_device_attribute_query cl_nv_pragma_unroll

--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

以前にも書いたのですが、とりあえずネットに落ちてあるサンプルプログラムを動かそうと思っているのですが、
http://www.fixstars.com/ja/company/book ... ample.html
にあるサンプルコードをダウンロードしたのですが、どうしたらVisual C++ 2008 Express Editionでビルドできますか?よく分かりません。

--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

申し訳ありません。重要なことを1つ忘れていました。

ドライバやSDKなどをいろいろいじっている時だと思うのですが、いつの間にか、プラットフォーム情報を取得するプログラムにおいて main.h というヘッダファイルが存在していました。行列和を求めるプログラムには存在していません。
ちょっと怖くて削除もできないですしよく分からない状況なので、見て頂けないでしょうか?

コード:

#pragma once

using namespace System;
using namespace System::ComponentModel;
using namespace System::Collections;
using namespace System::Windows::Forms;
using namespace System::Data;
using namespace System::Drawing;


namespace ShowPlatformInfo {

	/// <summary>
	/// main の概要
	///
	/// 警告: このクラスの名前を変更する場合、このクラスが依存するすべての .resx ファイルに関連付けられた
	///          マネージ リソース コンパイラ ツールに対して 'Resource File Name' プロパティを
	///          変更する必要があります。この変更を行わないと、
	///          デザイナと、このフォームに関連付けられたローカライズ済みリソースとが、
	///          正しく相互に利用できなくなります。
	/// </summary>
	public ref class main : public System::Windows::Forms::Form
	{
	public:
		main(void)
		{
			InitializeComponent();
			//
			//TODO: ここにコンストラクタ コードを追加します
			//
		}

	protected:
		/// <summary>
		/// 使用中のリソースをすべてクリーンアップします。
		/// </summary>
		~main()
		{
			if (components)
			{
				delete components;
			}
		}

	private:
		/// <summary>
		/// 必要なデザイナ変数です。
		/// </summary>
		System::ComponentModel::Container ^components;

#pragma region Windows Form Designer generated code
		/// <summary>
		/// デザイナ サポートに必要なメソッドです。このメソッドの内容を
		/// コード エディタで変更しないでください。
		/// </summary>
		void InitializeComponent(void)
		{
			this->SuspendLayout();
			// 
			// main
			// 
			this->AutoScaleDimensions = System::Drawing::SizeF(6, 12);
			this->AutoScaleMode = System::Windows::Forms::AutoScaleMode::Font;
			this->ClientSize = System::Drawing::Size(313, 262);
			this->Name = L"main";
			this->Text = L"main";
			this->ResumeLayout(false);

		}
#pragma endregion
	};
}

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

Re: OpenCLのプログラムがうまくいきません・・・

#31

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

すいません質問が多くて見逃しが多いみたいです。(1)(2)(3)とか番号を書いてもらうと見逃しづらく成るかも。

(1)
kuro さんが書きました:以前にも書いたのですが、とりあえずネットに落ちてあるサンプルプログラムを動かそうと思っているのですが、
http://www.fixstars.com/ja/company/book ... ample.html
にあるサンプルコードをダウンロードしたのですが、どうしたらVisual C++ 2008 Express Editionでビルドできますか?よく分かりません。
nvidia.slnとかあると思いますのでダブルクリックで開いてみてください。

(2)
とりあえずmain.hはマネージド(.NetFrameWork)の物なのでプロジェクトから外してみてください。
ソリューション・エクスプローラから右クリックで削除してクリアを選べばファイルは残ります。
あとmain.hをインクルードしている所も//でコメント化してください。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。

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

Re: OpenCLのプログラムがうまくいきません・・・

#32

投稿記事 by kuro » 14年前

(1)
softya(ソフト屋) さんが書きました:nvidia.slnとかあると思いますのでダブルクリックで開いてみてください。
nvidia.slnが見つかりません。nvidiaのフォルダはあるのですが・・・ファイルの種類は何でしょうか?


(2)
softya(ソフト屋) さんが書きました:とりあえずmain.hはマネージド(.NetFrameWork)の物なのでプロジェクトから外してみてください。
ソリューション・エクスプローラから右クリックで削除してクリアを選べばファイルは残ります。
あとmain.hをインクルードしている所も//でコメント化してください。
ソリューション・エクスプローラから右クリックで削除してクリアを選びました。
main.hをインクルードしている所、が見つかりません。main.cppにはインクルードしている所はないように思われますが・・・

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

Re: OpenCLのプログラムがうまくいきません・・・

#33

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

kuro さんが書きました:(1)
softya(ソフト屋) さんが書きました:nvidia.slnとかあると思いますのでダブルクリックで開いてみてください。
nvidia.slnが見つかりません。nvidiaのフォルダはあるのですが・・・ファイルの種類は何でしょうか?
ファイルの種類ですか?
slnと言う拡張子でMicorsoft Visual Studio Solutionファイルです。
kuro さんが書きました: (2)
softya(ソフト屋) さんが書きました:とりあえずmain.hはマネージド(.NetFrameWork)の物なのでプロジェクトから外してみてください。
ソリューション・エクスプローラから右クリックで削除してクリアを選べばファイルは残ります。
あとmain.hをインクルードしている所も//でコメント化してください。
ソリューション・エクスプローラから右クリックで削除してクリアを選びました。
main.hをインクルードしている所、が見つかりません。main.cppにはインクルードしている所はないように思われますが・・・
コンパイルしたらどうなりますか?
それとShowPlatformInfo.exeのソリューションにはmain.cpp以外にもファイルがたくさんあるのでしょうか?
今までの情報ではmain.cppしか無いような印象を受けていましたが違うのですか?main.h自体も初耳でしたが。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。

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

Re: OpenCLのプログラムがうまくいきません・・・

#34

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

ShowPlatformInfoのプロジェクト全部をzip圧縮してファイル添付した貰った方が早いかもしれません。
ファイル添付は返信欄の下に「ファイル添付」タブがあるので、そこから行います。
[補足]サイズが大きくなるので拡張子ncbは削除して下さい。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。

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

Re: OpenCLのプログラムがうまくいきません・・・

#35

投稿記事 by kuro » 14年前

softya(ソフト屋) さんが書きました:ShowPlatformInfoのプロジェクト全部をzip圧縮してファイル添付した貰った方が早いかもしれません。
ファイル添付は返信欄の下に「ファイル添付」タブがあるので、そこから行います。
[補足]サイズが大きくなるので拡張子ncbは削除して下さい。
すみません。どれを参照したらよいですか?ファイルを選択したらその中が開くだけでファイルが選択されないのですが・・・
softya(ソフト屋) さんが書きました:ファイルの種類ですか?
slnと言う拡張子でMicorsoft Visual Studio Solutionファイルです。
見つかりました。が、ダブルクリックしてもVisual Studioの画面は表示されるのですが何もプログラムが表示されません。

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

Re: OpenCLのプログラムがうまくいきません・・・

#36

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

(2)
kuro さんが書きました: すみません。どれを参照したらよいですか?ファイルを選択したらその中が開くだけでファイルが選択されないのですが・・・
フォルダ全部を圧縮してください。

(1)
kuro さんが書きました:見つかりました。が、ダブルクリックしてもVisual Studioの画面は表示されるのですが何もプログラムが表示されません。
ソリューションエクスプローラに登録されているはずですが。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。

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

Re: OpenCLのプログラムがうまくいきません・・・

#37

投稿記事 by kuro » 14年前

softya(ソフト屋) さんが書きました:フォルダ全部を圧縮してください。
これで合っていますでしょうか?
softya(ソフト屋) さんが書きました:ソリューションエクスプローラに登録されているはずですが。
登録されていました。しかし、このままではビルドできないのですが・・・
添付ファイル
ShowPlatformInfo.zip
(6.76 MiB) ダウンロード数: 175 回

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

Re: OpenCLのプログラムがうまくいきません・・・

#38

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

ファイルはOKですので、これから調べますね。
kuro さんが書きました:登録されていました。しかし、このままではビルドできないのですが・・・
状況は詳細に説明してもらって良いですか?
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。

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

Re: OpenCLのプログラムがうまくいきません・・・

#39

投稿記事 by kuro » 14年前

[quote"=softya(ソフト屋)"]状況は詳細に説明してもらって良いですか?[/quote]

nvidia.slnを開くと、Visual Studioの画面が出て、左にソリューション名が出るのですが、このままビルドすると、

1>------ ビルド開始: プロジェクト: nvidia, 構成: Debug Win32 ------
1>コンパイルしています...
1>online.cpp
1>c:\users\kuro\downloads\opencl_book_samples\samples\4-2\online\online.cpp : warning C4819: ファイルは、現在のコード ページ (932) で表示できない文字を含んでいます。データの損失を防ぐために、ファイルを Unicode 形式で保存してください。
1>c:\users\kuro\downloads\opencl_book_samples\samples\4-2\online\online.cpp(7) : fatal error C1083: include ファイルを開けません。'CL/cl.h': No such file or directory
1>ビルドログは "file://c:\Users\kuro\Downloads\OpenCL_book_samples\samples\4-2\online\vcproj\nvidia\nvidia\Debug\BuildLog.htm" に保存されました。
1>nvidia - エラー 1、警告 1
========== ビルド: 0 正常終了、1 失敗、0 更新不要、0 スキップ ==========

と出ました。
パスがデフォルトで設定されていたので、
追加のインクルードディレクトリ "C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v4.1\include"
追加のライブラリディレクトリ   "C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v4.1\lib\Win32"
追加の依存ファイルは同様にOpenCL.libでした。

に変更してビルドすると、

1>------ ビルド開始: プロジェクト: nvidia, 構成: Debug Win32 ------
1>コンパイルしています...
1>online.cpp
1>c:\users\kuro\downloads\opencl_book_samples\samples\4-2\online\online.cpp : warning C4819: ファイルは、現在のコード ページ (932) で表示できない文字を含んでいます。データの損失を防ぐために、ファイルを Unicode 形式で保存してください。
1>c:\users\kuro\downloads\opencl_book_samples\samples\4-2\online\online.cpp(35) : warning C4996: 'fopen': This function or variable may be unsafe. Consider using fopen_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details.
1> c:\program files (x86)\microsoft visual studio 9.0\vc\include\stdio.h(237) : 'fopen' の宣言を確認してください。
1>c:\users\kuro\downloads\opencl_book_samples\samples\4-2\online\online.cpp(46) : warning C4244: '=' : 'cl_int' から 'float' への変換です。データが失われる可能性があります。
1>マニフェストをリソースにコンパイルしています...
1>Microsoft (R) Windows (R) Resource Compiler Version 6.1.7600.16385
1>Copyright (C) Microsoft Corporation. All rights reserved.
1>リンクしています...
1>マニフェストを埋め込んでいます...
1>Microsoft (R) Windows (R) Resource Compiler Version 6.1.7600.16385
1>Copyright (C) Microsoft Corporation. All rights reserved.
1>ビルドログは "file://c:\Users\kuro\Downloads\OpenCL_book_samples\samples\4-2\online\vcproj\nvidia\nvidia\Debug\BuildLog.htm" に保存されました。
1>nvidia - エラー 0、警告 3
========== ビルド: 1 正常終了、0 失敗、0 更新不要、0 スキップ ==========

と表示されました。

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

Re: OpenCLのプログラムがうまくいきません・・・

#40

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

番号がロストしたので、適当に番号を振ります。
(1)サンプル
========== ビルド: 1 正常終了、0 失敗、0 更新不要、0 スキップ ==========
色々警告は出てますが、それなら実行できるはずですが出来ませんか?

(2)ShowPlatformInfo
プロジェクトに余分な情報が登録されています。
main.resx
main.h
は少なくとも不要ですね。これがエラーの原因です。
>main.obj : warning LNK4248: 未解決の typeref トークン (0100000F) ('_cl_platform_id') です。イメージを実行できません。
これです。

既にプロジェクトして組み込まれているので外すのが大変ですから別の名前でプロジェクトWin32コンソールのプロジェクトを作ってmain.cppだけを移したら問題なくコンパイル・実行されました。
[補足]ShowPlatformInfoの内容は既にZIPにしてあるので、ShowPlatformInfoフォルダごと消去して作りなおしても良いと思います。

あと、プロジェクト毎のライブラリ/インクルード追加は大変なのでこっちの方法で設定しておくと楽です。
例では[グラフィカルコンソール]と言うものを追加していますが、OpenCLのパスに置き換えて考えて下さい。

「わくわくプログラミング自習室|マニュアル」
http://www.i-libro.net/game/gconsole/whatsgcon.php
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。

ISLe
記事: 2650
登録日時: 15年前
連絡を取る:

Re: OpenCLのプログラムがうまくいきません・・・

#41

投稿記事 by ISLe » 14年前

kuro さんが書きました:
ISLe さんが書きました:そちらで作成した行列の和を求めるプログラムの実行ファイルを添付してもらってこちらで実行できれば問題はOptimusだと絞り込めるのでは。
確かに、BIOSで統合型GPUを無効にできるマシンが手元にあれば、問題はOptimusだと絞り込むことが出来ますね。
kuroさんの手元になくても実行ファイルを添付してくれれば、わたしのPCで動かしてみることができるわけですけど。
GeForce GTS 250だとスペック不足でしょうか。

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

Re: OpenCLのプログラムがうまくいきません・・・

#42

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

ISLe さんが書きました:
kuro さんが書きました:
ISLe さんが書きました:そちらで作成した行列の和を求めるプログラムの実行ファイルを添付してもらってこちらで実行できれば問題はOptimusだと絞り込めるのでは。
確かに、BIOSで統合型GPUを無効にできるマシンが手元にあれば、問題はOptimusだと絞り込むことが出来ますね。
kuroさんの手元になくても実行ファイルを添付してくれれば、わたしのPCで動かしてみることができるわけですけど。
GeForce GTS 250だとスペック不足でしょうか。
私のもGTS250ですね。とは言えデスクトップ用なので540Mより性能が上だと思います。
「GPUの性能比較」
http://hardware-navi.com/gpu.php
[540M] 672 MHz/1800 MHz/128 bit 96/16/4
[250] 738 MHz/2200 MHz/256 bit 128/64/16
シェーダユニットの数でも上回っていますね。
本格的にOpenCLするならGTX上位クラスのGPUが欲しくなるとは思いますけど。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。

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

Re: OpenCLのプログラムがうまくいきません・・・

#43

投稿記事 by kuro » 14年前

(1)
softya(ソフト屋) さんが書きました:1)サンプル
========== ビルド: 1 正常終了、0 失敗、0 更新不要、0 スキップ ==========
色々警告は出てますが、それなら実行できるはずですが出来ませんか?
実行できました。デバッグなしで開始させると、
Failed to load kernel
と表示されます。

(2)
softya(ソフト屋) さんが書きました:既にプロジェクトして組み込まれているので外すのが大変ですから別の名前でプロジェクトWin32コンソールのプロジェクトを作ってmain.cppだけを移したら問題なくコンパイル・実行されました。
[補足]ShowPlatformInfoの内容は既にZIPにしてあるので、ShowPlatformInfoフォルダごと消去して作りなおしても良いと思います。
ZIPファイルとShowPlatformInfoのフォルダを削除して、あらたに新しいソリューションを作る、と解釈してよろしいですか?
あと、main.cppを移す、というのがどう操作すればわからないんですけど、今あるmain.cppの内容をコピーして、新しく作ったソリューションのmain.cppにコピーする、という手法でもよいのでしょうか?
softya(ソフト屋) さんが書きました:あと、プロジェクト毎のライブラリ/インクルード追加は大変なのでこっちの方法で設定しておくと楽です。
例では[グラフィカルコンソール]と言うものを追加していますが、OpenCLのパスに置き換えて考えて下さい。

「わくわくプログラミング自習室|マニュアル」
http://www.i-libro.net/game/gconsole/whatsgcon.php
分かりました。やってみます。
ISLe さんが書きました:kuroさんの手元になくても実行ファイルを添付してくれれば、わたしのPCで動かしてみることができるわけですけど。
GeForce GTS 250だとスペック不足でしょうか。
先ほど添付したものは実行ファイルではないんですか?よく分からなくて・・・

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

Re: OpenCLのプログラムがうまくいきません・・・

#44

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

(1)
kuro さんが書きました:実行できました。デバッグなしで開始させると、
Failed to load kernel
と表示されます。
それは今のところ置いておきましょう。

(2)
kuro さんが書きました:ZIPファイルとShowPlatformInfoのフォルダを削除して、あらたに新しいソリューションを作る、と解釈してよろしいですか?
あと、main.cppを移す、というのがどう操作すればわからないんですけど、今あるmain.cppの内容をコピーして、新しく作ったソリューションのmain.cppにコピーする、という手法でもよいのでしょうか?
ZIPは別の場所にでも置いてくとしてShowPlatformInfoのフォルダは全部抹消してください。main.cppの内容をコピペでもOKです。プロジェクトを作るときにCLR関係は一切使わない事に注意して下さい。前回のShowPlatformInfoは何かCLR系を混ぜた形跡があります。

(3)
kuro さんが書きました:先ほど添付したものは実行ファイルではないんですか?よく分からなくて・・・
確かにexeは含んでいますが問題と成っている行列の方ではないですよ。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。

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

Re: OpenCLのプログラムがうまくいきません・・・

#45

投稿記事 by kuro » 14年前

(1)
softya(ソフト屋) さんが書きました:それは今のところ置いておきましょう。
わかりました。

(2)
softya(ソフト屋) さんが書きました:ZIPは別の場所にでも置いてくとしてShowPlatformInfoのフォルダは全部抹消してください。main.cppの内容をコピペでもOKです。プロジェクトを作るときにCLR関係は一切使わない事に注意して下さい。前回のShowPlatformInfoは何かCLR系を混ぜた形跡があります。
分かりました。慎重にやってみます。

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

Re: OpenCLのプログラムがうまくいきません・・・

#46

投稿記事 by kuro » 14年前

softya(ソフト屋) さんが書きました:ZIPは別の場所にでも置いてくとしてShowPlatformInfoのフォルダは全部抹消してください。main.cppの内容をコピペでもOKです。プロジェクトを作るときにCLR関係は一切使わない事に注意して下さい。前回のShowPlatformInfoは何かCLR系を混ぜた形跡があります。
やってみました。

1>------ ビルド開始: プロジェクト: ShowPlatformInfo, 構成: Debug Win32 ------
1>コンパイルしています...
1>main.cpp
1>マニフェストをリソースにコンパイルしています...
1>Microsoft (R) Windows (R) Resource Compiler Version 6.1.7600.16385
1>Copyright (C) Microsoft Corporation. All rights reserved.
1>リンクしています...
1>マニフェストを埋め込んでいます...
1>Microsoft (R) Windows (R) Resource Compiler Version 6.1.7600.16385
1>Copyright (C) Microsoft Corporation. All rights reserved.
1>ビルドログは "file://c:\Users\kuro\Documents\Visual Studio 2008\Projects\ShowPlatformInfo\ShowPlatformInfo\Debug\BuildLog.htm" に保存されました。
1>ShowPlatformInfo - エラー 0、警告 0
========== ビルド: 1 正常終了、0 失敗、0 更新不要、0 スキップ ==========


>main.obj : warning LNK4248: 未解決の typeref トークン (0100000F) ('_cl_platform_id') です。イメージを実行できません。
も消えています。
実行結果もきちんと出ました。

ISLe
記事: 2650
登録日時: 15年前
連絡を取る:

Re: OpenCLのプログラムがうまくいきません・・・

#47

投稿記事 by ISLe » 14年前

行列和を求めるプログラムのほうは動いたんでしょうかね。
別のプログラムで新しいスレ立ってますけど。

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

Re: OpenCLのプログラムがうまくいきません・・・

#48

投稿記事 by kuro » 14年前

はい。動きました。
http://www.shuwasystem.co.jp/support/7980html/2608.html
この書籍を買ったんですけど、まさかサンプルプログラムがあると思わなくて・・・

やはり、書籍に書いてあるプログラムが間違っていたみたいでした。
サンプルプログラムのファイルを開いて、main.cppをコピーして、新しいソリューションを作りコピペして実行させたら求める実行結果が出ました。

閉鎖

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