У нас есть проект, написанный в Фортране.Библиотека OpenACC Взаимодействие: как получить указатель устройства?
Теперь я знаю, что это можно сделать с использованием компиляторов PGI, но я не хочу зацикливаться на лицензиях.
Я пытаюсь посмотреть, можем ли мы использовать OpenACC в нашем проекте. Я установил gcc5.2, используя инструкции здесь.
https://github.com/olcf/OLCFHack15
Теперь я хочу сделать что-то подобное тому, что сказано здесь.
https://gcc.gnu.org/onlinedocs/libgomp/OpenACC-Library-Interoperability.html
Более конкретно, что указано в разделе 8.3. Я пытаюсь точно воспроизвести его с помощью gfortran. К сожалению, я не вижу, как я могу сделать это в fortran. В примере,
d_X = acc_copyin(&h_X[0], N * sizeof (float));
Это позволяет D_X быть непосредственно использованы в
s = cublasSaxpy(h, N, &alpha, d_X, 1, d_Y, 1);
Но в Фортране acc_copyin
не возвращает ничего.
Итак, как бы я воспроизвести дело в Фортране?
Глядя на спецификацию, кажется, что интерфейс Fortran OpenACC довольно ограничен. Он избегает любого материала указателя, даже когда это было бы возможно с помощью 'type (c_ptr)'. Я не уверен, можно ли вызвать функцию C с помощью 'bind (C)'? –