Windows实时扩展RTX下编程的一些注意事项

最近实验室需要用RTX做一个项目,由我负责和其相关的一个模块。以前从未接触这个东西,使用其的过程中发生了不少让人吐血的事,不过今天终于弄完了。也顺便把总结的一些经验分享出来,方便其他也用这个开发的人少走弯路。以下说的文件都是rtss实时运行的文件,项目配置也是RTSSDebug或者RTSSRelease配置。

    用RTX编程,最重要的当然是查阅官方的说明文档,里面的说明还是很详细的,但是也有很多细节不甚清楚,只有运行了才能发现。

    1、不要声明长度过大的临时数组变量,如果真的需要,可以声明为全局变量,或者静态变量,否则无法编译通过;

    2、还是关于全局变量和静态变量的,同一个rtss文件启动两次,成为两个同时运行的进程,那么全局变量和静态变量是公有的,不管是函数内的静态变量,还是文件内静态变量。如果在一个进程里修改某个全局变量,那么另外一个进程的该全局变量随之改变,这实际上就是同一块内存;但如果复制成另外一个文件,那么启动这两个文件,就不会有共享的事情;

    3、RTX下可以使用printf进行格式化输出,但是不能正常输出浮点数;而且RTX下不能对浮点数强制转换成整数,否则会报错。如果需要输出浮点数,或者强制转换成整数,可以参考我另一篇博客;

    4、RTX下不能使用scanf,否则报错;也不能使用文件操作的相关函数,即fopen、fclose等函数;很多和浮点数相关的函数不能使用,如果要用,一样需要自己另外编写;

    5、rtss程序可以用来与其它进程(包含win32环境下的进程)通信的方式包括:共享内存,事件,信号量。在这里我推荐用前两种,相互配合,可以满足大部分需求。用事件来控制进程的运行和秩序,用共享内存来传递数据;RTX环境下的事件传输速度很快,延时不会超过100微秒;

    6、RTX下谨慎使用循环,尤其是不确定多少次终止的循环,因为当循环次数达到一定数量的时候,RTX系统会自动终止进程;

    7、RTX下使用定时器,当调用RtDeleteTimer()这个API时,定时器到此终止,该句之后的语句就不在执行。如果想关闭定时器,再执行某些处理工作,比如退出进程,那么这么做肯定是不行的,而且可能导致进程挂起,不执行,也不会退出,可以使用RTXOBjectViewer(好像是这个工具)来查看当前还没退出的进程、线程、其它对象等等。ExitProcess()要放在RtDeleteTimer之前是!

    8、RTX下只允许使用纯粹的C语言,所有的声明都要放在函数的开头;

    9、RtCreateProcess()函数第一、二个和最后一个参数要注意,中间的参数都会被忽略;比较好的做法是:第一个参数是启动的rtss文件的绝对路径,第二个参数是传递给进程的参数,记住,参数字符串第一个字符一定要是一个空格,再写参数,不然第一个空格前的字符串会被忽略掉;

    10、注意宽字符和窄字符的区别,这个在调用进程、传递参数、创建共享内存、创建事件等对象的时候会有影响。比如在宽字符的环境下,却使用char声明的字符串作为参数,那么函数可能可以运行,但是实际过程和你想象的可能完全不同;是宽字符还是窄字符,就看main函数里的声明;宽字符是wchar_t类型,窄的是char类型;

    暂时就想到这么多了,以下是我自己写的和浮点数相关的一些函数。在我的博客里另外有一篇类似的,但是那里有不少用浮点数计算的步骤,这样会影响效率。在这里,是基本不用浮点数的计算在完成浮点数到字符串的转换的。

  11、在RTX 下用共享内存,要注意不同的进程打开同一个共享内存,映射到的线性地址是不同的。所以,在一个进程打开或创建共享内存得到的地址,无法传给另一个进程使用,否则会报内存访问保护错误!!!

  • 8
    点赞
  • 35
    收藏
    觉得还不错? 一键收藏
  • 8
    评论
要在Windows上实施扩展RTX编程,首先需要确保计算设备支持RTX功能。RTX编程是基于英伟达公司的RTX硬件架构,该架构提供了实时光线跟踪和机器学习等功能。因此,需要安装支持RTX的显卡以及相应的驱动程序。 在Windows上编写RTX程序,可以使用英伟达提供的CUDA平台。CUDA是一种并行计算平台和编程模型,它可以利用显卡的并行计算能力来加速计算任务。通过CUDA平台,可以使用NVIDIA的CUDA编程语言来编写RTX应用程序。 在开始编写RTX程序之前,需要在Windows上安装CUDA工具包。首先,下载并安装最新版本的CUDA驱动程序。然后,从英伟达的官方网站下载相应的CUDA工具包并进行安装。安装完成后,使用CUDA编译器nvcc来编译CUDA程序。 在编写RTX程序时,需要使用英伟达的CUDA编程语言。CUDA程序的核心部分是由称为kernel的函数组成,这些函数在GPU上执行。可以使用CUDA的API来分配和管理GPU内存,以及在CPU和GPU之间进行数据传输。 对于RTX编程,可以使用CUDA的光线跟踪扩展库OptiX。OptiX提供了一组函数和数据结构,用于实现实时光线跟踪。可以使用OptiX来编写光线跟踪程序,然后通过CUDA进行加速。 在编写RTX程序时,可以使用CUDA的并行编程模型来利用显卡上的多个线程并行计算。可以使用CUDA的线程块和线程格等概念来管理并发执行的线程。 总而言之,在Windows上实施扩展RTX编程需要安装支持RTX的显卡和驱动程序,以及CUDA工具包。然后,使用CUDA编程语言和OptiX库来编写和加速RTX程序。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值