เครื่องที่ผมใช้งานลง Windows 7 64 bits พร้อมกับ Visual C++ Express 2010 กับ Windows SDK 7.1 และ NVIDIA SDKs Toolkit แล้วมีปัญหาในการ compile library ใน Mathematica ด้วย CreateLibrary หรือ CreateExecuteable กับ NVCCCompiler ใน Mathematica ซึ่งมันจะขึ้น $Failed
หลังจากที่งมหาคำตอบนี้อยู่นานก็พบว่า ไฟล์ C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\vcvarsall.bat” จะมีการเรียก ไฟล์ C:\Program Files (x86)\Microsoft Visual Studio 10.0\vc\bin\amd64\vcvars64.bat ซึ่งมันไม่ได้ติดตั้งมาด้วยกับตัว compiler ดังนั้นผมเลยสร้างไฟล์ vcvars64.bat มาใหม่โดยใส่บรรทัดนี้ลงไปครับ
CALL “C:\Program Files\Microsoft SDKs\Windows\v7.1\Bin\SetEnv.cmd” /x64
จากนั้นก็ลงรันคำสั่งCreateLibrary ด้วยNVCCCompiler แต่ก็ยังไม่สามารถแก้ปัญหาได้ ยังขึ้น $Failed อยู่ แต่ก็ได้ลองเพิ่ม option “ShellOutputFunction”->Print ดูเพื่อจะได้รู้ว่ามันเกิดปัญหาอะไร ซึ่งก็พบว่า Mathematica มีการเรียกใช้ files พวก library จาก folder ของ NVIDIA SDKs Toolkit แต่ดันเรียก nvcc.exe จากตัวของ Mathematica เอง ผมเลย uninstall NVIDIA SDKs Toolkit ออกไป แต่ก็ได้เพิ่มตัวแปร Path ด้วย C:\Users\SLPHYX\AppData\Roaming\Mathematica\Paclets\Repository\CUDAResources-Win64-8.0.4.1\CUDAToolkit\bin; C:\Users\SLPHYX\AppData\Roaming\Mathematica\Paclets\Repository\CUDAResources-Win64-8.0.4.1\CUDAToolkit\open64\bin
(SLPHYX นี่เป็นชื่อ login ของผมครับ)
หลังจากนั้นก็ปิดแล้วเปิด Mathematica ใหม่ แล้วลองใช้ CreateLibrary กับ NVCCCompiler ก็ปรากกฏว่าใช้ได้แล้ว 🙂