Coder Social home page Coder Social logo

laihb1106205841 / sustech-cs205-cpp-programing Goto Github PK

View Code? Open in Web Editor NEW
2.0 0.0 0.0 132.93 MB

My learning in CPP

Home Page: https://laihb1106205841.github.io/SUSTech-CS205-CPP-programing/

License: Apache License 2.0

C 47.84% Java 4.36% C++ 16.32% Cuda 31.48%
c cpp cuda sustech sustech-course-code

sustech-cs205-cpp-programing's Introduction

SUSTech-CS205-CPP-programing 2024 Spring

Haibin Lai 12211612

Lecturer: Prof. Shiqi Yu

Project Name Description Important Point Classification Score
1 A Simple Calculator "简单"的计算器 C程序初步了解,基本数据结构的实现,数据的底层存储,内存管理 basic idea 97
2 Simple Matrix Multiplication C和Java的区别 C是如何编译与运行的,计算机底层是怎么样的 understanding the system 99
3 Improved Matrix Multiplication in C 矩阵乘法探究 怎么样根据系统优化程序,常见的C优化技术,如循环展开、矩阵重排、分块、SIMD与OpenMP并行技术 boosting in the system 98
4 A Class to Describe a Matrix 矩阵类的设计 工程C++是怎么样的,如何设计一个系统,如何管理系统中的各个模块 design in the system 98
5 GPU Acceleration with CUDA CUDA编程 GPU是什么,加速计算意味着什么,下一代计算机体系结构会是怎么样 的 application in system 96

什么是于++?

这个问题困扰了很多计系学生。一个简单的“Yu”字,意味着给分不确定,不理解,高难度。这门课令许多人谈虎色变,以至于我上学期末跟导师谈起,这学期我想选C/C++时,导师大惊:“万分小心!听说那门课工作量很多!”。然而,我是一个喜欢Project的人,我也不喜欢听别人说啥就是啥,5个Project驱使着我加入到了这学期的100个倒霉蛋里。但是在三次Project结束后,突然有一天我在想,这5个Project到底意味着什么?我为什么要做这5个Project?

Project1是从计算器这类基础运算开始的。在以往的Java,Python里,我们大多时候不是很关注数据类型,比如float和double,亦或者这些语言都有很好的数据类封装及api。在实现Project1的时候,指针、栈、正则表达式开始引起我们注意。Project1是想告诉我们,C/C++关注于底层,它是比Java颗粒度更小、更精细化的语言。在这门语言上设计一个小系统,才能体验到精细化的感觉。

Project2是Java和C的比较。我们在过去的优化里大多只是关注算法层面的优化,比如剪枝、更好地局部搜索。但是,我们的代码是如何执行的,C为什么快于Java,似乎研究的同学更少。Project2是想告诉我们,C/C++的精细化与对底层的接近,使得它的程序性能更高,有更多的优化方向。同时,计算机软硬件构成的复杂系统让C/C++执行情况更复杂,执行时不能一概而论。

Project3是优化浮点数矩阵乘法。在了解到C/C++的高性能后,我们开始实践技术。我们复习并运用了SIMD,OpenMP。但是我们惊讶的发现,OpenBLAS是个强劲的对手。突然,我们的toy程序被一个精密优化的复杂系统所折服。Project3是想告诉我们,作为一门精细的语言,无数程序员用C/C++对程序做了系统性的优化,我们在学习优化同时,也要明白这门语言所创造的系统工程。 Project4是矩阵类的设计。在这里,我们会参考cv::Mat,学习构建一个大型工程内的一个类。跟之前的底层和优化相比,这回特性和系统占据了主导。封装管理、内存泄露、软copy、运算符重载开始运用。Project4可能是想告诉我们,如何开发一个系统,如何用C/C++搭建系统,如何管理好系统。

Project5往年Project是神经网络,今年我们与时俱进,来到了CUDA的探索。这两年CUDA与GPU的活跃,让我们看到C/C++在这方面的大放异彩,我们在这次Project中探讨了目前学界在GPU中的应用与探索,描述了一部分NVIDIA在GPU技术中的迭代。我们可以看到,C/C++是一门古老、但至今仍活跃在工业界的语言,它的基础造就了当今各种应用的顺畅运行,让再高大上的机器学习、网络通信、生成式人工智能都能成熟落地,飞入我们每一个寻常百姓家。

C/C++的Project是变化的,每年计算器、矩阵、神经网络都会轮着来。但是其核心,想必我们从上面的描述中已经发现了,“优化——系统——应用”是我们学习这门底层语言的流程。这是它的特性决定的。因此,单纯地掌握C/C++语法,其实根本没有入门。这就像二战时期日本的“知美派”,知道美国有几艘航空母舰、多少飞机并不能打败美国;了解美国人的出击战术、航母部署方式、思考方式,才能真正击败对手(说的就是你,山本五十六)。

Project不是卷起来的,而是学到了的。知道了它真正的意图,我们才能像头号玩家里的主角,破解“于”的奥秘,发现游戏里的彩蛋,找到属于自己的知识与财富。

CPP Course Website

https://github.com/ShiqiYu/CPP

Project 4 Website

https://laihb1106205841.github.io/GpuMat.github.io/

sustech-cs205-cpp-programing's People

Contributors

laihb1106205841 avatar

Stargazers

GB avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.