On Mon, Sep 20, 2010 at 2:08 PM, MinRK <mi...@berkeley.edu> wrote: > Okay, with a tiny tweak to compiler.compile, I have UB pycuda working in > both 64 and 32-bit. All I did was tell compile() to add '-m64' to options > if it detects 64-bit mode, in the same way as Bryan's trick. > > I pushed a branch with the patch to my GitHub: > http://github.com/minrk/pycuda, as well as a siteconf that works for the > build. There are still a few failures in test_gpuarray for 64-bit, but I > don't know what causes them. > > On Mon, Sep 20, 2010 at 11:30, Art <grenan...@gmail.com> wrote: > >> >> On Mon, Sep 20, 2010 at 8:34 AM, Bryan Catanzaro < >> catan...@eecs.berkeley.edu> wrote: >> >>> I think it should be changed to check to see if the Python interpreter is >>> currently running in 32 bit mode, and then compile to match: >>> >>> if 'darwin' in sys.platform and sys.maxint == 2147483647: >>> # The Python interpreter is running in 32 bit mode on OS X >>> if "-arch" not in conf["CXXFLAGS"]: >>> conf["CXXFLAGS"].extend(['-arch', 'i386', '-m32']) >>> if "-arch" not in conf["LDFLAGS"]: >>> conf["LDFLAGS"].extend(['-arch', 'i386', '-m32']) >>> >>> Some people (myself included) have to run Python in 32-bit mode on 64-bit >>> OS X for various compatibility reasons (currently including libcudart.dylib, >>> which is only shipped as a 32-bit library). Since the Python which Apple >>> ships is compiled as a fat binary with both 32 and 64 bit versions, we can't >>> know a priori what the right compiler flags are. >>> >>> - bryan >> >> >> I have driver version 3.1.14 and: >> >> $ file /usr/local/cuda/lib/libcudart.dylib >> /usr/local/cuda/lib/libcudart.dylib: Mach-O universal binary with 2 >> architectures >> /usr/local/cuda/lib/libcudart.dylib (for architecture x86_64): Mach-O >> 64-bit dynamically linked shared library x86_64 >> /usr/local/cuda/lib/libcudart.dylib (for architecture i386): Mach-O >> dynamically linked shared library i386 >> >> Doesn't that mean it's UB? >> > > You are right, that's UB, I guess the change was made at 3.1, not 3.2. In > 3.0, they introduced UB for libcuda, but left all other libraries as i386. > > >> I can build and test cudamat [1] (which uses ctypes to call libcudart and >> libcublas) fine in 64-bit macports python though I haven't otherwise used >> it. I had to make the following small change in it's Makefile: >> >> nvcc -O -m 64 -L/usr/local/cuda/lib --ptxas-options=-v --compiler-options >> '-fPIC' -o libcudamat.so --shared cudamat.cu cudamat_kernels.cu -lcublas >> >> from: >> >> nvcc -O --ptxas-options=-v --compiler-options '-fPIC' -o libcudamat.so >> --shared cudamat.cu cudamat_kernels.cu -lcublas >> >> I built pycuda as 64-bit and changed pycuda/compiler.py to pass --machine >> 64 to nvcc and got examples/demo.py to run but the other examples and tests >> had failures and would eventually hang my machine. I don't know enough to >> fix this myself but I can try suggestions. Would using 3.2RC make a >> difference? >> > > If the rest of libraries are UB, as cudart is at 3.1, then 3.2 shouldn't > make a difference from 3.1.x, I just knew that the switch was somewhere > between 3.0 and 3.2, and it appears to have been at 3.1. > > -MinRK > > >> >> [1] http://code.google.com/p/cudamat/ >> >> cheers, >> art >> > >> Thanks for posting the fork. I used your modification to compiler.py (my original one was incorrect) and I built a 64-bit only version of pycuda and all tests under tests/ passed for the first time. I also was able to call cublas and cufft using something similar to parret [1].
This is the siteconf.py I used hacked from someone's earlier efforts on this list: BOOST_INC_DIR = ['/opt/local/include'] BOOST_LIB_DIR = ['/opt/local/lib'] BOOST_COMPILER = 'gcc-mp-4.4' # not sure USE_SHIPPED_BOOST = False BOOST_PYTHON_LIBNAME = ['boost_python-mt'] BOOST_THREAD_LIBNAME = ['boost_thread-mt'] CUDA_TRACE = False CUDA_ENABLE_GL = False CUDADRV_LIB_DIR = [] CUDADRV_LIBNAME = ['cuda'] CXXFLAGS = ['-arch', 'x86_64', '-m64', '-isysroot', '/Developer/SDKs/MacOSX10.6.sdk'] LDFLAGS = ['-arch', 'x86_64', '-m64', '-isysroot', '/Developer/SDKs/MacOSX10.6.sdk'] [1] http://www.mathcs.emory.edu/~yfan/PARRET/doc/index.html
_______________________________________________ PyCUDA mailing list PyCUDA@tiker.net http://lists.tiker.net/listinfo/pycuda