Заголовочные файлы CUDA. Частные функции хоста. - PullRequest
1 голос
/ 06 октября 2011

В cuda мы можем создавать заголовочные файлы с расширением .cuh, и мы можем вызывать функции из любого места, например,

   __device__ void doSomething()
  {
    ....................
  }

  void doSomthingOnHost()
  {
    ....................
  }

эти две функции общедоступны. Как я могу сделать функцию хоста приватной?

Ответы [ 2 ]

5 голосов
/ 07 октября 2011

Я считаю, что лучше всего для меня это

  1. Создайте файлы .CU с моими ядрами CUDA, их общедоступными оболочками C / C ++ и любыми частными / инкапсулированными функциями C / C ++, которые мне нужны, чтобы код устройства работал.
  2. Создание файлов .H, которые обеспечивают доступ к оболочкам C / C ++ внутри моих файлов .CU, включая их в файлах .CU и любых файлах .C / .CPP, которые мне нужны для вызова кода устройства из
  3. Создание файлов .C / .CPP, которые обрабатывают высокоуровневую логику приложения и которые вызывают код устройства через интерфейсы, предоставляемые через файлы заголовков, описанные в шаге 2.

Чтобы сделать хост-функции частными в этой схеме, просто не помещайте их прототипы в заголовок ... довольно аккуратная схема, если вы спросите меня.

0 голосов
/ 07 октября 2011

Строго говоря, нет возможности сделать бесплатную функцию приватной в C ++ - любой клиент, который может видеть сигнатуру функции, может вызвать ее.

Вместо этого вы можете сделать doSomethingOnHost закрытым статическим членом.функция некоторого класса:

class my_class
{
  private:
    static void doSomethingOnHost(); // only my_class or friends of my_class may use this function
};
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...