none
C++ AMP выдает ошибку при построении программы с сайта microsoft. RRS feed

  • Вопрос

  • Для своей программы понадобилось вычисления на GPU, т.к нужно подсчитать огромное количество чисел, прочитал на MSDN что в этом мне поможет amp,я проверил поддерживает ли мой ноутбук данную возможность и взяв код из оффициального сайта msdn ("http://msdn.microsoft.com/ru-ru/library/hh873134.aspx") вставил в пустой проект для того чтобы проверить работоспособность, и скомпилировал.

    Компилятор мне выдает 2 ошибки:

    Error C3861 '_Access': identifier not found ConsoleApplication2 c:\program files (x86)\microsoft visual studio\2017\community\vc\tools\msvc\14.13.26128\include\amp.h 2616

    Error C3588 casting from 'unknown-type' to 'void *' is unsupported in amp restricted code ConsoleApplication2 c:\program files (x86)\microsoft visual studio\2017\community\vc\tools\msvc\14.13.26128\include\amp.h 2616

    Если с кода убрать строчки где идет обращение к переменным через лямбду, то проект компилируется.

    Среда - Microsoft Visual C++ 2017 (15.6.2) 

    ЦП: i7-6700HQ,

    GPU: 1)Intel(R) HD Graphics 530

    2)NVIDIA GeForce GTX 950M

    Windows 10 x64

    Помогите решить эту проблемму (в интернете ничего по этому поводу не нашел)


    16 марта 2018 г. 17:03

Ответы

  • Здравствуйте.

    Прошу прощения, что долго не отвечал, работа не давала заняться Вашей проблемой :)

    Причина была в опции компилятора "Режим совместимости" (см. рисунок):

    При создании проекта в VS 2017 по умолчанию стоит "Да". Если выбрать "Нет", компиляция выполняется без ошибок.


    Если сообщение помогло Вам, пожалуйста, не забудьте отметить его как ответ данной темы. Удачи в программировании!

    • Помечено в качестве ответа provokator2018 22 марта 2018 г. 18:27
    • Снята пометка об ответе provokator2018 7 апреля 2018 г. 7:37
    • Помечено в качестве ответа provokator2018 7 апреля 2018 г. 7:37
    22 марта 2018 г. 14:16

Все ответы

  • Признаюсь, не изучал код, приведенный Вами по ссылке. Но, первое, что приходит в голову, когда пишут об ошибках при компиляции кода C++ AMP, это то, что данный компилятор не выносит путей с пробелами и русскими буквами. Попробуйте разместить свой проект в папке ближе к корню диска без пробелов и национальных символов в пути.

    Если сообщение помогло Вам, пожалуйста, не забудьте отметить его как ответ данной темы. Удачи в программировании!

    16 марта 2018 г. 21:14
  • спасибо что ответили, но я уже находил подобные ответы и мне не помогло, я уже перерыл все сайты так и не могу понять в чем дело, знаю что для amp нужен Direx11 и выше у меня 12 стоит, может быть какието другие варианты?(Папка с проектом у меня находтся в корневом диске D: с именем ConsoleApplication1)

    код msdn(если закоментировать место которое я подчеркнул то проект запускается без ошибок)

    void MultiplyWithAMP() {  
        int aMatrix[] = { 1, 4, 2, 5, 3, 6 };  
        int bMatrix[] = { 7, 8, 9, 10, 11, 12 };  
        int productMatrix[] = { 0, 0, 0, 0, 0, 0, 0, 0, 0 };  
    
        array_view<int, 2> a(3, 2, aMatrix);  
        array_view<int, 2> b(2, 3, bMatrix);  
        array_view<int, 2> product(3, 3, productMatrix);  
    
        parallel_for_each(  
            product.extent,   
             [=](index<2> idx) restrict(amp) {  
                int row = idx[0];  
                int col = idx[1];  
                for (int inner = 0; inner < 2; inner++) {  
                    product[idx] += a(row, inner) * b(inner, col);  
                }  
            }  
        );  
    
        product.synchronize();  
    
        for (int row = 0; row < 3; row++) {  
            for (int col = 0; col < 3; col++) {  
                //std::cout << productMatrix[row*3 + col] << "  ";  
                std::cout << product(row, col) << "  ";  
            }  
            std::cout << "\n";  
        }  
    } 

    16 марта 2018 г. 23:04
  • Код успешно собирается набором инструментов VS 2015, набор VS 2017, действительно, выдает ошибку. Почему, пока не ясно. Попробую выяснить. О результатах отпишусь.

    Если сообщение помогло Вам, пожалуйста, не забудьте отметить его как ответ данной темы. Удачи в программировании!

    17 марта 2018 г. 9:11
  • буду очень благодарен за ответ

    17 марта 2018 г. 21:35
  • Здравствуйте.

    Прошу прощения, что долго не отвечал, работа не давала заняться Вашей проблемой :)

    Причина была в опции компилятора "Режим совместимости" (см. рисунок):

    При создании проекта в VS 2017 по умолчанию стоит "Да". Если выбрать "Нет", компиляция выполняется без ошибок.


    Если сообщение помогло Вам, пожалуйста, не забудьте отметить его как ответ данной темы. Удачи в программировании!

    • Помечено в качестве ответа provokator2018 22 марта 2018 г. 18:27
    • Снята пометка об ответе provokator2018 7 апреля 2018 г. 7:37
    • Помечено в качестве ответа provokator2018 7 апреля 2018 г. 7:37
    22 марта 2018 г. 14:16
  • Спасибо большое помогло
    22 марта 2018 г. 18:27