Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

"go get -u gorgonia.org/cu" doesn't work on Windows 10 with CUDA v10.2 #51

Closed
DrionD2 opened this issue May 5, 2020 · 3 comments
Closed

Comments

@DrionD2
Copy link

DrionD2 commented May 5, 2020

When I try to use "go get -u gorgonia.org/cu" to download and build the package, I get:

# gorgonia.org/cu
C:\Users\TEMPDR~1.001\AppData\Local\Temp\go-build193606874\b001\_x003.o: In function `_cgo_a01f1e6a60e1_Cfunc_cuDeviceGetP2PAttribute':
/tmp/go-build/cgo-gcc-prolog:530: undefined reference to `cuDeviceGetP2PAttribute'
collect2.exe: error: ld returned 1 exit status

I added the path to CUDA v10.2 in cgoflags.go using the example from issue #50:

package cu

// This file provides CGO flags to find CUDA libraries and headers.

//#cgo LDFLAGS:-lcuda
//
////default location:
//#cgo linux LDFLAGS:-L/usr/local/cuda/lib64 -L/usr/local/cuda/lib
//#cgo linux CFLAGS: -I/usr/local/cuda/include/
//
////default location if not properly symlinked:
//#cgo linux LDFLAGS:-L/usr/local/cuda-10.2/lib64 -L/usr/local/cuda-10.2/lib
//#cgo linux LDFLAGS:-L/usr/local/cuda-10.1/lib64 -L/usr/local/cuda-10.1/lib
//#cgo linux LDFLAGS:-L/usr/local/cuda-6.0/lib64 -L/usr/local/cuda-6.0/lib
//#cgo linux LDFLAGS:-L/usr/local/cuda-5.5/lib64 -L/usr/local/cuda-5.5/lib
//#cgo linux LDFLAGS:-L/usr/local/cuda-5.0/lib64 -L/usr/local/cuda-5.0/lib
//#cgo linux CFLAGS: -I/usr/local/cuda-10.2/include/
//#cgo linux CFLAGS: -I/usr/local/cuda-10.1/include/
//#cgo linux CFLAGS: -I/usr/local/cuda-6.0/include/
//#cgo linux CFLAGS: -I/usr/local/cuda-5.5/include/
//#cgo linux CFLAGS: -I/usr/local/cuda-5.0/include/
//
////Ubuntu 15.04:
//#cgo linux LDFLAGS:-L/usr/lib/x86_64-linux-gnu/
//#cgo linux CFLAGS: -I/usr/include
//
////arch linux:
//#cgo linux LDFLAGS:-L/opt/cuda/lib64 -L/opt/cuda/lib
//#cgo linux CFLAGS: -I/opt/cuda/include
//
////Darwin:
//#cgo darwin LDFLAGS:-L/usr/local/cuda/lib
//#cgo darwin CFLAGS: -I/usr/local/cuda/include/
//
////WINDOWS:
//#cgo windows LDFLAGS:-LC:/cuda/v5.0/lib/x64 -LC:/cuda/v5.5/lib/x64 -LC:/cuda/v6.0/lib/x64 -LC:/cuda/v6.5/lib/x64 -LC:/cuda/v7.0/lib/x64 -LC:/cuda/v8.0/lib/x64 -LC:/cuda/v9.0/lib/x64 -LC:/cuda/v10.2/lib/x64
//#cgo windows CFLAGS: -IC:/cuda/v5.0/include -IC:/cuda/v5.5/include -IC:/cuda/v6.0/include -IC:/cuda/v6.5/include -IC:/cuda/v7.0/include -IC:/cuda/v8.0/include -IC:/cuda/v9.0/include -IC:/cuda/v10.2/include
import "C"
@chewxy
Copy link
Member

chewxy commented May 5, 2020

I suspect you might have mismatching versions installed.

Can you check:

  1. Your graphics driver version (CUDA 10.2 requires 440.xxx ++).
  2. run the following function on Windows commandline: dumpbin /EXPORTS cuda.lib, then paste the results here.
  3. If you have multiple versions of CUDA installed.

cc @cfgt

@DrionD2
Copy link
Author

DrionD2 commented May 5, 2020

  1. Driver version:

Capture

  1. Result of the dumpbin (it seems that you can only do it with Visual Studio command line):
Microsoft (R) COFF/PE Dumper Version 14.00.23506.0
Copyright (C) Microsoft Corporation.  All rights reserved.


Dump of file cuda.lib

File Type: LIBRARY

     Exports

       ordinal    name

                  cuArray3DCreate
                  cuArray3DCreate_v2
                  cuArray3DGetDescriptor
                  cuArray3DGetDescriptor_v2
                  cuArrayCreate
                  cuArrayCreate_v2
                  cuArrayDestroy
                  cuArrayGetDescriptor
                  cuArrayGetDescriptor_v2
                  cuCtxAttach
                  cuCtxCreate
                  cuCtxCreate_v2
                  cuCtxDestroy
                  cuCtxDestroy_v2
                  cuCtxDetach
                  cuCtxDisablePeerAccess
                  cuCtxEnablePeerAccess
                  cuCtxGetApiVersion
                  cuCtxGetCacheConfig
                  cuCtxGetCurrent
                  cuCtxGetDevice
                  cuCtxGetFlags
                  cuCtxGetLimit
                  cuCtxGetSharedMemConfig
                  cuCtxGetStreamPriorityRange
                  cuCtxPopCurrent
                  cuCtxPopCurrent_v2
                  cuCtxPushCurrent
                  cuCtxPushCurrent_v2
                  cuCtxSetCacheConfig
                  cuCtxSetCurrent
                  cuCtxSetLimit
                  cuCtxSetSharedMemConfig
                  cuCtxSynchronize
                  cuD3D10CtxCreate
                  cuD3D10CtxCreateOnDevice
                  cuD3D10CtxCreate_v2
                  cuD3D10GetDevice
                  cuD3D10GetDevices
                  cuD3D10GetDirect3DDevice
                  cuD3D10MapResources
                  cuD3D10RegisterResource
                  cuD3D10ResourceGetMappedArray
                  cuD3D10ResourceGetMappedPitch
                  cuD3D10ResourceGetMappedPitch_v2
                  cuD3D10ResourceGetMappedPointer
                  cuD3D10ResourceGetMappedPointer_v2
                  cuD3D10ResourceGetMappedSize
                  cuD3D10ResourceGetMappedSize_v2
                  cuD3D10ResourceGetSurfaceDimensions
                  cuD3D10ResourceGetSurfaceDimensions_v2
                  cuD3D10ResourceSetMapFlags
                  cuD3D10UnmapResources
                  cuD3D10UnregisterResource
                  cuD3D11CtxCreate
                  cuD3D11CtxCreateOnDevice
                  cuD3D11CtxCreate_v2
                  cuD3D11GetDevice
                  cuD3D11GetDevices
                  cuD3D11GetDirect3DDevice
                  cuD3D9Begin
                  cuD3D9CtxCreate
                  cuD3D9CtxCreateOnDevice
                  cuD3D9CtxCreate_v2
                  cuD3D9End
                  cuD3D9GetDevice
                  cuD3D9GetDevices
                  cuD3D9GetDirect3DDevice
                  cuD3D9MapResources
                  cuD3D9MapVertexBuffer
                  cuD3D9MapVertexBuffer_v2
                  cuD3D9RegisterResource
                  cuD3D9RegisterVertexBuffer
                  cuD3D9ResourceGetMappedArray
                  cuD3D9ResourceGetMappedPitch
                  cuD3D9ResourceGetMappedPitch_v2
                  cuD3D9ResourceGetMappedPointer
                  cuD3D9ResourceGetMappedPointer_v2
                  cuD3D9ResourceGetMappedSize
                  cuD3D9ResourceGetMappedSize_v2
                  cuD3D9ResourceGetSurfaceDimensions
                  cuD3D9ResourceGetSurfaceDimensions_v2
                  cuD3D9ResourceSetMapFlags
                  cuD3D9UnmapResources
                  cuD3D9UnmapVertexBuffer
                  cuD3D9UnregisterResource
                  cuD3D9UnregisterVertexBuffer
                  cuDestroyExternalMemory
                  cuDestroyExternalSemaphore
                  cuDeviceCanAccessPeer
                  cuDeviceComputeCapability
                  cuDeviceGet
                  cuDeviceGetAttribute
                  cuDeviceGetByPCIBusId
                  cuDeviceGetCount
                  cuDeviceGetLuid
                  cuDeviceGetName
                  cuDeviceGetP2PAttribute
                  cuDeviceGetPCIBusId
                  cuDeviceGetProperties
                  cuDeviceGetUuid
                  cuDevicePrimaryCtxGetState
                  cuDevicePrimaryCtxRelease
                  cuDevicePrimaryCtxReset
                  cuDevicePrimaryCtxRetain
                  cuDevicePrimaryCtxSetFlags
                  cuDeviceTotalMem
                  cuDeviceTotalMem_v2
                  cuDriverGetVersion
                  cuEventCreate
                  cuEventDestroy
                  cuEventDestroy_v2
                  cuEventElapsedTime
                  cuEventQuery
                  cuEventRecord
                  cuEventRecord_ptsz
                  cuEventSynchronize
                  cuExternalMemoryGetMappedBuffer
                  cuExternalMemoryGetMappedMipmappedArray
                  cuFuncGetAttribute
                  cuFuncSetAttribute
                  cuFuncSetBlockShape
                  cuFuncSetCacheConfig
                  cuFuncSetSharedMemConfig
                  cuFuncSetSharedSize
                  cuGLCtxCreate
                  cuGLCtxCreate_v2
                  cuGLGetDevices
                  cuGLGetDevices_v2
                  cuGLInit
                  cuGLMapBufferObject
                  cuGLMapBufferObjectAsync
                  cuGLMapBufferObjectAsync_v2
                  cuGLMapBufferObjectAsync_v2_ptsz
                  cuGLMapBufferObject_v2
                  cuGLMapBufferObject_v2_ptds
                  cuGLRegisterBufferObject
                  cuGLSetBufferObjectMapFlags
                  cuGLUnmapBufferObject
                  cuGLUnmapBufferObjectAsync
                  cuGLUnregisterBufferObject
                  cuGetErrorName
                  cuGetErrorString
                  cuGetExportTable
                  cuGraphAddChildGraphNode
                  cuGraphAddDependencies
                  cuGraphAddEmptyNode
                  cuGraphAddHostNode
                  cuGraphAddKernelNode
                  cuGraphAddMemcpyNode
                  cuGraphAddMemsetNode
                  cuGraphChildGraphNodeGetGraph
                  cuGraphClone
                  cuGraphCreate
                  cuGraphDestroy
                  cuGraphDestroyNode
                  cuGraphExecDestroy
                  cuGraphExecHostNodeSetParams
                  cuGraphExecKernelNodeSetParams
                  cuGraphExecMemcpyNodeSetParams
                  cuGraphExecMemsetNodeSetParams
                  cuGraphExecUpdate
                  cuGraphGetEdges
                  cuGraphGetNodes
                  cuGraphGetRootNodes
                  cuGraphHostNodeGetParams
                  cuGraphHostNodeSetParams
                  cuGraphInstantiate
                  cuGraphKernelNodeGetParams
                  cuGraphKernelNodeSetParams
                  cuGraphLaunch
                  cuGraphLaunch_ptsz
                  cuGraphMemcpyNodeGetParams
                  cuGraphMemcpyNodeSetParams
                  cuGraphMemsetNodeGetParams
                  cuGraphMemsetNodeSetParams
                  cuGraphNodeFindInClone
                  cuGraphNodeGetDependencies
                  cuGraphNodeGetDependentNodes
                  cuGraphNodeGetType
                  cuGraphRemoveDependencies
                  cuGraphicsD3D10RegisterResource
                  cuGraphicsD3D11RegisterResource
                  cuGraphicsD3D9RegisterResource
                  cuGraphicsGLRegisterBuffer
                  cuGraphicsGLRegisterImage
                  cuGraphicsMapResources
                  cuGraphicsMapResources_ptsz
                  cuGraphicsResourceGetMappedMipmappedArray
                  cuGraphicsResourceGetMappedPointer
                  cuGraphicsResourceGetMappedPointer_v2
                  cuGraphicsResourceSetMapFlags
                  cuGraphicsResourceSetMapFlags_v2
                  cuGraphicsSubResourceGetMappedArray
                  cuGraphicsUnmapResources
                  cuGraphicsUnmapResources_ptsz
                  cuGraphicsUnregisterResource
                  cuImportExternalMemory
                  cuImportExternalSemaphore
                  cuInit
                  cuIpcCloseMemHandle
                  cuIpcGetEventHandle
                  cuIpcGetMemHandle
                  cuIpcOpenEventHandle
                  cuIpcOpenMemHandle
                  cuLaunch
                  cuLaunchCooperativeKernel
                  cuLaunchCooperativeKernelMultiDevice
                  cuLaunchCooperativeKernel_ptsz
                  cuLaunchGrid
                  cuLaunchGridAsync
                  cuLaunchHostFunc
                  cuLaunchHostFunc_ptsz
                  cuLaunchKernel
                  cuLaunchKernel_ptsz
                  cuLinkAddData
                  cuLinkAddData_v2
                  cuLinkAddFile
                  cuLinkAddFile_v2
                  cuLinkComplete
                  cuLinkCreate
                  cuLinkCreate_v2
                  cuLinkDestroy
                  cuMemAddressFree
                  cuMemAddressReserve
                  cuMemAdvise
                  cuMemAlloc
                  cuMemAllocHost
                  cuMemAllocHost_v2
                  cuMemAllocManaged
                  cuMemAllocPitch
                  cuMemAllocPitch_v2
                  cuMemAlloc_v2
                  cuMemCreate
                  cuMemExportToShareableHandle
                  cuMemFree
                  cuMemFreeHost
                  cuMemFree_v2
                  cuMemGetAccess
                  cuMemGetAddressRange
                  cuMemGetAddressRange_v2
                  cuMemGetAllocationGranularity
                  cuMemGetAllocationPropertiesFromHandle
                  cuMemGetInfo
                  cuMemGetInfo_v2
                  cuMemHostAlloc
                  cuMemHostGetDevicePointer
                  cuMemHostGetDevicePointer_v2
                  cuMemHostGetFlags
                  cuMemHostRegister
                  cuMemHostRegister_v2
                  cuMemHostUnregister
                  cuMemImportFromShareableHandle
                  cuMemMap
                  cuMemPrefetchAsync
                  cuMemPrefetchAsync_ptsz
                  cuMemRangeGetAttribute
                  cuMemRangeGetAttributes
                  cuMemRelease
                  cuMemSetAccess
                  cuMemUnmap
                  cuMemcpy
                  cuMemcpy2D
                  cuMemcpy2DAsync
                  cuMemcpy2DAsync_v2
                  cuMemcpy2DAsync_v2_ptsz
                  cuMemcpy2DUnaligned
                  cuMemcpy2DUnaligned_v2
                  cuMemcpy2DUnaligned_v2_ptds
                  cuMemcpy2D_v2
                  cuMemcpy2D_v2_ptds
                  cuMemcpy3D
                  cuMemcpy3DAsync
                  cuMemcpy3DAsync_v2
                  cuMemcpy3DAsync_v2_ptsz
                  cuMemcpy3DPeer
                  cuMemcpy3DPeerAsync
                  cuMemcpy3DPeerAsync_ptsz
                  cuMemcpy3DPeer_ptds
                  cuMemcpy3D_v2
                  cuMemcpy3D_v2_ptds
                  cuMemcpyAsync
                  cuMemcpyAsync_ptsz
                  cuMemcpyAtoA
                  cuMemcpyAtoA_v2
                  cuMemcpyAtoA_v2_ptds
                  cuMemcpyAtoD
                  cuMemcpyAtoD_v2
                  cuMemcpyAtoD_v2_ptds
                  cuMemcpyAtoH
                  cuMemcpyAtoHAsync
                  cuMemcpyAtoHAsync_v2
                  cuMemcpyAtoHAsync_v2_ptsz
                  cuMemcpyAtoH_v2
                  cuMemcpyAtoH_v2_ptds
                  cuMemcpyDtoA
                  cuMemcpyDtoA_v2
                  cuMemcpyDtoA_v2_ptds
                  cuMemcpyDtoD
                  cuMemcpyDtoDAsync
                  cuMemcpyDtoDAsync_v2
                  cuMemcpyDtoDAsync_v2_ptsz
                  cuMemcpyDtoD_v2
                  cuMemcpyDtoD_v2_ptds
                  cuMemcpyDtoH
                  cuMemcpyDtoHAsync
                  cuMemcpyDtoHAsync_v2
                  cuMemcpyDtoHAsync_v2_ptsz
                  cuMemcpyDtoH_v2
                  cuMemcpyDtoH_v2_ptds
                  cuMemcpyHtoA
                  cuMemcpyHtoAAsync
                  cuMemcpyHtoAAsync_v2
                  cuMemcpyHtoAAsync_v2_ptsz
                  cuMemcpyHtoA_v2
                  cuMemcpyHtoA_v2_ptds
                  cuMemcpyHtoD
                  cuMemcpyHtoDAsync
                  cuMemcpyHtoDAsync_v2
                  cuMemcpyHtoDAsync_v2_ptsz
                  cuMemcpyHtoD_v2
                  cuMemcpyHtoD_v2_ptds
                  cuMemcpyPeer
                  cuMemcpyPeerAsync
                  cuMemcpyPeerAsync_ptsz
                  cuMemcpyPeer_ptds
                  cuMemcpy_ptds
                  cuMemsetD16
                  cuMemsetD16Async
                  cuMemsetD16Async_ptsz
                  cuMemsetD16_v2
                  cuMemsetD16_v2_ptds
                  cuMemsetD2D16
                  cuMemsetD2D16Async
                  cuMemsetD2D16Async_ptsz
                  cuMemsetD2D16_v2
                  cuMemsetD2D16_v2_ptds
                  cuMemsetD2D32
                  cuMemsetD2D32Async
                  cuMemsetD2D32Async_ptsz
                  cuMemsetD2D32_v2
                  cuMemsetD2D32_v2_ptds
                  cuMemsetD2D8
                  cuMemsetD2D8Async
                  cuMemsetD2D8Async_ptsz
                  cuMemsetD2D8_v2
                  cuMemsetD2D8_v2_ptds
                  cuMemsetD32
                  cuMemsetD32Async
                  cuMemsetD32Async_ptsz
                  cuMemsetD32_v2
                  cuMemsetD32_v2_ptds
                  cuMemsetD8
                  cuMemsetD8Async
                  cuMemsetD8Async_ptsz
                  cuMemsetD8_v2
                  cuMemsetD8_v2_ptds
                  cuMipmappedArrayCreate
                  cuMipmappedArrayDestroy
                  cuMipmappedArrayGetLevel
                  cuModuleGetFunction
                  cuModuleGetGlobal
                  cuModuleGetGlobal_v2
                  cuModuleGetSurfRef
                  cuModuleGetTexRef
                  cuModuleLoad
                  cuModuleLoadData
                  cuModuleLoadDataEx
                  cuModuleLoadFatBinary
                  cuModuleUnload
                  cuOccupancyMaxActiveBlocksPerMultiprocessor
                  cuOccupancyMaxActiveBlocksPerMultiprocessorWithFlags
                  cuOccupancyMaxPotentialBlockSize
                  cuOccupancyMaxPotentialBlockSizeWithFlags
                  cuParamSetSize
                  cuParamSetTexRef
                  cuParamSetf
                  cuParamSeti
                  cuParamSetv
                  cuPointerGetAttribute
                  cuPointerGetAttributes
                  cuPointerSetAttribute
                  cuProfilerInitialize
                  cuProfilerStart
                  cuProfilerStop
                  cuSignalExternalSemaphoresAsync
                  cuSignalExternalSemaphoresAsync_ptsz
                  cuStreamAddCallback
                  cuStreamAddCallback_ptsz
                  cuStreamAttachMemAsync
                  cuStreamAttachMemAsync_ptsz
                  cuStreamBatchMemOp
                  cuStreamBatchMemOp_ptsz
                  cuStreamBeginCapture
                  cuStreamBeginCapture_ptsz
                  cuStreamBeginCapture_v2
                  cuStreamBeginCapture_v2_ptsz
                  cuStreamCreate
                  cuStreamCreateWithPriority
                  cuStreamDestroy
                  cuStreamDestroy_v2
                  cuStreamEndCapture
                  cuStreamEndCapture_ptsz
                  cuStreamGetCaptureInfo
                  cuStreamGetCaptureInfo_ptsz
                  cuStreamGetCtx
                  cuStreamGetCtx_ptsz
                  cuStreamGetFlags
                  cuStreamGetFlags_ptsz
                  cuStreamGetPriority
                  cuStreamGetPriority_ptsz
                  cuStreamIsCapturing
                  cuStreamIsCapturing_ptsz
                  cuStreamQuery
                  cuStreamQuery_ptsz
                  cuStreamSynchronize
                  cuStreamSynchronize_ptsz
                  cuStreamWaitEvent
                  cuStreamWaitEvent_ptsz
                  cuStreamWaitValue32
                  cuStreamWaitValue32_ptsz
                  cuStreamWaitValue64
                  cuStreamWaitValue64_ptsz
                  cuStreamWriteValue32
                  cuStreamWriteValue32_ptsz
                  cuStreamWriteValue64
                  cuStreamWriteValue64_ptsz
                  cuSurfObjectCreate
                  cuSurfObjectDestroy
                  cuSurfObjectGetResourceDesc
                  cuSurfRefGetArray
                  cuSurfRefSetArray
                  cuTexObjectCreate
                  cuTexObjectDestroy
                  cuTexObjectGetResourceDesc
                  cuTexObjectGetResourceViewDesc
                  cuTexObjectGetTextureDesc
                  cuTexRefCreate
                  cuTexRefDestroy
                  cuTexRefGetAddress
                  cuTexRefGetAddressMode
                  cuTexRefGetAddress_v2
                  cuTexRefGetArray
                  cuTexRefGetBorderColor
                  cuTexRefGetFilterMode
                  cuTexRefGetFlags
                  cuTexRefGetFormat
                  cuTexRefGetMaxAnisotropy
                  cuTexRefGetMipmapFilterMode
                  cuTexRefGetMipmapLevelBias
                  cuTexRefGetMipmapLevelClamp
                  cuTexRefGetMipmappedArray
                  cuTexRefSetAddress
                  cuTexRefSetAddress2D
                  cuTexRefSetAddress2D_v2
                  cuTexRefSetAddress2D_v3
                  cuTexRefSetAddressMode
                  cuTexRefSetAddress_v2
                  cuTexRefSetArray
                  cuTexRefSetBorderColor
                  cuTexRefSetFilterMode
                  cuTexRefSetFlags
                  cuTexRefSetFormat
                  cuTexRefSetMaxAnisotropy
                  cuTexRefSetMipmapFilterMode
                  cuTexRefSetMipmapLevelBias
                  cuTexRefSetMipmapLevelClamp
                  cuTexRefSetMipmappedArray
                  cuThreadExchangeStreamCaptureMode
                  cuWGLGetDevice
                  cuWaitExternalSemaphoresAsync
                  cuWaitExternalSemaphoresAsync_ptsz

  Summary

          C0 .debug$S
          14 .idata$2
          14 .idata$3
           8 .idata$4
           8 .idata$5
           C .idata$6
  1. I have also Cuda v8.0 installed.

@DrionD2
Copy link
Author

DrionD2 commented May 5, 2020

I finally made it work:

  1. I had an error in the LIBRARY system variable that was linking to CUDA v9.2 (error of copy/paste when I declared it earlier)

  2. I removed from cgoflags the path of CUDA v8.0

Now it worked and I tested with cudatest.

Thank you very much !

@DrionD2 DrionD2 closed this as completed May 5, 2020
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants