整个过程都非常纠结。。。
上来ubuntu上调cublas还比较顺利。但是后来搬centos时很小白地把ubuntu上的.o文件也拷过去了,然后必然什么都不成功,在上面浪费n多时间。此外cuda 3.0有fortran.c和fortran_thunking.c两个fortran的wrapper,一开始没仔细看文档还照着2.3的方式编译,也浪费了点时间……
cublas还是小事……cufft折腾死我了!显是被网上的教程蛊惑,说cufft没有提供wrapper,自己写一下就好了。网上狂搜一通,搜不到相关wrapper,于是决定硬着头皮自己写……研究了下fortran.c和fortran调用c的方法,写出来的结果仅仅是编译通过。这里要再骂下那个教程(http://www.gsic.titech.ac.jp/~ccwww/tebiki/tesla_e/tesla6_e.html),里面fortran的例子竟然没有cpu-gpu内存交换,虽然我一上来就怀疑有问题,不过还是暂且没多想……于是果然杯具了,看了下sdk里面的simpleCUFFT里面是有内存交换的,个么就是说不能没有……也就是说还要有cuda的wrapper……我就搞不懂了既然blas的wrapper都写,fft噶重要的库wrapper不能顺便搞一个嘛!真是的……nv不晓得了想撒。像导师反应了情况,一上来被bs,扔给我个网页说上面有使用方法。一看wk都是废话,没有关键步骤的解决方法。叫我连cuda.o和cufft.o这两个根本不存在的库一刚!后来发现这玩意儿那个站点有下,于是千辛万苦翻墙去那里找了半天终于找到了。。。下下来,连,里面的测试函数都通不过,可能是cuda版本问题,反正又浪费n多感情。最后姐姐我终于开窍了……直接fortran调用cuda不就好了嘛……于是搜啊搜,试啊试,最后的解决方法巨sb……extern "C"+把cuda c函数里面的参数都搞成指针就ok了……因为fortran都是直接传地址。
反正每次回头想想都会觉得之前自己咋就那么傻呢……但这样是不是说明我在不断变聪明中……但愿吧……