As you would with any other IDE. Either with DirectX or OpenGL.I use OpenGL so like this:// in gl.hpp#ifndef GLFILE#define GLFILE//#define GLEW_STATIC#include
Just imagine that you’re in a weaver factory and need to make some fabrics or carpets.Thread: Each CUDA thread runs a copy of your CUDA kernel on CUDA pipeline. It’s like each fiber passing through a weaver machine but it passes C++ instructions into GPU instead of a fiber.Maximum allowed CUDA kernel length is: 512 million instructions.Block: a group of CUDA threads that share resources of a SM. There are 1D blocks, 2D blocks and 3D blocks. Its like a single carpet’s material waiting to be weaved.Grid: a group of blocks. Launching a CUDA kernel means launching a grid of blocks. There are 1D grids, 2D grids and 3D grids. Similar to a job given to a weaver factory. “Produce 35 carpets”. You’ll need a lot of threads.Warp: smallest group of CUDA threads that act in lockstep fashion. They must act in parallel, to efficiently use the digital machinery inside SM.CTA: “cooperative thread array” is a PTX point of view of a “CUDA block”. They cooperate to make an algorithm product, similar to parallel fibers in weaver factory.SM: streaming multiprocessors are the controllers of compute resources such as CUDA pipelines, special function units, caches and other things. They make CUDA threads scheduled with good efficiency, ofcourse when developer chooses to let it do its job by writing optimized code. It is comparable to a weaving machine and its operators(schedulers).Then a GPU is like a weaving factory with many SM units:CPU’s threads run on more general-purpose hardware that can get more complex and branching jobs done but with less throughput:
I will give my best tips on what I think is important for a laptop.Long battery lifeThis is in my opinion the single most important part of a laptop. When you want to work flexibly, the last thing you need is having to look for somewhere to plug in your computer. Look for something that will cover roughly a work day. At the very least 6 hours, but try to get more if you can afford it.Decent screenGo to a store to actually look at different screen sizes and resolutions. You will be spending an awful lot of time watching it so you'd best go for something comfortable for your eyes.Size and weightAre you going to be bringing your computer with you a lot? If so, look for something smaller and lighter. It might be worth getting a 13" laptop if you will be on the fly most of the time. If you will remain mostly stationary a 15" or 17" will serve you better.Comfortable keyboardAs with the screen, go to a store and do some test typing! If you're going for a bigger size laptop consider getting one with a numpad.OS that doesn't get in your wayObviously depending on what kind of programming you will be doing. If you're used to OS X, then get a Mac, since you can run both Windows and Linux under it. The idea is to avoid any distraction to the task at hand, which is creating beautiful programs!RecommendationsIf you can afford it: Macbook Pro or ASUS Zenbook. Doesn't have to be the newest or most expensive models though.If you're on a budget: Shop around for a used business laptop. HP Elitebook or Lenovo Thinkpad are solid choices and you get a lot of bang for your bucks. Just make sure the battery is alright before buying one though, as replacements are not cheap.As you can see, unless you do really computing or graphics intensive tasks, the most important aspect of a programming laptop is not performance, but rather how it lets you get work done in the most efficient manner.
The grid system is definitely the most efficient way to layout a city. A regular street grid brings many advantages:Predictable and regular lot shapes and sizes; easy to build and rebuild Easy navigation, especially for those new to the city Redundancy: if one street is blocked, traffic can easily reroute to the next street over) Flexibility: it's easy to add or subtract a length of street in the existing grid without affecting the overall organizationAnd indeed, given a random start and end point, an evenly-distributed grid is the most efficient layout to get you from point A to B. If you had a 'hypotenuse' street providing a straight path for every conceivable A-to-B trip, there would be streets everywhere and no room for anything else! This map shows the difference in travel efficiency between a grid and non-grid layout.Of course some city grids do have major boulevards at angles cutting through the grid, which are useful in providing that 'hypotenuse' shortcut for especially well-traveled routes. Manhattan's Broadway is a great example of this:It's also important to note that urban grids don't have to be rectilinear to be effective — as long as the grid follows a logical and consistent organization, it will provide these same advantages. Here is the city grid of Black Rock City, the temporary city where the Burning Man festival is held every year. BRC's grid uses a circular arrangement based on the times on a clock face, making it easy to orient oneself based on the massive Man statue in the center, no matter where you are in the city.
First, let us define the basics: “thread” and “warp”.Thread: from a software standpoint a thread is a computation that can be paused and resumed. In principle a thread does not need to have any reflection on the hardware (i.e. one can have threads on a single core CPU). A hardware design can support fast pause and resume of threads by allowing several sets of working registers, one per thread that the scheduler is going to keep in flight. When we talk about the number of GPU threads we mean the maximum number of working registers sets each execution unit provides multiplied by the number of execution units.Warp: is a set of threads that all share the same code, follow the same execution path with minimal divergences and are expected to stall at the same places. A hardware design can exploit the commonality of the threads belonging to a swarp by combining their memory accesses and assuming that it is fine to pause and resume all the threads at the same time, rather than deciding on a per-thread basis.A warp execution unit often provides a local memory accessible by all the threads belonging to the warp, which is something required by OpenCL and CUDA. A disadvantage of scheduling in a “warp” fashion is that when different threads want to take different code paths one should expect an underutilization of the hardware resources. For the sake of concretion I am not going to explain possible strategies that hardware designers can use for dealing with a diversion.With those two concepts clear we can say that a “block” is a set of computations that fits on a “warp” and a “grid” is a set of computations that is split in “blocks”. We consider a hierarchical partition of compute workloads because that abstraction is useful when designing hardware: a GPU gets a grid of computations and schedules its blocks on warp-capable execution units.AMD seems to prefer the “wavefront” term for “warp”. And finally, to further add to your confusion you may come across at least two other terms: “work item” and “work group”. They are the OpenCL terms for thread and warp. I personally like that naming because it avoids the use of “thread” that, as I mentioned, it can be ambiguously understood as either the software concept of logical thread or as a set of registers for fast context switching between logical threads.
If you are going to use a software and going to draw a floor plan on PC, no scale is required. On PC we always draw on 1: 1 scale. On screen you reduce the total drawing by zooming in and out. However the drawing is drawn with scale 1:1.Earlier it was necessary to make drawings to scale during the pre-PC days. But now it is not necessary.The question is of printing the drawing on paper. Suppose your floor plan is of dimensions 10000 mm X 6500 mm. (32’ 9” X 21’4”)A4 size paper measures 297 mm x 200 mmBy providing proper margins paper available for printing is of 275 mm X 170 mm.If you use a scale of 1:40 the drawing can be plotted on area 250 mm x 162.5 mmIf you want a bigger drawing you use size A3. (400 mm x 297 mm)Now we can use a larger scale say 1:30 and the plot area will be 333.33 mm X 216.66 mm.Fit to scale command is also available.Drawing by handIf you want to draw by hand, you will have to use a scale.You will have to choose a scale considering the paper size available. (The above example will give you an idea how to choose the scale.) All dimensions will have to be converted by dividing each dimension by the scale.Architectural scales are available where the above divisions are not necessary. You can measure dimensions directly on the scale. You will to choose the scale available from the box. These scales will be available only in steps like 1:2, 1:4, 1:8 etc.In metric system the steps will be 1:2, 1:2.5, 1:5, 1:10 etc.However in PC you are drawing to scale 1:1 only and for printing you can use any scale. Scales like 1:3, 1:93 and 1:4.8 also are possible.Author provides floor plan services to architects, realtors in France , Germany , Europe