• 締切済み

CUDA言語での二次元配列のコピー

こんにちは。CUDA初心者です。質問させてください。 ホスト関数で、  char a[][]={"January", "February", ・・・ "December"} と月の英語名を代入したあと、デバイスメモリにデータを転送するには、 どうすればよいでしょうか? 大まかな方針でもかまいませんので、教えていただけませんか?

みんなの回答

  • koi1234
  • ベストアンサー率53% (1866/3459)
回答No.1

実際にCUDA使ったことは無いのですが 興味があったのでちょっと検索かけて見ました 以下のプログラムが参考になるような気がします (質問者さんがやりたいことはできるのではないかと思います) http://www.kumikomi.net/archives/2008/10/22gpu2.php

kuleyon
質問者

お礼

ありがとうございました。 参考にさせていただきます。

関連するQ&A

  • c言語のポインタ配列

    下記のようなポインタ配列が合った場合、 char *mnthp[4] = { "January", "February", "March", "April" }; Februaryに別の文字列を代入したいのですが、どうすればよいのでしょうか?

  • monthの単数形と複数形の使い分けについて教えてください

    中一の英語のテストで(月)を英語で書く問題が出ました。 The twelve (月) of the year are January, February, ・・・, December. 子供がテストでmonthsを記入したところ×となり、正解はmonthと言われたそうです。 be動詞もareになっているので、私も子供もmonthsだと思っていました。どう使い分ければいいのかわかりません。教えてください。よろしくお願いします。

  • ポインタ配列について

    下のプログラムは、ポインタ変数の配列のプログラムです。 このプログラムを、月の順番を入れ替えて出力するプログラムに変更するにはどのようにすれば良いか分かる方いましたら、是非教えてください。例えば、JANUARYとMARCHを入れ替えて出力するプログラムなどです。 #include<stdio.h> void main() { char *p[] = {"JANUARY","FEBRUARY","MARCH","APRIL","MAY","JUNE", "JULY","AUGUST","SEPTEMBER","OCTOBER","NOVEMBER","DECEMBER"}; int i,j; *p[0]=*p[2]; *p[0]=*p[2]; for(i = 0;i < 12; ++i){ printf("%2d 月:%s\n",i+1,p[i]); } for(i = 0;i < 12; ++i){ j = -1; do{ ++j; printf("%4x ",p[i]+j); } while (*(p[i]+j) != '\0'); printf("\n"); j = -1; do{ ++j; printf(" %c ",*(p[i]+j)); }while (*(p[i]+j) != '\0'); printf("\n"); } }

  • 配列

    こんばんは。 Cを勉強中の者なのですが 前に配列についての内容で自分も分からない事があったので投稿しました。 キーで文字列を入力して関数に渡し、 関数側で引数(文字列データ分)のメモリを確保する事は 出来るのでしょうか。 #include <stdio.h> #include <stdlib.h> void test(char *hiki); int main(void){ char inp[256]; scanf("%s",&inp); printf("%s\n",inp); test(inp); return 0; } void test(char *hiki){ char *i; i = (char*)malloc( ); /* 「hiki」をつかって出来るの でしょうか? */ 全然急ぎとかではなく、ちょっと疑問に思った事なのですが教えていただけるとうれしいです。 (考え方がおかしかったらスミマセン)

  • C言語でのコンパイルエラー

    初心者です。 非常に基本的な質問かもしれませんが、 ご回答いただけたらうれしいです。 void test1(unsigned char* data) { } void test2(unsigned char** data) { } int main(void) { unsigned char data1[6]; unsigned char data2[6][6]; test1(data1); test2(data2); } としてtest1はうまくいくのに、 test2はコンパイルエラーになります。 どっちもポインタになると思うのですが…。 また、unsigned char data2[6][6]を 他の関数の引数とする場合は どうすればよろしいのでしょうか? 宜しくお願いいたします。

  • [C言語] 関数の配列引数の扱いについて

    C言語習得中の文系学生です。現在、データ構造(リンクリスト、ツリー構造)を勉強中です。 勉強用にプログラムを組んでるのですが、構造体メンバに文字列を代入し出力する関数で予想とは違う結果が出てしまいました。思いつく限りの方法は試しましたが、状況は変わりませんでした。 先に、予想した実行結果と実際の実行結果を載せます。 char型配列data[32]に入力文字列を代入し出力した時 ・予想した結果 入力: abcdefgh 出力: abcdefgh ・実際の結果 入力: abcdefgh 出力: abc 次にコードと実行結果を載せます。 上記の通り、与えられた文字をそのまま出力するだけのプログラムです。 質問投稿用にメンバの量は1つにしました。 #include<stdio.h> #include<string.h> #include<stdlib.h> #include<malloc.h> #define MAX_DATA 32 struct memb{ char s[MAX_DATA]; }k; void input_c(char *data){ data = (char *)malloc( sizeof(char)*32 ); printf("Size is %d\n",malloc_usable_size(data)); puts(">>> "); fgets(data,sizeof(data),stdin); sscanf(data,"%s",data);   printf("DATA is %s\n",data); } int main(void){ input_c(k.s); printf("Inputted Data : %s\n",k.s); return 0; } -------------------------------------------- 実行結果 Size is 36 >>> abcdefgh DATA is abc Inputted Data : 以上です。 こういう状態になってしまう原因がどこにあるのか、何がそうさせているのかについて、 どうかご教授のほど宜しくお願い致します。

  • 【VC++2005 MFC】構造体のコピーについて

    【VC++2005 MFC】構造体のコピーについて 構造体をコピーする時、単純に「=」で代入しているのですが、先輩に 「それじゃコピー出来ないから各メンバごとに代入するような関数作れ」 と言われました。 私自身、C言語の初心者ですが、ネットで調べてみると、単純に「=」で代入出来る ような気がしております。 ただ拝見したサイトに記載されている構造体は型が「int」「char」なのですが、 「CString」を使っていたり、構造体の中に更に構造体が入っていたりする場合も 単純に「=」で代入出来るのでしょうか? (というか、実際にコーディング、デバッグして、コピー出来ている事は確認しているん ですが、先輩いわく、「CStringとかのクラスが含まれている場合はダメだと思う。 メモリが壊れると思う」との事でした。)

  • 各月を英語で言う時の語呂合わせ探しています。

    テストが近く焦っている中学生です。 苦手科目は英語、なので、多少無理があっても 各月を語呂あわせで強引に覚えようとしています。 January  February March   April May    June July   August September October November December と、月は授業で使うことも少ないので気にもしてませんでしたorz 例えば、12月は何かと新年のために出費が多いですよね、なので、             デセン  December→ディセンバァ→出銭バーみたいなかんじです。 無理やりなのはわかってますが、 語呂合わせは印象に残りやすいのでアイディア募集しています。

  • 構造体配列のメモリ確保

    以下のようなプログラムを作りました。 make_mem関数のなかで構造体のメモリを確保し、 データを代入しています。 しかし、mainに返ってくると値が代入されていません。 よく調べてみると、mainで宣言してあるdataのアドレスが 変更されていません。 どのようにすれば、meake_memoのなかでメモリ確保し、 データを代入できるのでしょうか? 教えてください。 実際の使用しているプログラムはmake_memoのなかで DBを開き、そのデータを配列に代入しているので、 main関数の中では配列の大きさがわかりません。 #include <stdio.h> typedef struct { int a; int b; }DATA; int make_mem(DATA *data){ int i; data=(DATA *)calloc(10,sizeof(DATA)); printf("calloc %p\n",data); for (i=0;i<10;i++){ data[i].a = i; printf("data[%d].a = %d\n",i,data[i].a); } return 0; } int main(int argc,char *argv[]){ DATA *data; int i; printf("before %p\n",data); make_mem(data); printf("after %p\n",data); for (i=0;i<10;i++){ printf("data[%d].a = %d\n",i,data[i].a); } return 0; }

  • excel 2010のtext関数について

    2007でtext関数をconcatenate関数に組み合わせて使い、文章の後ろに英語で月と(January,Februaryのように)年を表示していました。2010に切り替わったので、さっそく開いてみたのですが、なぜか1月、2月の表示になってしまいます。"mmmm"と入力すれば英語での表示になるとどの教科書にも書いてあったので安心していたのですが・・・。2007ではやっぱり英語表記に変わりはありません。2010では仕様に変更があったのでしょうか?だれかご存知の方が降りましたら、よろしくお願いいたします。