ltaodream

    1. Jacktang 发表于 2024-9-26 07:21 系统盘无法制作快照,本地硬盘,这个怎么理解
      它的意思应该是从基础软件层面来说没支持,只是简单的把硬盘分给虚拟机用,其他各种周边都很难做,这样搞的话
    2. richiefang 发表于 2024-9-22 10:49 不同编号的GPU卡,跨GPU服务器节点的通信,只能通过上一层交换机(一般称为spine, 或核心层)转发,这是因 ...
      既然GPU层面不支持,那是否可以在代码层面实现这种数据传输控制呢,比如使用一些gpu通信库,或者进行通信数据链路优化啥的 然后老师,我还想问 现在业界是否可以做到单个node故障以后,不重启整个训练任务,而使训练任务恢复呢,我们现在是重启整个训练任务,代价太大了
    3. richiefang 发表于 2024-9-22 10:49 不同编号的GPU卡,跨GPU服务器节点的通信,只能通过上一层交换机(一般称为spine, 或核心层)转发,这是因 ...
      感谢大佬解答
    4. Jacktang 发表于 2024-9-12 07:31 只能说,数据直接通过 NVLink 或 InfiniBand 等高速网络传输到 节点2的GPU1。 这种路径适用于节点之间有直 ...
      模型训练是会碰到这样的情况的,而且节点之间不可能有nvlink
    5. wangerxian 发表于 2024-8-19 16:42 感觉这个技术研究的有点深入。
      一起学习
    6. hellokitty_bean 发表于 2024-8-20 10:34 cloud native总让人好高深呀。。。。。。。。。。。一般个人想玩,怎么玩?
      可以找点4090 4060玩玩,笔记本上的就行,假如财力雄厚,可以去云厂商租赁几台GPU服务器玩
    7. 读书活动颁奖:《Rust实战》 4/56 EEWORLD颁奖专区 2024-09-11
    8. 一起学习大模型基础架构
    9. 个人信息无误,确认可以完成阅读分享计划
    10. 吾妻思萌 发表于 2024-6-24 10:56 提问: 之前做WEB server都是调试时候用ctrl+C直接中断掉,似乎没想过如何让其能够优雅的中断。 哪位 ...
      你可以用Rust标准库中的tokio异步运行时和signal-hook库来优雅地处理一下SIGINT(Ctrl+C)信号
    11. 《Rust实战》书友互动第十一集:内核 14/4524 嵌入式系统 2024-07-12
      吾妻思萌 发表于 2024-6-28 09:02 一个小问题: 作为业余感兴趣去学习Rust的有一丝丝编程基础的人,Rust是否是太过于coding硬核了,像是很 ...
      没必要,可以先从更容易入门的比如go,进行入手,再来进行rust
    12. 吾妻思萌 发表于 2024-7-5 08:02 多线程中断该怎么调度啊,感觉很复杂啊?要把任务压到栈里吗  
      多线程是通过std::thread模块来实现的,但直接中断一个线程(如Java中的Thread.stop())在Rust中并不直接支持,因为这样做可能引发数据竞争和其他未定义行为   在Rust中,处理线程中断和任务调度通常依靠以下几种策略: 通信(Communication): 使用std::sync中的同步原语(如Mutex, Arc, Condvar)或std::mpsc(多生产者单消费者通道)来协调线程间的消息传递。当需要停止一个任务时,可以发送一个特定的信号或消息给工作线程,让它优雅地自我结束。 标志(Flags): 可以通过共享的原子布尔标志(std::sync::atomic::AtomicBool)来通知线程应该停止工作。线程在执行任务时定期检查这个标志,一旦发现应停止,则自行退出。 JoinHandle与线程退出: 创建线程时会得到一个JoinHandle,你可以使用它来等待线程结束,但不能直接中断线程。一种间接的方法是在线程函数中检查外部条件(如上述的标志),或者在主线程中等待所有子线程完成(join())。 异步编程: Rust的异步编程模型(async/await)和tokio或async-std这样的库提供了更高级的并发和任务管理机制。在异步世界中,任务(通常称为“future”)可以被取消,而且异步运行时提供了更灵活的调度能力。 外部库: 使用如crossbeam这样的第三方库可以提供更多高级的并发工具,如线程池和工作窃取调度器,这些可以帮助更高效地管理和调度线程。
    13. ccccccc@ 发表于 2024-6-7 15:41 在 Rust 中,如何使用异步编程来高效地处理大量并发的网络连接,同时又可以确保数据的可靠传输和低延迟响应 ...
      使用异步运行时:Rust 的异步编程通常依赖于异步运行时,如 tokio 或 async-std。这些运行时提供了执行异步任务和处理 I/O 操作的基础设施。 异步 I/O:使用异步 I/O 库,如 tokio::net 或 async-std::net,来创建和处理网络连接。这些库允许你以非阻塞的方式读写数据。 使用 Future 和 async/await:Rust 的 Future trait 和 async/await 语法使得编写异步代码变得简单和直观。Future 代表了一个可能还没有完成的计算,而 async 函数返回一个 Future。 连接池:为了高效地管理大量连接,可以使用连接池来复用连接,减少创建和销毁连接的开销。 背压(Backpressure):在处理大量并发请求时,背压是一种重要的机制,用于防止生产者发送数据的速度超过消费者处理的速度。 错误处理:确保你的异步代码能够妥善处理错误,例如使用 Result 类型和 ? 操作符来传播错误。 超时和重试策略:设置合理的超时时间,并根据需要实现重试逻辑,以确保数据的可靠传输。 使用消息队列:在处理大量并发请求时,可以使用消息队列来缓冲请求,然后异步地处理它们。 并发控制:使用 Rust 的并发原语,如 Mutex、RwLock 或 Arc,来安全地在多个线程或任务之间共享数据。 性能监控和优化:使用性能监控工具来分析你的异步代码,并根据需要进行优化。 使用第三方库:利用 Rust 生态系统中的第三方库,如 hyper 用于 HTTP 客户端和服务端的开发,serde 用于序列化和反序列化数据等。
    14. 网络协议的字节数据有特殊要求,那么在Rust网络编程中,有哪些最佳实践
    15. 《Rust实战》书友互动第七集:文件与存储 11/4197 嵌入式系统 2024-05-30
      qinyunti 发表于 2024-5-27 23:10 主要是出于可移植性考虑,同时Path提供方法给用户直接使用比直接处理字符串意图更明显方便阅读,也避免手 ...
      感觉书里边不是很详细,我试着用ai了一下: Rust 中使用 Path 而不是直接处理字符串的原因有几个: 类型安全:Path 是一个结构体,它提供了一个抽象层,用于表示文件系统的路径。这使得 Rust 编译器可以在编译时检查路径的合法性,而不是在运行时。通过使用 Path,Rust 可以确保路径是有效的,并且避免了一些常见的错误,比如路径遍历攻击。 跨平台兼容性:不同的操作系统有不同的文件系统路径表示方法。例如,Windows 使用反斜杠 \ 作为路径分隔符,而 Unix-like 系统使用正斜杠 /。Path 抽象允许 Rust 程序在不同的平台上透明地处理路径,而不需要编写特定于平台的代码。 功能丰富:Path 提供了多种方法来操作和查询路径,比如 join(连接路径)、parent(获取父目录)、extension(获取文件扩展名)等。这些方法使得路径操作更加直观和方便。 编码处理:在处理文件路径时,路径中的字符可能包含特殊字符或非ASCII字符。Path 可以处理这些情况,确保路径在不同环境中正确地被解释和使用。 性能:虽然字符串也可以表示路径,但是直接使用字符串可能会导致额外的字符串操作和转换,这可能会影响性能。Path 作为专门用于路径的结构体,可以优化内部表示,从而提高性能。 语义清晰:使用 Path 可以使得代码更加清晰,因为它明确表示了这是一个文件系统路径,而不是一般的字符串。这有助于提高代码的可读性和可维护性。 总的来说,Path 在 Rust 中提供了一个类型安全、功能丰富、跨平台的抽象,用于处理文件系统路径,这使得 Rust 程序更加健壮和易于维护。
    16. 《Rust实战》书友互动第七集:文件与存储 11/4197 嵌入式系统 2024-05-27
      为什么Rust使用Path,而不是直接处理字符串?
    17. damiaa 发表于 2024-5-27 09:10 看到esp32 idf 5.31里面都有rust了。不知道能不能用了。
      学起来
    18. yangjiaxu 发表于 2024-5-23 10:29 问: rust最优越感的就是针对内存的处理了,可以说是确保了内存的安全性和线程安全性,那么rust与C语言 ...
      在 C 语言中,需要手动管理内存,容易导致内存泄漏、野指针、缓冲区溢出等问题。而在rust中因为存在生命周期和所有权会在大括号结束的时候自动回收
    19. IC爬虫 发表于 2024-5-23 10:28 哪位大佬总结一下Rust管理内存有哪些方式?
      主要通过所有权、借用、生命周期等机制来实现。所有权机制确保在程序中只有一个所有者可以拥有并修改数据,避免了出现多个指针同时访问和修改同一块内存的情况,从而避免了常见的内存安全问题,例如空指针解引用、野指针等。生命周期用于描述某个引用的有效期,在编译时检查引用是否合法。生命周期的存在使得 Rust 能够在编译阶段就能够发现潜在的内存安全问题,并防止出现空指针解引用等问题。还有就是跟C++一样的RAII机制
    20. 智能指针和其他编程语言的指针有何不同呢?

最近访客

< 1/1 >

统计信息

已有36人来访过

  • 芯积分:186
  • 好友:--
  • 主题:16
  • 回复:44

留言

你需要登录后才可以留言 登录 | 注册


现在还没有留言