Compulsory Part C question of 2nd Internals

Note : The answers below are best of my knowledge , any corrections or suggestions please feel free to Comment below in Comment Session ! Thank you 

Questions :

-> Implementable Ideas in computer Graphics 


-> Transportation problem for multiple Objectives

-> Smart Compiler 


-> QoS In Mobile Adhoc

-> Cyclic trends help enterpreneurs in setting up their business ideas 


-> Not Given ( No expectations also :(  )

1) Compiler Design : 

Topic: Smart Compiler 

[ Copy Right Material : written by Ian Eslick, Thomas Knight, John Mallery

This topic was supported by the advanced Research Project Agency Under Contract no: N00014-91-J-1698 ]

Introduction :

  • We see considerable promise in a truly ``smart'' compiler. By ``smart'' we refer to an adaptive compiler which acquires feedback from the dynamics of program execution and uses this information to tune the compiled code to minimize execution latency.
  • Ultimately, we see the compiler learning the best way to transform and schedule code based on observed run-time behavior.
  • Such a compiler promises to significantly raise the abstraction level at which compiler writers do compiler development and to automate much of the drudgery associated with developing compiler optimizations.
  •  The greatest benefits from such a compiler will be in realm of compilation for parallel and distributed computing where the transform and optimization space is huge and conventional compiler technology is in its infancy

Operating Scenario

The conventional compilation paradigm has us:
  • run programs through a compiler to produce an executable image.
  • take the output executable, which remains fixed until we ask the compiler to recompile our source program, and run the executable on our computers.
If the performance is unacceptable, the programmer goes back to the source and rewrites the program and/or compiles the program with different compiler options.

The clever and performance savvy programmer may run profiling tools to identify where his effort is best spent optimizing the program.

In a similar manner, the compiler author is also writing a program. He writes a program to perform a set of transforms on any source code to produce an executable. He must decide which set of transforms on the source code produce the most efficient executables. Since his input space of programs is huge and often suggest incompatible transforms to produce optimal codes in all cases, he relies on accepted suites of benchmarks to judge the efficiency of his transforms.

Drawbacks of Current Compilers :
  1. The compilation process has no information about the use of the program. The compiler, thus, has limited information about how to most efficiently transform the program because it does not know how the program is commonly used.
  2. The current practice for incorporating some information about the use of a program is to manually rewrite the source code in a way that, when transformed by the compiler, results in more efficient code. This is ad hoc at best since it attempts to convey usage information through program structure. Further, it depends on the programmer's understanding of how the compiler transforms code and how the machine operates on the resulting executable.
  3. Program usage may vary widely among installations, users, and programmers. Everyone must generally use one executable which, at best, was optimized for some theoretically ``typical'' usage pattern.

Instead of this conventional view, we envision a compiler which continually monitors dynamic program execution and tunes and recompiles the executable code based on this run-time feedback
Based on the time costs of operations in the execution environment and on the usage patterns, the program is recompiled to achieve shorter execution time. The compiler directs a search among the large space of potential program transforms and compositions of transforms to identify the most efficient way to execute a given program on a particular system for a given usage pattern.

The optimization target, minimal execution latency, is well defined. Throughout a program's lifetime, the compiler can continue to streamline the program's execution.

Benefits of Smart Compiler :

By allowing the compiler to collect and reason about feedback from run-time dynamics, we empower the compiler to make educated decisions about which transforms are most effective in which settings.

 The compiler can test out each code transform with the datasets of interest and determine the actual execution times of the transformed code.

 Dynamic execution data allows the compiler to intelligently restructure the program for minimum latency along the execution paths most frequently used.

 The compiler, now, takes over the role of deciding which transforms to apply to a source program in order to achieve maximum efficiency. Rather than the compiler and program each being separately optimized for good average case performance across one dataset and remaining static,

the compilation transforms and compiled code can fully adapt to the input program and dynamic usage pattern. The end result is higher performance for an end-user's application on the user's machine and the user's dataset.

Conclusion / Acceptance

We may encounter a number of social impediments to general acceptance to the smart compiler scheme:

  • The smart compiler model does away with the traditional view of compiled code as a static entity. While this distinction will be largely invisible to the end-user, vendors and programmers may be uncomfortable with the notion that the executable code evolves in the hands of end users.
  • The executable in this model does not live entirely in a vacuum. Rather, it is always part of a compilation environment which maintains a database of programs and their dynamic behavior. With a reasonable operating environment in place, executables, compiler, and database can interact seamlessly behind the back of the end user. Unfortunately, conventional operating systems are not properly designed to allow such smooth integration of the compiler environment.
  • Properly done, the smart compiler can remove superficial, architectural barriers between machines. The compiler has the ability to re-adapt code for the architecture in use. Rather than locking the end user in to a particular ISA, the user is freed to migrate to the machine which currently exhibits the best performance on his application.


-> Implementable Ideas in computer Graphics 

Note : Below topics are in short explained google for more info on those awesome Ideas which can be implemented in real time 

1. Raytracer
This is a rendering technique which can be implemented using CPU only. This project will give you insights into algorithms which are used in a graphics program. You can render some spheres in 3D along with some light sources to start with. There is no limit to enhancements which you can make in the project. Find out more about it here.
2. A small game
You can also develop a game like tetris or blasterball. And if you are a little more ambitious, you can go for a side-scrolling game like Mario. In this project, you will have to deal with game development techniques other than graphics like collision detection, gameplay, design, etc.
3. Real time renderer
If you want to focus only on graphics programming on GPU, you can go for this option. You would need to get comfortable with one of the two APIs (OpenGL and Direct3D). Insert fancy objects into the scene, insert lights, animate them, do all kind of fancy stuff.

 4) Probabilistic Programming the Future of Computer Graphics
Computer scientists are currently hard at work on so-called probabilistic programming languages, in which machine learning techniques are applied to the process of coding itself (graphics, specifically)
Click here for more info 

5)"If eyes are the window to the soul, then the face surely is the front door"
Reproduce human faces digitally and to produce creatures with human emotions that play across their faces Click here for more info


1- Interactive Astronomy Using 3D Computer Graphics

Understanding spherical astronomy requires good spatial visualization. Un- fortunately, it is very hard to make good three dimensional (3D) illustrations and many illustrations from standard textbooks are in fact incorrect. There are many programs that can be used to create illustrations, but in this re-
port we have focused on TEX-friendly, free programs. We have compared MetaPost, PSTricks, Asymptote and Sketch by creating a series of illustrations related to the problem of why sundials sometimes go backwards in the tropics
 Advantages of programmatic drawing pro-grams There are many advantages of using programmatic drawing programs. Firstly, recycling and portability.  For instance, to change the point of view, we just have to change a few parameters in the code, as opposed to drawing a new diagram from scratch.
Secondly, programmatic drawing programs are de nitely more accurate than drawing by hand or using ordinary graphical tools like MS Paint. This is vital to produce accurate diagrams for books and other printed publications. More info click here


-> How to Maintain QOS in mobile ADHOC network
Mobile Ad-hoc NETworks (MANETs) are multi-hop ad-hoc wireless networks in which there are no backbone infrastructure. Each Mobile Node (MN) acts either as a host generating flows or being the destination of flows from other MN or as a router forwarding flows directed to other MN. Due to the unpredictable location and mobility of MNs in MANETs, classical routing protocols used on wired networks are not suitable for MANETs. Protocols defined for ad hoc networks are classified as reactive protocols and proactive protocols.

For obtaining QoS (Quality of Service) on a MANET, it is not sufficient to provide a basic routing functionality. Other aspects should also be taken into consideration such as bandwidth constraints due generally to a shared media, dynamic topology since MNs are mobile and the topology may change and power consumption due to limited batteries.
For wired networks there are two approaches to obtain QoS: an over-provisioning and network traffic engineering. Over-provisioning consists of the network operator offering a huge amount of resources such that the network can accommodate all the demanding applications. Instead, network traffic engineering classifies ongoing connections and treats them according to a set of established rules. Two proposals belonging to this class has been done inside the IETF: Integrated Services (IntServ) and Differentiated Services (DiffServ).
IntServ is a reservation-oriented method where users request for the QoS parameters they need. The Resource reSerVation Protocol (RSVP) has been proposed by IETF to setup resource reservations for IntServ. Opposite to IntServ, DiffServ is a reservation-less method. Using DiffServ, service providers offer a set of differentiated classes of QoS to their customers to support various types of applications. IPv4 TOS octet or the IPv6 Traffic Class octet is used to mark a packet to receive a particular QoS class.
In general, the specific aspects of MANETS make the wire-based QoS models not appropriate for MANETs. Over-provisioning, for instance, may not be possible because resources are scarce. IntServ/RSVP may require unaffordable storage and processing for MNs, and signaling overhead. Diffserv on the other hand, is a lightweight overhead model that may be more suitable for MANETs. However, Diffserv organization in customers and service providers does not fit the distributed nature of MANETs. These have motivated numerous QoS proposals targeted to MANETs.

Question :how does Cyclic trends help entrepreneurs in setting up their business ideas

Chasing trends can be disastrous in business. It's kind of like timing in the stock market. If you're not in at the bottom, you might, say, buy a lot of trendy inventory at high price points, only to unload it at a discount. And, as you know, buying high, then selling low is a quick way to get run out of business.
There are some instances, however, in which tapping into trends can be very profitable, especially if you are in an industry or category like fashion, entertainment or food where eventually, what was old becomes new again.

You can get an idea of how these demand cycles are created by looking at how large companies reposition and repurpose what many of us would consider old stock or old brands. Take for example, Pabst Blue Ribbon beer being marketed to young hipsters or Nike Air Jordan shoes repositioned for a generation born after Michael Jordan ruled the court.

It's important to know what you need in place to ride the wave of a cyclical trend to make it profitable for you.
Some of advantage of cyclical trends:
  1. The trend is in line with the core of your business. This may seem obvious, but you'd be surprised how many companies will jump categories or engage in diversification -- what I like to call "di-worse-ification" -- to chase dollars that simply aren't there. In Shiner's case, the company had experience in the market and knew what buyers would want and need to be part of the trend.
  2. Keep costs low and margins high. This is the opposite of buying high and selling low, and allows for great profit margins.

    This is especially true when there is exclusivity and a high demand for products or services. Think: special edition Air Jordans.

    Being able to source products or offer services from a low cost base will allow you to ride the trend profitably so you can position yourself to reinvest profits or continue to profit even after prices start declining, signaling the end of the cycle.

    For Shiner, this meant that a 10 percent increase in sales had the potential to double their profits for the year.
  3. Know up-front it won't last forever. All trends come to an end. Be prepared with an eye on additional opportunities or offerings that may appeal to your customer base. For example, this could be premium coffees and specialty coffees for the trendy doughnut shop. It could be hookah or electronic cigarettes for the trendy cigar shop.

    To steal a phrase: Get in. Get out. Don't linger. There's no upside to the downside of a cyclical trend, unless you are buying up excess inventory for pennies on the dollar that you can flip to dollars in a secondary market.
Bottom-line: Don't go running after every shiny object you see as the next big thing. Instead, get to know your industry, its history, and what could be repurposed or repositioned to catch or create the next cycle of interest.

Next Post »

Please Leave ur Valuable comments Here ConversionConversion EmoticonEmoticon


HTML Comment Box is loading comments...

Our Partners

Our Partners