Reply to comment

Разобрался с этим. Оказывается (надо было читать доки перед использованием) нельзя использовать константную память так как глобальную. Её не выделишь, так как она выделяется автоматически во время старта программы и уничтожается во время завершения программы.

__constant__ float constData[256]; // говорит программе что нужно столько то байт выделить
float data[256]; // исходные данные
cudaMemcpyToSymbol(constData, data, sizeof(data)); // копируем исходные данные в конст память

После этого в любой точке кода можно обращаться к этой памяти - символ глобальный.

п.с. немного нубский вопрос
если у меня в константной памяти лежит массив double constant_a[16][16] и мне надо передать этот указатель в какую-нибудь функцию, то я не могу сделать это как:

  1. __constant__ double constant_a[16][16];
  2.  
  3. __device__ void someFunction(double constant_a[16][16]){
  4.     // blah
  5. }
  6.  
  7. __global__ void kernel(){
  8.     someFunction(constant_a);
  9. }

Так же не могу и так:

  1. __constant__ double constant_a[16][16];
  2.  
  3. __device__ void someFunction(double* constant_a){
  4.     // blah
  5. }
  6.  
  7. __global__ void kernel(){
  8.     someFunction(constant_a);
  9. }

Но могу так:

  1. __constant__ double constant_a[16][16];
  2.  
  3. __device__ void someFunction(double* constant_a){
  4.     // blah
  5. }
  6.  
  7. __global__ void kernel(){
  8.     someFunction(constant_a[0]);
  9. }

По сути то я передаю указатель на первый элемент первой строки. Гарантировано ли что вторая строка будет лежать сразу после первой?

Reply

The content of this field is kept private and will not be shown publicly.
  • Web page addresses and e-mail addresses turn into links automatically.
  • Allowed HTML tags: <a> <em> <strong> <cite> <code> <ul> <ol> <li> <dl> <dt> <dd> <i> <table> <td> <tr> <th>
  • Lines and paragraphs break automatically.
  • You can enable syntax highlighting of source code with the following tags: <code>, <blockcode>. The supported tag styles are: <foo>, [foo].
  • Images can be added to this post.

More information about formatting options

CAPTCHA
This question is for testing whether you are a human visitor and to prevent automated spam submissions.
Image CAPTCHA
Enter the characters shown in the image.

Copyright © 2008-2009 Alex Tutubalin