Reply to post: Re: well done

Linus Torvalds pulls pin, tosses in grenade: x86 won, forget about Arm in server CPUs, says Linux kernel supremo

StargateSg7

Re: well done

Now of course, WHY this type of programming is such a big deal in teh Intel vs ARM sphere, is that it REALLY SHOULD NOT MATTER which CPU, GPU or DSP you develop for!

Your KEY ISSUE always SHOULD BE --- What does my software and hardware actually do and WHY do I need to put my specific software on a specific chip?

The questions to ask:

1) Does my application require so much processing that I MUST USE a desktop class or server class CPU?

2) Is my application sensitive to local power consumption level?

- i.e. am I running this application on machines or in geographic locations where local power availability is an issue?

3) Does my Application require uptime on a 24/7/365 basis (i.e. Six Sigma 99.9999% uptime performance)

- this is typical for places like large industrial plants, Hospitals and other emergency services where downtime could cause injury, death or severe damage to connected systems OR cause untold financial losses if the application is unavailable for full-on use!

4) Is there a physical limitation where my application MUST run on a device that is small in actual size and thus requires lower power usage, lower continuous uptime, intermittent operation or smaller amounts of data transfer/usage?

5) Is my application considered a Critical System (i.e. life and death type of system) or is it more consumer or low-intensity use?

When you answer THOSE points above, your source code SHOULD be able to made flexible enough to SCALE UP or SCALE DOWN (i.e. in terms of using more or less of available cores and local processing speed) ......AND..... SCALE-OUT or SCALE-IN (i.e. in terms of using MORE OR LESS numbers of network nodes, entire single o multiple CPU'S, GPU's and DSP's)

This means YOU NEED TO BE AWARE OF whether or not your application can use or even NEEDS to use single or multiple threads AND/OR single or multiple cores, or multiple CPU's, GPU's, DSP's and networks thereof!

If you're doing mobile gaming, I highly doubt you need to render graphics for 4K/8K video display when 2.7K or even 1080p is good enough! However, If you're doing 10,000 file renders of multi-resolution videos for a broadcaster then your app probably needs to be multithread AND multi-core AND multi-network-node capable for it's video file processing!

THOSE application specification WILL determine your final chips and processing sub-system you need to output for. Now it should be said, that YOUR CODE ALWAYS should have two-modes of ability!

a) Be able to SCALE-UP and SCALE-DOWN available LOCALLY AVAILABLE processor speeds and threads.

b) Be able to be SINGLE SYSTEM USE and MULTI-CORE, MULTI-CPU, MULTI-NETWORK NODE capable.

This means for the IMPORTANT parts of your applications which almost ALWAYS include text or file search and data access speeds AND actual data processing (i.e. combine, reduce, render, add, subtract and otehr types of actual data manipulation) that can FIT WITHIN (stretch-out and shrink-in) to the available computing horsepower.

You need to then make your IMPORTANT FUNCTIONS be able to decide HOW to operate depending upon the available horsepower and connectivity that is detected.

Example:

Procedure Process_My_Data( Var My_Data: My_Array_Type );

Begin

Try

Case GLOBAL_HORSEPOWER_FLAG of

LOW_HORSEPOWER_USAGE : Process_Using_Local_Core_Only;

SMALL_NUMBER_OF_USERS : Use_Multi_Thread_System;

MEDIUM_SIZE_GROUP : Use_Multiple_Cores;

LOTS_OF_AVAILABLE_POWER : Use_Network_Node_Processing;

TURN_KNOB_TO_11_HORSEPOWER : Give_It_Everything_You_Got_Captain;

End;

Except

Show_Error_For_Cannot_Process_Data_At_This_Time;

End;

End;

As noted above, ALL my important routines have PROCESSING HORSEPOWER FLAGS which specifically get used ONLY when the specified amount or range of processing ability is detected.

So you NEED to talk to your end-users and DEFINE specific thresholds which form HARD AND FAST boundaries as to when, where and HOW your data is to be processing depending upon how much available processing power is available locally AND/OR globally!

.

The technical term for this is call "Systems Analysis":

1) What do your customers and end-users NEED TO DO AT A MINIMUM in order to get their goods and/or services delivered quickly?

2) How can we reduce the number of steps to get those goods and services delivered quickly?

3) What EXTERNAL factors (i.e. government regulations and 3rd party intermediaries or suppliers) will cause the process to slow down and/or stop completely for that end goal of quick delivery?

4) How can my application system INCLUDE those parties so I can speed up my final goal of quick delivery?

5) What is the speediest and/or most cost-effective hardware system my application can run on which will HELP ME delivery my goods and services quickly?

.

Answer those five questions and your application will be written and deployed a heck of a lot quicker!

.

POST COMMENT House rules

Not a member of The Register? Create a new account here.

  • Enter your comment

  • Add an icon

Anonymous cowards cannot choose their icon