2014-09-30 3 views
6

Я создаю программное обеспечение, которому необходимо nvcc для компиляции. У меня нет GPU с поддержкой CUDA, но на самом деле мне это не нужно - друг строит то же программное обеспечение на Linux, у него нет графического процессора CUDA, но все в порядке.nvcc + c2hs на OS X 10.9.5

Я установил новейший инструментарий CUDA с https://developer.nvidia.com/cuda-downloads (cuda_6.5.14_mac_64.pkg) без проблем. Но по мере того как я строил , программное обеспечение У меня возникли проблемы.

Я был в состоянии воспроизвести проблему на меньшем масштабе:

$ mkdir temp; cd temp; cabal sandbox init 


$ cabal get cuda 
Unpacking to cuda-0.6.5.0/ 


$ cd cuda-0.6.5.0/Foreign/CUDA/Analysis 


$ c2hs -d trace --cpp=/Developer/NVIDIA/CUDA-6.5/bin/nvcc --cppopts=-ccbin --cppopts=/usr/bin/clang --cppopts=-Xcompiler --cppopts=--stdlib=libstdc++ Device.chs 
Attempting to read file `Device.chs'... 
...parsing `Device'... 
...successfully loaded `Device'. 
Invoking cpp as `/Developer/NVIDIA/CUDA-6.5/bin/nvcc -E -x c -ccbin /usr/bin/clang -Xcompiler --stdlib=libstdc++ -U__BLOCKS__ -DC2HS_MIN_VERSION(mj,mn,rv)=(mj<=0&&mn<=18&&rv<=2) Device.chs.h'... 
In file included from <built-in>:170: 
<command line>:3:29: error: expected comma in macro parameter list 
#define C2HS_MIN_VERSION(mj 1 
          ^
<command line>:5:11: warning: ISO C99 requires whitespace after the macro name [-Wc99-extensions] 
#define rv) (mj<=0&&mn<=18&&rv<=2) 
     ^
Device.chs.h:1:10: fatal error: 'cbits/stubs.h' file not found 
#include "cbits/stubs.h" 
     ^
1 warning and 2 errors generated. 
c2hs: Error during preprocessing custom header file 

С след в руке, я был в состоянии пойти глубже в кроличью нору:

$ /Developer/NVIDIA/CUDA-6.5/bin/nvcc -E -x c -ccbin /usr/bin/clang -Xcompiler --stdlib=libstdc++ -U__BLOCKS__ -DC2HS_MIN_VERSION(mj,mn,rv)=(mj<=0&&mn<=18&&rv<=2) Device.chs.h 
zsh: parse error near `)' 


$ /Developer/NVIDIA/CUDA-6.5/bin/nvcc -E -x c -ccbin /usr/bin/clang -Xcompiler --stdlib=libstdc++ -U__BLOCKS__ -D'C2HS_MIN_VERSION(mj,mn,rv)=(mj<=0&&mn<=18&&rv<=2)' Device.chs.h 
# 1 "Device.chs.h" 
# 1 "<built-in>" 1 
# 1 "<built-in>" 3 
# 170 "<built-in>" 3 
# 1 "<command line>" 1 
In file included from <built-in>:170: 
<command line>:3:29: error: expected comma in macro parameter list 
#define C2HS_MIN_VERSION(mj 1 
          ^
<command line>:5:11: warning: ISO C99 requires whitespace after the macro name [-Wc99-extensions] 
#define rv) (mj<=0&&mn<=18&&rv<=2) 
     ^
# 1 "<built-in>" 2 
# 1 "Device.chs.h" 2 
Device.chs.h:1:10: fatal error: 'cbits/stubs.h' file not found 
#include "cbits/stubs.h" 
     ^

1 warning and 2 errors generated. 


$ Developer/NVIDIA/CUDA-6.5/bin/nvcc -x c -D 'C2HS_MIN_VERSION(mj,mn,rv)=(mj<=0&&mn<=18&&rv<=2)' Device.chs.h 
(same issue) 

Я не имею Идея, как это исправить. Кстати, оба clang и gcc в порядке с прохождением макросов с аргументами через -D.

Возможно отношение:

$ echo $PATH 
/Users/konrad/bin:/Users/konrad/.ghc-current/bin:/Users/konrad/.cabal/bin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/Developer/NVIDIA/CUDA-6.5/bin 

$ echo $DYLD_LIBRARY_PATH 
/Developer/NVIDIA/CUDA-6.5/lib: 

$ echo $LD_LIBRARY_PATH 
/usr/local/cuda/lib: 

$ ghc --version 
The Glorious Glasgow Haskell Compilation System, version 7.8.3 

$ cabal --version 
cabal-install version 1.20.0.3 
using version 1.20.0.0 of the Cabal library 

$ c2hs --version 
C->Haskell Compiler, version 0.18.2 The shapeless maps, 31 Oct 2014 
    build platform is "x86_64-darwin" <1, True, True, 1> 

$ gcc --version 
Configured with: --prefix=/Applications/Xcode.app/Contents/Developer/usr --with-gxx-include-dir=/usr/include/c++/4.2.1 
Apple LLVM version 6.0 (clang-600.0.51) (based on LLVM 3.5svn) 
Target: x86_64-apple-darwin13.4.0 
Thread model: posix 

$ gcc-4.9 --version 
gcc-4.9 (GCC) 4.9.0 20140411 (prerelease) 
Copyright (C) 2014 Free Software Foundation, Inc. 
This is free software; see the source for copying conditions. There is NO 
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 

У меня есть Intel Iris Pro 5100 (МВР сетчатку 15" в конце 2013)

+0

Никогда не использовал zsh раньше, может быть, это каким-то образом расширяет (?) вашу командную строку внеожиданный путь? А именно, часть ', mn,', кажется, исчезла. Может быть, попробуйте с помощью команды 'noglob' в вашей команде? –

+0

Пробовал это уже, использовал 'sh', к сожалению, точно такие же результаты. – kgadek

ответ

2

Согласно https://github.com/haskell/c2hs/issues/111 21 ноября смена была отодвинута на c2hs РУКОВОДИТЕЛЯ работать вокруг. проблема, вызванная восходящей причудой в nvcc. Итак, на этом этапе, действительно, нужно работать с последним c2hs.

+0

Спасибо, я скоро повторюсь! – kgadek

 Смежные вопросы

  • Нет связанных вопросов^_^