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

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

ただいまの
回答率

91.36%

  • Visual Studio

    1201questions

    Microsoft Visual StudioはMicrosoftによる統合開発環境(IDE)です。多種多様なプログラミング言語に対応しています。

  • Windows 10

    538questions

    Windows 10は、マイクロソフト社がリリースしたOSです。Modern UIを標準画面にした8.1から、10では再びデスクトップ主体に戻され、UIも変更されています。PCやスマホ、タブレットなど様々なデバイスに幅広く対応していることが特徴です。

  • CUDA

    38questions

    CUDAは並列計算プラットフォームであり、Nvidia GPU(Graphics Processing Units)向けのプログラミングモデルです。CUDAは様々なプログラミング言語、ライブラリ、APIを通してNvidiaにインターフェイスを提供します。

[VS2017 CUDA9.0 Win10]「C2059 構文エラー:’<’」が発生してしまい、ビルドが正常にできません。

解決済

回答 3

投稿 2017/12/04 15:49 ・編集 2017/12/06 19:11

  • 評価
  • クリップ 0
  • VIEW 106

mukoda

score 2

前提・実現したいこと

最近VS2017でCUDAを始めたのですが、下のソースコード「kernel<<<1, 1>>>();」の「<<<」部分で「C2059 構文エラー:’<’」というエラーメッセージが発生してしまい、ビルドが正常に行われません。

Win10やVS2017でnvccを使いコンパイルするという方法を試してみたいのですが、どのようにすればよいのかわかりません。

この方法(又はそれ以外の方法)について解決策があればご教授願えますでしょうか。

宜しくお願いします。

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

kernel<<<1, 1>>>();

C2059 構文エラー:’<’

該当のソースコード

#include <stdio.h>
#include <cuda_runtime.h>

__global__ void kernel(void) {

}

int main(void) {
    kernel<<<1, 1>>>();
    printf("hello\n");
    return 0;
}

補足情報

自分の環境です。
Win10
VS2017 Community
CUDA9.0
GTX580

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

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

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

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

回答 3

check解決した方法

+1

当初はVS2017とCUDA9でのnvccのビルドエラーを原因としていましたが、CUDA9が私のGPU(GTX580)をサポートしていないことが原因であることがわかりました[1]。
そこで環境をVS2015とCUDA8にしたところ問題が解決しました。
皆様のご協力に感謝いたします。

p.s.
VS2017にCUDA8を入れようとするとまたエラーが出ますのでご注意を。

投稿 2017/12/06 19:17

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2017/12/06 22:07

    参考資料
    [1]https://github.com/fireice-uk/xmr-stak-nvidia/issues/184

    キャンセル

+1

このコード、ファイルの拡張子は ~.cu になってます?

投稿 2017/12/04 15:50

編集 2017/12/04 15:51

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2017/12/04 15:52

    なっています。

    キャンセル

  • 2017/12/04 15:58

    CUDA Toolkit は VSにinstallされていますか?
    "プロジェクトの追加"で
    /インストール済み/テンプレート/NVIDIA/CUDA 9.0
    がdialogに現れますか?
    そのテンプレートで生成したプロジェクトは build/run できますか?

    キャンセル

  • 2017/12/04 16:07

    プロジェクトの追加というのは、「ファイル/新規作成/プロジェクト」の操作でしょうか?
    これでよろしかったら、そのdialogは存在しますし、build/runもできます。
    しかし、このbuild/runの際には少し手間が必要で、ソリューションエクスプローラー中のソリューションを右クリックして、「プロジェクトの再ターゲット」をしなければなりませんでした。

    キャンセル

  • 2017/12/04 16:15

    installはできてるみたいね。だったらbuildできないのはあなたのミス。
    ビルドカスタマイズ、ちゃんとできてないんじゃね?

    キャンセル

  • 2017/12/04 16:34

    「ビルドカスタマイズ」というのはどういう意味でしょうか?

    キャンセル

  • 2017/12/04 16:37

    「プロジェクト内に ~.cu があるとき、そいつは cl じゃなくて nvcc 使え」などなど、CUDA用の設定を教えてやること。

    キャンセル

  • 2017/12/04 16:42

    お手数おかけしますが、その方法を教えていただけますでしょうか?

    キャンセル

  • 2017/12/04 16:46

    ココ↓読んでおくれ
    http://docs.nvidia.com/cuda/cuda-installation-guide-microsoft-windows/index.html#build-customizations-for-existing-projects

    キャンセル

0

こんにちは。

<<<  >>>の構文は標準のC/C++にはありませんし、cl.exeはこの構文をサポートしていませんので cl.exe でコンパイルすると当然ですがエラーになります。CUDAはCUDA専用のツール(nvcc.exe?)でコンパイルしないといけないようです。そのためにあれこれQUDA側でなにかやっている雰囲気です。

CUDA 9.0のインストール方法 (Visual Studio 2017用)の記事が有りました。Windows 10 SDKを入れておかないと行けないそうです。
もう既に入れているようでしたら、役に立たない情報です。ごめんなさい。

もしかして、nvcc.exeではビルドできてインテリセンスのエラーだけ残っているということでしたら、無視するのが一番と思います

投稿 2017/12/04 16:06

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2017/12/04 16:20

    回答ありがとうございます。
    Windows 10 SDKはすでに入っている状態でした。

    インテリセンスのエラーを残したまま実行結果を得る方法等はご存知でしょうか?現状それができていないので少し疑問に思いました。

    キャンセル

  • 2017/12/04 16:24

    インテリセンスのエラーとコンパイル・エラーは別物。exeが出来たんなら実行してみ。

    キャンセル

  • 2017/12/04 16:39

    エラーとして、「E0029 式が必要です」と「C2059 構文エラー」の2つが出ていました。この二つはそれぞれインテリセンスのエラーとコンパイルエラーなのでしょうか?

    キャンセル

  • 2017/12/04 16:42

    インテリセンスのエラーはソース画面に表示される赤い波線です。
    C2059のようなものはコンパイルエラーです。E0029は良く分かりません。見た記憶はないです。
    epistemeさんが言っているように、nvccでビルドするように指示できていないということではないでしょうか?

    キャンセル

  • 2017/12/06 19:09

    回答が遅れてすいません。
    nvccでのビルド以前に、CUDA9が私のグラボ(GTX580)をサポートしていなかった模様でしたので、環境をVS2015とCUDA8にしたところビルドと実行ができました。
    皆様のご協力感謝いたします。

    キャンセル

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

ただいまの回答率

91.36%

関連した質問

  • 受付中

    OpenCVで動画の読み込みがうまくできません。

    以前別のプログラムで動画の読み込みができましたが、今現在取り組んでいるプログラムではうまくいきません。 言語はC++でopencv2.4.9を使用しています。 Os windo

  • 解決済

    GPUでの実行ができない

    前提・実現したいこと 前提:これまでLinuxでcudaをインストールしており、chainerでGPUを使用したコードを動作させることが出来ていたという状態のマシンに今回、新規の

  • 受付中

    【C言語】冗長だと思う数字入力プログラムを改善したい

    以下のプログラムは3つの数字をスペース区切りで入力して、入力した数字を改行区切りで出力するというコードです。 C言語はあまり慣れていないので、以下のコードに冗長さを感じますが何か改

  • 解決済

    【C言語】swapマクロだと何故ポインタを渡さなくても、入れ替えることができるのか

    linuxカーネルで学ぶC言語のマクロ 上記サイトに以下のコードがありましたが、マクロでswapを定義すると何故ポインタを渡さなくても、数字を入れ替えることができるのでしょうか

  • 解決済

    C言語:整数の小数点以下切り上げ方法

    ceilは使わずに整数型aの+20%した値を小数点以下切上げで求めるにはどうしたらよいでしょうか?

  • 解決済

    [Qt]Qtのイベント操作

    (趣味で)C++でやっています。 C++ではGUIはQtが楽らしいので使ってみました。 以前質問したDLL云々は何とか解決しました。 QtCreator付属のヘルプ (

  • 解決済

    C言語のネストした構造体の配列の初期化

    前提・実現したいこと C言語でネスとした構造体の配列を初期化したい。 該当のソースコード typedef struct { long l1; long l2; }T1 ty

  • 解決済

    [Qt]Qtをクラス化する

    C++でやっています。 Qtを使ってみたいと思い、挑戦中です。 なにやら面倒くさいので Qtを簡略化するDLLを作成しようとしています。 ですが、Qtそのものを使い切れ

同じタグがついた質問を見る

  • Visual Studio

    1201questions

    Microsoft Visual StudioはMicrosoftによる統合開発環境(IDE)です。多種多様なプログラミング言語に対応しています。

  • Windows 10

    538questions

    Windows 10は、マイクロソフト社がリリースしたOSです。Modern UIを標準画面にした8.1から、10では再びデスクトップ主体に戻され、UIも変更されています。PCやスマホ、タブレットなど様々なデバイスに幅広く対応していることが特徴です。

  • CUDA

    38questions

    CUDAは並列計算プラットフォームであり、Nvidia GPU(Graphics Processing Units)向けのプログラミングモデルです。CUDAは様々なプログラミング言語、ライブラリ、APIを通してNvidiaにインターフェイスを提供します。

  • トップ
  • CUDAに関する質問
  • [VS2017 CUDA9.0 Win10]「C2059 構文エラー:’<’」が発生してしまい、ビルドが正常にできません。