Gtk与Cuda混合编程

本文介绍了一种利用Makefile实现GTK图形界面程序与CUDA GPU程序混合编程的方法。通过具体的例子,展示了如何配置编译选项以成功链接GTK库与CUDA运行时库。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

大家都知道,不同的编译器有不同的-L和-I,而在编译过程中要实现两种编译器的混合使用,利用Makefile是一个很好地解决方案,比如之前在mpi与cuda混合编程中讨论的那样,基于图形界面的GTK编程也只是在gcc 编译的基础之上加上gtk的库函数(`pkg-config --cflags --libs gtk -2.0`)而已,所以通过本人的实际操作,用Makefile解决也是可以的。这里需要注意的是:GTK与GPU kernels传递过程中,不要传递浮点型,否则会报错。


首先你需要编好一个图形界面的GTK程序,在这个程序中你会输入cuda代码需要的一些参数变量信息。
我的GTK程序名为:4_model_gtk_gpu.c

我的gpu程序名为:GPU.cu


那么,Makefile文件如下:

CUDA_INSTALL_PATH = /usr/local/cuda-7.5
MPI_INSTALL_PATH = /usr

NVCC = $(CUDA_INSTALL_PATH)/bin/nvcc
GCC = $(MPI_INSTALL_PATH)/bin/gcc

LDFLAGS = -L$(CUDA_INSTALL_PATH)/lib64
LIB = -lcudart -lcurand
LGTK = `pkg-config --cflags --libs gtk -2.0`

CFILES = 4_model_gtk_gpu.c
CUFILES = GPU.cu
OBJECTS = 4_model_gtk_gpu.o GPU.o 
EXECNAME = a

all:
        $(GCC) -c $(CFILES)  $(LGTK)
        $(NVCC) -c $(CUFILES)
        $(GCC) -o $(EXECNAME) $(LDFLAGS) $(LIB) $(LGTK) $(OBJECTS)

clean:
        rm -f *.o $(EXECNAME)

整体上就是先生成.o的文件,再用这个文件作为库进行接下来的编译。最后用./运行。VTI介质的的代码我就不贴了,而GTK的代码在本人博客的GTK里面也已经给了详细的代码,这里也不再贴了,就给出几个图形界面的结果图吧。
下面是图形界面的主界面,目前我只完成了第一个模块的编程,RTM部分还没做。



点击模块按钮后,会跳出模块的具体参数填写窗口,同样的,你可以自己选择文件。



在终端会显示如下信息:


希望接下来在完成RTM的部分时不会遇到太多麻烦!!!!!!!!!!!!

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值